一、添加两个mysql数据库
一个为master,另外一个为slave
二、配置master
打开master下的my.ini
- 在mysqld下添加以下参数
log-bin=mysql-bin //将mysql二进制日志取名为mysql-bin
binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed
server-id=1 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id
2. 配置slave获取日志的用户
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111';
3.查看主服务器BIN日志的信息(执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变).
注:需要记录File及Position
三、配置从库
- 在mysqld下添加以下参数,若从库不为链式(即,从库不充当其它从库的主库),则只需要配置server-id
log-bin=mysql-bin //将mysql二进制日志取名为mysql-bin
binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed
server-id=2 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id
2. 配置slave
2.1 关闭slave
stop slave;
2.2 配置获取主库的用户及日志信息
change master to master_host="127.0.0.1",master_port=3310,master_user="slave",master_password="slave",master_log_file="mysql-bin.000003",master_log_pos=154;
参数解释:
MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_PORT : 设置要连接的主服务器的端口
MASTER_USER : 设置要连接的主服务器的用户名
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)
2.3 启动从服务器
start slave;
2.4 查看配置是否成功
show slave status;
slave_io_running 及slave_sql_running都为yes,则为成功
四、常见问题
问题1. SLAVE_IO_RUNNING=NO
1 在配置slave同步时因为slave访问master没有权限导致;
2 master上的mysql-bin.xxxxxx文件误删除;
3 数据库是直接复制的,data目录下的auto.cnf文件下的uuid值相同,修改uuit;
4 my.ini文件下的server-id值相同,修改server-id。
问题2. SALVE_IO_RUNNING=connecting
1 网络不通
2 密码不对
3 pos不对
4 端口不对
解决:重新执行以下代码
change master to master_host="127.0.0.1",master_port=3310,master_user="slave",master_password="slave",master_log_file="mysql-bin.000003",master_log_pos=154;