# 进入 mysql1 容器 docker exec -it mysql1 /bin/bash # 连接mysql服务 mysql -uroot -proot # 授权一个账号 mysql> GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by 'slave'; Query OK, 0 rows affected, 1 warning (0.00 sec)
所以依据上面的演示,我建立两个mysql服务节点:
容器名称
版本
IP
端口
root账号密码
slave账号密码
mysql1(主)
5.7
172.17.0.2
33061->3306
root root
slave slave
mysql2(从)
5.7
172.17.0.3
33062->3306
root root
开始搭建主从复制
查看 mysql1 (master)状态
1 2 3 4 5 6 7
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 893 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
配置 mysql2(slave)的从服务
1 2 3 4
mysql> change master to master_host='172.17.0.2',master_port=3306,master_user='slave',master_password='slave',master_log_file='mysqlbin.000002',master_log_pos=1061;
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
c、接着我查看容器的日志,也看到了同样的错误
1 2 3 4 5 6 7 8 9 10 11 12 13
[root@VM-0-15-centos data]# docker logs -f mysql2 # 得到如下错误信息 2021-02-17T14:53:03.499426Z 7 [ERROR] Slave I/O for channel '': Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file', Error_code: 1236 2021-02-17T14:53:03.499432Z 7 [Note] Slave I/O thread exiting for channel '', read up to log 'mysqlbin.000002', position 1061 # 然后我这样解决 stop slave; reset slave; start slave; # 非常魔幻,两个关键参数都变成了 yes ,都好了 # 查看资料得知,出现这个问题是不正常先重启数据库或者断电
可视化测试
创建数据库,创建表,添加数据,均正常同步
其他问题
1、如何查看 binlog 日志是否开启
1 2 3 4 5 6 7 8 9 10 11
mysql> show global variables like '%log_bin%'; +---------------------------------+--------------------------------+ | Variable_name | Value | +---------------------------------+--------------------------------+ | log_bin | ON | | log_bin_basename | /var/lib/mysql/mysql-bin | | log_bin_index | /var/lib/mysql/mysql-bin.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | +---------------------------------+--------------------------------+ 5 rows in set (0.00 sec)