本次以windows下单机不同端口为例,多个服务器情况类似。
1、若已经有一个mysql服务器了,可以直接将当前mysql直接复制出一个,然后重命名,如下图:
2、修改主服务器配置文件my.ini。
3、修改复制后的从服务器my.ini 配置文件,下图片红框为mysql基础配置,蓝框为从服务器进行同步的配置。
4、主服务器创建用于同步的账户,也可以使用已有的账户,并获取主服务器中此时的位置。
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
FLUSH PRIVILEGES;
show master status;
5、从服务器同步设置
先停止同步
STOP SLAVE;
修改从服务器执行主服务器,执行上一步中的位置
CHANGE MASTER TO
master_host = 'localhost',
master_port = 3306
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'mysql-bin.000002',
master_log_pos = 924;
启动同步
START SLAVE;
查看从服务器同步状态 show slave status; 如下图中红框所示两个参数都为Yes则设置成功,若不是Yes检查err日志。
6、配置过程中的问题
Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593
因为mysql服务器是原来复制出来的,虽然修改了my.ini中的server_id,但是原有的uuid已经存在了导致主从的uuid相同。
解决方法:先停止mysql从服务器,将mysql从服务器目录下data/auto.cnf 文件重命名或者删除,然后重新启动从服务器即可。
#如果之前此从库已有主库指向 需要先执行以下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;