0
点赞
收藏
分享

微信扫一扫

docker 配置MySQL主从复制

启动 mysql 容器(配置主服务器)

docker run -p 3307:3306 --name mysql-master \
-v /tmp/mysql/mysql-master/log:/var/log/mysql \
-v /tmp/mysql/mysql-master/data:/var/lib/mysql \
-v /tmp/mysql/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

docker ps     执行上列一条启动命令之后查看验证 -v映射的目录,-p映射的端口是否正常。
vim /tmp/mysql/mysql-master/conf/my.cnf  编辑配置文件加入如下内容

[mysqld]
#设置server_id 同一局域网中需要唯一
server_id=101
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#开启二进制日志功能
log-bin=mall-mysql-bin
#设置二进制日志使用内存的大小
binlog_cache_size=1M
#设置使用二进制日志的格式
binlog_format=mixed
#二进制日志过期清理时间,默认为零,表示不自动清理
expire_logs_days=7
#跳过主从复制中遇到的所有错误或指定错误的类型格式,避免slave端复制终端
#例如:1062错误是指一些主键重复,1032是因为主从数据库数据不一致
slave_skip_errors=1062

docker restart  mysql-master  		  重启mysql容器
docker ps   	  查看验证是否重启成功,重启失败就是配置文件错误,请排查配置文件是否编辑有误。
docker exec -it mysql-master /bin/bash    
mysql -uroot -p      			 输入上面指定的密码“root” 登入数据库
create user 'zhangsan'@'%' identified by '123456';    			创建用户
grant replication slave, replication client on *.* to 'zhangsan'@'%';   授权

配置MySQL从数据库

docker run -p 3308:3306 --name mysql-zhangsan \
-v /tmp/mysql/mysql-zhangsan/log:/var/log/mysql \
-v /tmp/mysql/mysql-zhangsan/data:/var/lib/mysql \
-v /tmp/mysql/mysql-zhangsan/conf/:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

docker ps     执行上列一条启动命令之后查看验证 -v映射的目录,-p映射的端口是否正常。
vim /tmp/mysql/mysql-zhangsan/conf/my.cnf

[mysqld]
#设置server_id 同一局域网中需要唯一 主机设置的101 从机设置的102 千万不要重复
server_id=102
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#开启二进制日志功能 以备zhangsan作为其他数据库实例的Master时使用
log-bin=mall-mysql-zhangsan1-bin
#设置二进制日志使用内存的大小
binlog_cache_size=1M
#设置使用二进制日志的格式
binlog_format=mixed
#二进制日志过期清理时间,默认为零,表示不自动清理
expire_logs_days=7
#跳过主从复制中遇到的所有错误或指定错误的类型格式,避免slave端复制终端
#例如:1062错误是指一些主键重复,1032是因为主从数据库数据不一致
slave_skip_errors=1062
#relay_log 配置中继日志
relay_log=mall-mysql-relay-bin
#表示salve将复制事件写进自己的二进制日志中
log-slave_updates=1
#设置从机为只读
read_only=1

docker restart  mysql-zhangsan       
docker ps                重启之后查看 STATUS 列表中的运行时间可验证是否重启成功。

在主数据库中查看信息并验证

mysql -uroot -p 
show master status;     执行该命令 拿到下图中的信息,用于下方配置主从复制

image.png

在从数据库中配置主从复制

docker exec -it mysql-zhangsan /bin/bash   登入从数据库容器
mysql -uroot -p      登入从数据库 执行下面命令

change master to master_host='192.168.XX.XX',\
master_user='zhangsan', master_password='123456',\
master_port=3307, master_log_file='mall-mysql-bin.000001', \
master_log_pos=623, master_connect_retry=30;

PS: 下列有参数说明的参考。

show slave status \G; 
在从数据库中执行验证主从同步状态,NO 表示还没开始,因为还未配置,如下图一所示:

start slave;
在从数据库中开启主从同步状态,(开启从数据库)
开启之后 查看下图中的 “NO” 是否变为 “Yes”  Yes 表示开始同步

image.png

主从复制测试

测试流程:
主库 新建库-使用库-新建表-插入数据  如下图一所示
从库 使用库-查看记录(读)	    如下图二所示

image.png image.png

主从复制参数说明

master_host	主数据库的IP地址
master_port	主数据库的运行端口
master_user	在主数据库创建的用于同步数据的用户账户
master_password	在主数据库创建的用于同步数据的用户账户的密码
master_log_file	指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数
master_log_pos	指定从数据库要从哪个位置开始复制数据,通过查看主数据库的数据,获取Position参数
master_connect_retry	连接失败重试的时间间隔,单位为妙。
举报

相关推荐

0 条评论