温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

docker中怎么搭建mysql主从复制

发布时间:2021-06-21 14:58:28 来源:亿速云 阅读:120 作者:Leah 栏目:大数据

今天就跟大家聊聊有关docker中怎么搭建mysql主从复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、通过docker安装mysql,我在这里选择是的5.6版本

1)搜索从docker啦取mysql镜像

docker pull mysql:5.6

2)使用本镜像启动两个mysql容器(主、从容器)

master(主)

docker run -p 3316:3306 --name master-mysql -e MYSQL_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主从复制有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI