引言
MySQL从3.23版本开始提供复制功能,复制主要是指将主数据库上的DDL、DML操作通过日志(Binary Log)的形式传送到从数据库,然后在从数据库上对这些操作再次执行,从而实现从服务器与主服务器的数据同步。
复制过程概述主库将数据变更的操作作为事件记录在二进制日志(Binary Log)中
主库推送二进制日志(Binary Log)的信息到从库的中继日志(Relay Log)文件中
从库根据中继日志(Relay Log)的内容更新数据库
系统环境CentOS 7.6
Docker 18.09.6
MySql 5.6.46
搭建过程
创建MySql主、从容器
Docker如何安装MySql可以参考:Docker安装MySql
Master(主):1docker run -p 4001:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.46
Slave(从):1docker run -p 4002:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.46
配置Master(主)
设置server-id,打开 Binary Log
将配置文件拷贝出来(注:不同镜像版本的配置文件路径可能不同)
1docker cp mysql-master:/etc/mysql/mysql.conf.d/mysqld.cnf mysqld-master.cnf
在配置文件中添加如下内容:
1
2
3
4
5[mysqld]
# 设置server_id,注意要唯一
server-id=1
# 开启二进制日志功能,名字可以随便取
log-bin=mysql-bin
然后将配置文件拷贝回去:
1docker cp mysqld-master.cnf mysql-master:/etc/mysql/mysql.conf.d/mysqld.cnf
重启容器使配置生效
1docker restart mysql-master
创建同步账户
登入主数据库的MySql
1docker exec -it mysql-master /usr/bin/mysql -uroot -p123456
然后在MySql中分别执行如下命令创建同步用户
1
2
3mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
mysql> flush privileges;
其中slave为账户名,12345