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