首先得有一台云服务器,我准备了一台腾讯轻量云主机(新用户免费试用1个月 4C8G)
准备Docker环境
docker 环境准备就不细说了。可以参考 Docker学习(一)
启动实例
实例1
docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql01-volume:/var/lib/mysql -d mysql
实例2
docker run --name mysql02 -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 -v mysql02-volume:/var/lib/mysql -d mysql
修改配置信息
需要对两个实例配置进行修改。这里主要修改两个信息:
- 开启binlog:log-bin=mysql-bin (mysql 8.0 默认开启,可以通过命令查看一下)
- 设置server-id:用于标示该语句最初是哪个Server写入的
将容器中的mysql配置文件my.cnf复制到宿主机
docker cp mysql01:/etc/mysql/my.cnf ./
===========================================
vim my.cnf
在[mysqld]加上下面两行
log-bin=mysql-bin
server-id=1
===========================================
将编辑好的my.cnf配置文件放回容器中
docker cp ./my.cnf mysql01:/etc/mysql
重启mysql主容器
docker restart mysql01
进入实例 mysql01
创建同步用户:从库需要使用该用户建立与主库的链接
mysql> create user 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test';
Query OK, 0 rows affected (0.02 sec)
mysql> grant REPLICATION SLAVE ON *.* TO 'test'@'%';
Query OK, 0 rows affected (0.02 sec)
进入实例mysql02
从库需要设置主库信息:
mysql> CHANGE REPLICATION SOURCE TO
SOURCE_HOST='172.17.0.2',
SOURCE_PORT=3306,
SOURCE_USER='test',
SOURCE_PASSWORD='test';
主库IP地址可以通过命令查看
docker inspect mysql01
启用从库:
mysql> START REPLICA;
mysql> SHOW REPLICA STATUS\G
到此就已经完成配置了。可以测试了~