今天就跟大家聊聊有关docker中怎么搭建MySQL主从复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
10年积累的成都网站设计、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有马村免费网站建设让你可以放心的选择与我们合作。
一、通过docker安装mysql,我在这里选择是的5.6版本
1)搜索从docker啦取mysql镜像
docker pull mysql:5.6
2)使用本镜像启动两个mysql容器(主、从容器)
master(主)
docker run -p 3316:3306 --name master-mysql -eMYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
slave(从)
docker run -p 3317:3306 --name slave-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
参数解析:
-p 将容器的 3306 端口映射到主机的 3306 端口。
--name 使用docker镜像mysql:5.6,将容器命名为mastermysql。
-e -e MYSQL_ROOT_PASSWORD=123456 初始化密码。
-d 后台运行容器,并返回容器ID。
查看容器是否正常运行:docker ps
二、配置mysql主服务器(Master)
1)进入mysql主服务器内部
docker exec -it e8355163bbbc /bin/bash
2)编辑my.cnf
cd /etc/mysql
编辑 my.cnf(vim my.cnf)
注意:可能会提示vim没有安装,可以运行 apt-get install vim 安装,然后再执行vim my.cnf
在末尾处添加
[mysqld]
server-id=100
log-bin=mysql-bin
配置完成后需要重启mysql,重启过程中docker镜像也会停止,所以也需要重启一下镜像
service mysql restart
docker start mysql-master
3)下一步在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
三、配置mysql从服务器(Slave)
1)进入mysql从服务器内部
docker exec -it 从服务器id /bin/bash
2)编辑my.cnf
cd /etc/mysql
编辑 my.cnf(vim my.cnf)
注意:可能会提示vim没有安装,可以运行 apt-get install vim 安装,然后再执行vim my.cnf
在末尾处添加
[mysqld]
server-id=101
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin
配置完成后需要重启mysql,重启过程中docker镜像也会停止,所以也需要重启一下镜像
service mysql restart
docker start mysql-slave
四、其他设置
1)链接Master(主)和Slave(从)
在Master进入mysql,执行show master status;
File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。
2)在Slave中进入mysql,执行
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 433, master_connect_retry=30;
命令说明:
master_host:Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
3)在Slave 中的mysql终端执行 show slave status \G;用于查看主从同步状态。
正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave;开启主从复制过程,然后再次查询主从同步状态show slave status \G;。
看完上述内容,你们对docker中怎么搭建mysql主从复制有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。