创建master容器
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=12345 --name=course_master mysql:5.6.29
master.cnf
[mysqld]
server-id = 1
log-bin=mysql-bin
binlog-ignore-db=mysql
# binlog-do-db
# binlog_format=mixed
将master.cnf复制到容器内/etc/mysql/conf.d里面
docker cp master.cnf course_master:/etc/mysql/conf.d
创建slave容器
docker run -d --link master:master -p 3308:3306 -e MYSQL_ROOT_PASSWORD=12345 --name=course_slave mysql:5.6.29
slave.cnf
[mysqld]
server-id = 2
# relay_log = relay_bin
# relay-log-index = relay-bin.index
# read-only=1
# super-read-only=1
将slave.cnf复制到容器内/etc/mysql/conf.d里面
docker cp slave.cnf course_slave:/etc/mysql/conf.d
重启master和slave
docker restart course_master course_slave
配置master和slave
进入容器操作
docker exec -it master mysql -uroot -p12345
docker exec -it slave mysql -uroot -p12345
在master容器中创建同步账号并授权
GRANT REPLICATION CLIENT, REPLICATION COURSE_SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'repl';
在slave容器中创建master并重启slave
CHANGE MASTER TO MASTER_HOST='course_master', MASTER_USER='repl', MASTER_PASSWORD='repl';
start slave;
检查slave是否正常工作
show slave status\G
如果 Slave_SQL_Running_State 是 Slave has read all relay log; waiting for more updates 表示正常运行。
测试master/slave是否正常工作
在主库中创建数据库:
docker exec master mysql -uroot -p123456 -e "CREATE DATABASE test"
在从库中查看数据库:
docker exec slave mysql -uroot -p123456 -e "SHOW DATABASES"