Docker搭建MySQL主从同步

docker下载mysql镜像

查找镜像

docker search mysql 

在这里插入图片描述

下载mysql镜像

这里选择下载第一个镜像,并指定mysql的版本为5.7

docker pull mysql:5.7

在这里插入图片描述

查看镜像列表

docker images

可以看到mysql5.7的镜像已经下载到本地了
在这里插入图片描述

构建master和slave

创建master和slave映射目录及配置文件

首先在/usr/local目录下创建mysql配置文件映射目录,结构如下:

/usr/local/docker-mysql
	/mysql-master
		/conf
			/my.cnf
		/data
	/mysql-slave
		/conf
			/my.cnf
		/data		

配置master的my.conf

cd /usr/local/docker-mysql/mysql-master/conf/
vim my.cnf

进行vim界面,按i进入编辑模式,修改内容为如下所示;按esc进行命令行模式,输入:wq保存文本并退出vim
在这里插入图片描述

配置slave的my.cnf

cd /usr/local/docker-mysql/mysql-slave/conf/
vim my.cnf

操作同上,修改内容为如下信息

在这里插入图片描述

运行master和slave

master服务端口号映射为3306,slave服务端口号映射为3307

docker run -d -v /usr/local/docker-mysql/mysql-master/data:/var/lib/mysql -v /usr/local/docker-mysql/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --name mysql-master  mysql:5.7
docker run -d -v /usr/local/docker-mysql/mysql-slave/data:/var/lib/mysql -v /usr/local/docker-mysql/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --name mysql-slave  mysql:5.7

参数说明:

-d:指定容器运行于前台还是后台,默认为false
-p: 指定容器暴露的端口
–name:设置容器名称
-v:给容器挂载存储卷,挂载到容器的某个目录。当前为挂载mysql的文件路径
-e:指定环境变量,容器中可以使用该环境变量。当前为设置mysql的root密码

查看运行状态

docker ps 

在这里插入图片描述

#查看所有docker容器(运行中、失败或者停止的)
docker ps -a
#查看启动失败的日志
docker logs ${CONTAINER_ID}

进入master并创建同步用户

进入master容器并登录到mysql

docker exec -it c35 /bin/bash
mysql -uroot -proot

-it:进行与容器的交互模式

查看master状态

show master status;

在这里插入图片描述

在master主库上面创建同步用户

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';

进入slave并配置同步参数

进入slave容器并登录到mysql

docker exec -it 608 bash
mysql -uroot -proot

查看master主库的ip地址

docker inspect c3504fa7b459

在这里插入图片描述
配置slave同步参数

change master to master_host='172.17.0.2',master_port='3306',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=439;

master_host:master主库的ip地址
master_user:master主库创建的同步用户账号
master_password:master主库创建的同步用户密码
master_password:master主库show master status结果中的File
master_log_pos:master主库show master status结果中的Position

开始同步

start slave;

查看slave状态

show slave status\G;

在这里插入图片描述

以下状态表示,主从配置成功

Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试master和slave同步状态

在master主库中进行创建数据或表,操作数据并观察slave从库的同步状态。
经测试,在master中创建test数据,创建t_user表,并插入数据,slave从库可以正常进行同步。

主从同步常用配置

#服务器唯一ID,一般设置为当前服务器ip后缀
server-id = 1
#启用二进制日志
log_bin = mysql-bin
#混合模式复制
binlog_format = MIXED
#mysql清除过期日志的时间,默认为0不清除
expire_logs_days =7
#日志滚动大小
max_binlog_size =256M
#忽略同步的数据库,有多个配置多行
binlog_ignore_db=mysql
#指定同步的数据库
binlog-do-db=test
#同步后记录日志
log-slave-updates=YES

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值