docker配置mysql主从复制
docker配置mysql主从复制
主库
-
拉取镜像
-
docker pull mysql
-
-
查看镜像
-
docker images
-
-
创建主从配置文件目录
-
mkdir /data/docker/mysql/{master,slave} -pv
-
-
配置主配置文件
-
vi /data/docker/mysql/master/my.cnf
-
[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
default-authentication-plugin=mysql_native_password
-
-
创建主数据文件
-
mkdir /data/docker/mysql/master/data
-
-
启动主库实例
-
docker run -d -e MYSQL_ROOT_PASSWORD=root --name mysql-master -v /data/docker/mysql/master/data:/var/lib/mysql -v /data/docker/mysql/master/my.cnf:/etc/my.cnf -p 3316:3306 mysql
-
-
进入主库
-
先进入到容器 docker exec -it mysql-master /bin/bash
-
mysql -uroot -proot
-
-
检查配置是否成功
-
show variables like ‘%server_id%’ 得到相应的server_id表示配置成功
-
-
查看对应的同步文件
-
show master status
-
从库
-
配置从配置文件
-
vi /data/docker/mysql/slave/my.cnf
-
[mysqld]
server-id=2
skip-slave-start=true
read_only=ON
relay-log=relay-bin
relay-log-index=relay-bin.index
default-authentication-plugin=mysql_native_password
-
-
创建从数据文件
-
mkdir /data/docker/mysql/slave/data
-
-
启动从库实例
-
docker run -d -e MYSQL_ROOT_PASSWORD=root --name mysql-slave -v /data/docker/mysql/slave/data:/var/lib/mysql -v /data/docker/mysql/slave/my.cnf:/etc/my.cnf -p 3326:3306 mysql
-
-
进入主库
-
先进入到容器 docker exec -it mysql-master /bin/bash
-
mysql -uroot -proot
-
-
检查配置是否成功
-
show variables like ‘%server_id%’ 得到相应的server_id表示配置成功
-
-
配置从库同步主库
-
change master to master_host='192.168.1.22',master_user='root',master_password='root', master_log_file='master-bin.000003',master_log_pos=155,master_port=3316;
-
注意 master_log_file为主库的最新日志,master_log_pos 最后的执行点,可以通过在主库执行show master status 来查看
-
-
开始同步
-
start slave
-
-
检查同步配置
-
show slave status \G
-
注意 Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表示状态正常。
-
-