本文中使用两台服务器进行搭建,一台master一台agent 此操作仅限于测试环境,正式环境请 使用 -v 命令 将 mysql 数据文件挂载到宿主机上,两台主机中必须已经安装daocker,推荐使用bitnami:mysql 镜像,相比 官方镜像体积更小,配置主从更简单
一、拉取mysql5.7.31 docker镜像 并优化镜像(当前操作在master主机上执行)
1.1 拉取mysql5.7.31 docker 镜像
docker pull mysql:5.7.31
1.2 优化镜像
mkdir -p /data/mysql/master
cd /data/mysql/master
vi my.cnf
[mysqld]
log-bin=mysql-bin
server-id=14
vi Dockerfile
FROM mysql:5.7.31
ENV TZ Asia/Shanghai
COPY my.cnf /etc/mysql/
1.3 自定义mysql镜像
docker build --rm -t mysqlmaster:5.7.31 .
1.4 运行镜像
docker run -itd --name=mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysqlmaster:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
docker logs -f mysql
docker exec -it mysql bash
mysql -uroot -p
use mysql;
show databases;
exit;
exit
二、拉取mysql5.7.31 docker镜像 并优化镜像(当前操作在agent主机上执行)
2.1 拉取mysql5.7.31 docker 镜像(这一步可以使用master 主机上的mysql镜像,docker save -o,docker load -i 导入到本机也可以 )
docker pull mysql:5.7.31
2.2 优化镜像
mkdir -p /data/mysql/agent
cd /data/mysql/agent
vi my.cnf
[mysqld]
log-bin=mysql-bin
server-id=15
vi Dockerfile
FROM mysql:5.7.31
ENV TZ Asia/Shanghai
COPY my.cnf /etc/mysql/
2.3 自定义mysql镜像
docker build --rm -t mysqlagent:5.7.31 .
2.4 运行镜像
docker run -itd --name=mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysqlagent:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
docker logs -f mysql
docker exec -it mysql bash
mysql -uroot -p
use mysql;
show databases;
exit;
exit
三、使用数据库管理工具 navicat 或者sqlyog 连接master主机的数据库
create user 'yang'@'%' identified by 'yang';
grant replication slave on *.* to 'yang'@'%';
flush privileges;
错误解
决方案,在my.cnf配置文件中设置
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY
_ZERO
,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
show master status;
show global variables like 'binlog%';
show global variables like 'server%';
四、使用数据库管理工具 navicat 或者sqlyog 连接agent主机的数据库

CHANGE MASTER TO
master_host='192.168.59.14', -- master 主机ip
master_user='yang', --master主机上配置的主从 账号密码
master_password='yang',
master_port=3306,
master_log_file='mysql-bin.000003', --连接 master主机上的mysql 执行sql语句,show master status; 对应file 列 内容
master_log_pos=2356;--连接 master主机上的mysql 执行sql语句,show master status; 对应position列 内容
start slave;
show slave status;
五 、大功告成,接下来连接master主机上的mysql 添加数据库数据表以及数据 ,查看agent 主机上数据是否同步