mkdir -p /data/mysql/slave1/conf
# slave数据库配置
sudo tee /data/mysql/slave1/conf/mysqld.cnf <<-'EOF'
[mysqld]
server-id = 101
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
EOF
mkdir -p /data/mysql/slave2/conf
# slave数据库配置
sudo tee /data/mysql/slave2/conf/mysqld.cnf <<-'EOF'
[mysqld]
server-id = 102
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
EOF
创建容器
docker run --name mysql-slave1 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql/slave1/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /data/mysql/slave1/data:/var/lib/mysql \
-d mysql:5.7
docker run --name mysql-slave2 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql/slave2/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /data/mysql/slave2/data:/var/lib/mysql \
-d mysql:5.7
③ master创建用户并授权
-
进入master的数据库,为master创建复制用户
# 进入master容器
docker exec -it mysql-master bash
# root用户连接mysql
mysql -uroot -p123456
# 创建用户
CREATE USER repl_user IDENTIFIED BY 'repl_passwd';
-
赋予户复制的权限
grant replication slave on *.* to 'repl_user'@'%' identified by 'repl_passwd';
FLUSH PRIVILEGES;
④ 查看master的状态
# 记录 File与Position的值
show master status;
⑤ 从库配置
# 进入从库容器
docker exec -it mysql-slave bash
# 连接从库
mysql -uroot -p123456
CHANGE MASTER TO
MASTER_HOST = '192.168.136.160',
MASTER_USER = 'repl_user',
MASTER_PASSWORD = 'repl_passwd',
MASTER_PORT = 3307,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=858,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000;
start slave;
# MASTER_LOG_FILE='mysql-bin.000005',#与主库File 保持一致
# MASTER_LOG_POS=120 , #与主库Position 保持一致
show slave status\G