环境
配置Mysql的MasterSlave至少需要两台机器。我这里使用三台虚拟机进行测试。三台机器配置完全一样,MySQL安装的路径也是一样:
第一台:10.1.5.181; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1
第二台:10.1.5.182; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1
第三台:10.1.5.183; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1
第一台10.1.5.181用作master,其他两台用做slave。
配置Master
在10.1.5.181这台服务器上找到MySQL的配置文件my.ini。我的具体路径是在C:\ProgramData\MySQL\MySQL Server 5.6下。
打开配置文件,在最下面添加如下配置:
************************************************************************************
#Master start
#日志输出地址 主要同步使用
log-bin=master-bin.log
#同步数据库
binlog-do-db=test
#主机id 不能和从机id重复
server-id=1
#Master end
************************************************************************************
master的配置比较少,server-id是为这一组master/slave服务器定的唯一id,master/slave服务器中不能重复。在binlog-do-db中填写对象要同步的数据库,如果有多个,用逗号分隔,或再写一行如binlog-do-db=test2。
配置Slave
同样在第二台机器上10.1.5.181找到配置文件my.ini。打开配置文件,在最下面添加如下配置:
*****************************************************************************
report-host = 10.1.5.181
report-user = root
report-password = root123
log-bin = slave-bin.log
replicate-do-db = test
server-id = 2
*****************************************************************************
这里需要添加master的IP,连接master的用户名和密码,生产环境中需要新建一个用户专门来处理replication,这里没有新建用户,用root做测试。端口没有配置,就是使用默认的3306,如果端口有变化,则通过report-port=?来配置。log-bin是记录日志的位置。
然后通过命令start slave来启动mysql的复制功能。如果在start slave过程中出现异常:
The server is not configured as slave; fix in config file or with CHANGE MASTER TO
可以通过下面语句解决:
change master to master_host='10.1.5.181',master_user='root',master_password='root123',master_log_file='master-bin.000001' ,master_log_pos=120;
使用show slave status 命令来查来看运行状态。特别关注两个属性,是否为“Yes”,如果都为“Yes”,则说明运行正常。
Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。
同样的配置再在第三台机器上配置一下,server-id修改成3。重启slave和master的mysqld服务。然后测试,在三台服务器上都确保有数据库test,然后在master服务器的test数据库上建表和数据,之后再两台slave上面都会看见数据的同步。
Mysql的MasterSlave同步时通过二进制文件进行同步的。在Master端,你可以在C:\ProgramData\MySQL\MySQL Server 5.6\data的master-bin.log日志文件里看见所有同步的sql脚本,master-bin.log是配置master时候输入的。在slave端,你可以在MySQL02-relay-bin类似的文件中找到日志。