docker部署mysql主从复制
一、拉取mysql镜像
docker pull mysql/mysql-cluster
docker tag mysql/mysql-cluster mysql-cluster
二、创建目录和配置文件
1、创建目录
# 创建master主节点目录 mkdir /home/mysql/cluster/master cd /home/mysql/cluster/master mkdir conf data files log # 创建slave1从节点目录 mkdir /home/mysql/cluster/slave1 cd /home/mysql/cluster/slave1 mkdir conf data files log # 创建slave2从节点目录 mkdir /home/mysql/cluster/slave2 cd /home/mysql/cluster/slave2 mkdir conf data files log # 创建slave3从节点目录 mkdir /home/mysql/cluster/slave3 cd /home/mysql/cluster/slave3 mkdir conf data files log
2、创建master主配置文件
[mysqld] # 主服务器唯一ID server-id=0 # 开启二进制日志 log-bin=mysql-bin # 设置忽略的数据库 # binlog-ignore-db=mysql # 设置日志使用内存大小 binlog_cache_size=1M # 设置日志格式 binlog_format=statement character-set-server=utf8mb4 collation-server=utf8mb4_general_ci default-time_zone = '+8:00' log_timestamps=SYSTEM default-authentication-plugin=mysql_native_password
3、创建slave从配置文件
[mysqld] # 从服务器唯一ID server-id=1 # 指定不需要同步的数据库名称 #binlog-ignore-db=mysql # 开启二进制日志功能,以备slave作为其他数据库实例的master时使用 log-bin=mall-mysql-slave1-bin # 设置二进制日志使用内存大小(事务) binlog_cache_size=1M # 设置日志格式 binlog_format=statement # relay_log 配置中继日志 relay_log=mall-mysql-relay-bin # log_slave_updates 表示 slave 将复制时间写进自己的二进制日志 log_slave_updates=1 ## slave设置为只读 (具有super权限的用户除外) read_only=1 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci default-time_zone = '+8:00' log_timestamps=SYSTEM default-authentication-plugin=mysql_native_password
三、创建docker容器
1、创建主机容器
docker run -d \ -p 3307:3306 \ -v /home/mysql/cluster/master/conf:/etc/mysql/conf.d \ -v /home/mysql/cluster/master/data:/var/lib/mysql \
-v /home/mysql/cluster/master/log:/var/log/mysql \
-v /home/mysql/cluster/master/files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ --network mynet \ --name mysql-master \ mysql
2、启动主机
start master;
3、创建从机容器
docker run -d \ -p 3308:3306 \ -v /home/mysql/cluster/slave1/conf:/etc/mysql/conf.d \ -v /home/mysql/cluster/slave1/data:/var/lib/mysql \ -v /home/mysql/cluster/slave1/log:/var/log/mysql \ -v /home/mysql/cluster/slave1/files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ --network mynet \ --name mysql-slave1 \ mysql
四、从机关联到主机
1、进入主机查看主机mysql的同步文件
show master status
2、进入从机关联主机
CHANGE MASTER TO MASTER_HOST='192.168.100.20', MASTER_USER='root', MASTER_PASSWORD='root', MASTER_PORT=3307, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=156;
3、启动从机
start slave;