拉取mysql镜像并运行两个容器
# 拉取镜像
docker pull mysql
# 启动一台作为主节点
docker run -p 3307:3306 --name primysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
# 作为从节点
docker run -p 3308:3306 --name secmysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
# 查看运行状态
docker ps
一切正常后使用连接工具测试是否能够正常连接
对主节点进行配置
进入主节点
docker exec -it primysql /bin/bash
下载vim工具
apt-get update
apt-get install vim
在my.cnf中新增下面配置
vim /etc/mysql/my.cnf
#在[mysqlld]下新增
#同一局域网内注意要唯一
server-id=1
#开启二进制日志功能,可以随便取
log-bin=mysql-bin
保存退出并重启容器
在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
配置从库
在从库中编辑my.cnf加入配置
#同一局域网内注意要唯一
server-id=1
#开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=slave-mysql-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
配置完后和primary节点一样重启
连接两个节点
在Master进入mysql,执行show master status;
show master status
File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。
在Slave 中进入 mysql,执行change master to master_host=‘172.17.0.2’, master_user=‘slave’, master_password=‘123456’, master_port=3306, master_log_file=‘mysql-bin.000001’, master_log_pos= 2830, master_connect_retry=30;
SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。