docker下载mysql镜像

查找镜像

docker search mysql 

Docker搭建MySQL主从同步

下载mysql镜像

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

docker pull mysql:5.7

Docker搭建MySQL主从同步

查看镜像列表

docker images

可以看到mysql5.7的镜像已经下载到本地了
Docker搭建MySQL主从同步

构建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
Docker搭建MySQL主从同步

配置slave的my.cnf

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

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

Docker搭建MySQL主从同步

运行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搭建MySQL主从同步

#查看所有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;

Docker搭建MySQL主从同步

在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

Docker搭建MySQL主从同步
配置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;

Docker搭建MySQL主从同步

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

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

相关文章: