?
master_log_file='binlog。000004',
?
这时候,我们可以在从机上面执行show processlist来查询从服务器的进程状态
?
mysql> show processlist \G
*************************** 1. row ***************************
Id: 4
User: root
Host: localhost:60968
db: information_schema
Command: Sleep
Time: 3613
State:
Info: NULL
*************************** 2. row ***************************
Id: 5
User: system user
Host:
db: NULL
Command: Connect
Time: 3613
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 6
User: system user
Host:
db: NULL
Command: Connect
Time: 2769
State: Slave has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
*************************** 4. row ***************************
Id: 7
User: root
Host: localhost:61007
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
4 rows in set (0.04 sec)
?
结果表明slave已经连接上master,开始接收并执行日志
relay-log.info文件里面的内容.\Steven-PC-relay-bin.000002 250 binlog.000005 107 7
relay-log.info文件里面记录了slave端的relaylog的当前文件名和位置,还有master端的binlog文件名和位置

Windows环境下主从复制测试
1、在master端的mysql环境下,执行下面命令
?
use test; create table rep_test(data integer); insert into rep_test values(2);
?
2、在slave端的mysql环境下,查看主机刚才添加的表和数据是否成功同步到从机上use test; show tables; select * FROM REP_TEST;


测试表明,数据已经成功地同步到slave上,实验中只是用到了主从同步,在实际生产环境中MYSQL架构可能会用到一主多从的架构
MYSQL主要复制启动选项
(1)log-slave-updates
log-slave-updates这个参数主要用来配置从服务器的更新是否写入二进制日志,该选项默认是不打开的,如果这个
从服务器同时也作为其他服务器的主服务器,搭建一个链式的复制,那么就需要开启这个选项,这样从服务器才能获取他
的二进制日志进行同步操作
(2)master-connect-retry
master-connect-retry这个参数用来设置和主服务器连接丢失的时候进行重试的时间间隔,默认是60秒
(3)read-only
read-only是用来限制普通用户对从数据库的更新操作,以确保从数据库的安全性,不过如果是超级用户依然可以对
从数据库进行更新操作。如果主数据库创建了一个普通用户,在默认情况下,该用户是可以更新从数据库的数据的,如果
使用read-only选项启动从数据库以后,用户对从数据库进行更新时会提示错误
在Linux下启动mysql例子
?
[root@localhost~]#mysqld_safe -read-only
?
(4)slave-skip-errors
在复制过程中,从服务器可以会执行BINLOG中的错误SQL语句,此时如果不忽略错误,从服务器会停止复制进程,等待用户处理错误。
这种错误如果不能及时发现,将会对应用或者备份产生影响。slave-skip-errors的作用就是用来定义复制过程中从服务器可以自动
跳过的错误号,设置该参数后,mysql会自动跳过所配置的一系列错误,直接执行后面的SQL语句,该参数可以定义多个错误号,如果
设置成all,则表示跳过所有的错误,在my.ini或者my.cnf里配置如下
?
slave-skip-errors=1007,1051,1062
?
如果从数据库主要作为主库的备份,那么就不应该使用这个启动参数,因为一旦设置不当很可能造成主从库的数据不同步。
如果从库仅仅是为了分担主库的查询压力,并且对数据的完整性要求不高,那么这个选项可以减轻DBA维护从库的工作量
查看slave的复制进度
很多情况下,用户都想知道从服务器复制的进度,从而判断从服务器上复制数据的完整性,同时判断是否需要手工来做
主从同步工作。
事实上,用户可以通过show processlist列表中的Slave_SQL_Running线程的Time值得到,他记录了从服务器当前执行的SQL时间戳
和系统时间之间的差距,例如下面的例子
?
Id: 6
User: system user
Host:
db: NULL
Command: Connect
Time: 2769
State: Slave has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
?
Time时间说明从服务器最后执行的更新操作大概是主服务器2769秒前的更新操作
日常管理和维护
复制配置完成后,DBA需要进行日常的监控和管理维护工作,以便能够及时发现问题和解决问题
以保证主从数据库能够正常工作。
1、了解服务器的状态
一般使用show slave status命令来检查从服务器
在查看服务器信息中,首先要查看下面的两个进程是否为YES。
?
Slave_IO_Running: Yes Slave_SQL_Running: Yes
?
Slave_IO_Running表明此进程是否能够由从服务器到主服务器上正确地读取binlog日志,并写入到从服务器的中继日志中
Slave_SQL_Running表明此进程能否读取并执行中继日志中的binlog信息
2、服务器复制出错原因
问题一:出现“log event entry exceeded max_allowed_pack”错误
如果在应用中使用大的BLOB列或CLOB列或者长字符串,那么在从服务器上回复时,可能会出现
“log event entry exce