主从 | 操作系统 | mysql版本 | IP地址 |
主 | win10 | 5.7 | 192.168.1.102 |
从 | win7 | 5.5 | 192.168.1.121 |
2.1 安装目录下找到my.ini文件,在mysqld下添加主服务器配置
server-id=1 #服务器id
log-bin=E:\MySQL Server 5.7\mysql-bin 二进制文件存放路径
binlog-do-db=test1 需要同步的数据库
保存重启mysql。
2.2 授权
2.2.1 连接数据库:mysql -u用户名 -p密码
2.2.2 设置权限:grant replication slave,reload,super on *.* to [email protected] identified by '123456';
ps: 给从服务192.168.1.121添加权限,用户名:root,密码:123456
2.2.3 查看状态:show master status; # 找到File 和 Position 的值记录下来
3.1 在mysql安装目录下找到my.ini文件,在mysqld下添加从服务器端配置:
server-id=2 服务器id
replicate-do-db=test1 需要同步的数据库
3.2 从服务器上首先测试连接主数据库:mysql -h 192.168.1.102 -uroot -p123456
ps:如果连接不上,查看主服务器的防火墙是否关闭。
3.3 连接从服务器:mysql -uroot -p123456
修改对数据库的连接参数:
mysql>change master to master_host='192.168.1.102',master_user='root',master_password='123456', master_log_file='mysql-bin.000002',master_log_pos=18104;(这里输入的mysql-bin.000002和18104请替换为2.2.3中查询出来的值 否则不会同步的)
3.4 启动slave线程:start slave;
3.5 查看slave状态:show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果是这种情况,则表明同步成功!
4.1 在执行完3.4跟3.5的操作后,发现错误:
Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.000002' at 18104, the last event read from './mysql-bin.000002' at 18104, the last byte read from './mysql-bin.000001' at 123.'
解决办法:
这个错误应该是slave为低版本造成的,在主数据库的my.ini中添加binlog_checksum =none。重启mysql
执行show master status;
从服务器重新连接。即可解决该问题!
4.2 在同步之前需要保证两个数据库中的数据一致,因此需要将主服务器的数据库(test1)导出,并在从服务器中导入。
4.2.1 导出:mysqldump -uroot test1 -p123456 >E:\test1.sql
4.2.2 导入:mysql> source E:\test1.sql;