从docker仓库中搜索mysql镜像
docker search mysql
从docker仓库中下载mysql镜像
docker pull mysql:5.6
启动主数据master镜像
docker run --name docker-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
启动从数据库slave镜像
docker run --name docker-mysql-slave -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
主数据master配置:
- 开启二进制日志并设置server-id
docker exec 容器ID bash -c "echo 'log-bin=mysql-bin'>> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker exec 容器ID bash -c "echo 'server-id=1'>> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker restart 容器ID
- 创建用户并授权
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED by '123456';
FLUSH PRIVILEGES;
- 查看master状态
SHOW MASTER STATUS;
从数据slave配置:
- 设置server-id
docker exec 容器ID bash -c "echo 'server-id=2'>> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker restart 容器ID
- 查询master数据库ip地址
window环境:docker inspect 0db51b08eaa0|findstr IPAddress
linux环境:docker inspect 0db51b08eaa0|grep -i IPAddress
- 打开mysql会话,执行同步SQL语句
CHANGE MASTER TO
MASTER_HOST='172.17.0.2',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=399;
- 启动slave同步进程
START SLAVE;
- 查看slave状态
SHOW SLAVE STATUS;
当Slave_IO_Running和Slave_SQL_Running都为yes表示主从同步设置成功了。