[root@docker-01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
system master 20e2772fd585 47 hours ago 6.72GB
system slave 20e2772fd585 47 hours ago 6.72GB
mysql 5.7.28 9d559d0e3cf8 47 hours ago 6.72GB
centos 7.6.1810 f1cb7c7d58b7 5 years ago 202MB# 创建master容器[root@docker-01 ~]# docker run -d --hostname master --name master -p 13306:3306 --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro system:master# 创建slave容器[root@docker-01 ~]# docker run -d --hostname slave --name slave -p 23306:3306 --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro system:slave
四、登录容器
4.1、配置master
# 登录master容器[root@docker-01 ~]# docker exec -it master bash# 查看临时mysql密码[root@master /]# tail -1 /var/log/mysql_password.log 2024-05-25T04:21:20.466885Z 1[Note] A temporary password is generated for root@localhost: MD)M;qyC0r_0
# 设置主服务器ID[root@master /]# cat >> /etc/my.cnf << EOF
server-id =1
log-bin = master-bin #开启二进制日志
binlog_format = mixed
EOF
[root@master /]# systemctl start mysqld[root@master /]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 000.0.0.0:3306 0.0.0.0:* LISTEN 316/mysqld
# 登录数据库更改密码[root@master /]# mysql -u root -p
Enter password: ## 输入临时密码
mysql>setpassword=password('wzh.2005');
4.2、配置slave
# 登录slave容器[root@docker-01 ~]# docker exec -it slave bash# 查看临时mysql密码[root@slave /]# tail -1 /var/log/mysql_password.log 2024-05-25T04:21:20.466885Z 1[Note] A temporary password is generated for root@localhost: MD)M;qyC0r_0
# 设置从服务器ID[root@slave /]# cat >> /etc/my.cnf << EOF
server-id =2#需保证主库和从库的server_id不
relay-log = relay-log-bin #开启中继日志
relay-log-index = slave-relay-bin.index #中继日志开启索引read_only=1
EOF
[root@slave /]# systemctl start mysqld[root@slave /]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 000.0.0.0:3306 0.0.0.0:* LISTEN 326/mysqld
# 登录数据库更改密码[root@slave /]# mysql -u root -p
Enter password: ## 输入临时密码
mysql>setpassword=password('wzh.2005');
五、授权从库
# 给从服务器授权,允许使用myslave的身份复制master中的所有数据库的所有表数据,并指定密码为“wzh.2005”[root@master /]# mysql -u root -pwzh.2005
mysql> grant replication slave on *.* to 'myslave'@'192.168.93.%' identified by 'wzh.2005';# 两个容器之间使用172.17.0.0网段通信
mysql> grant replication slave on *.* to 'myslave'@'172.17.0.%' identified by 'wzh.2005';