基于Docker的Mysql主从复制搭建(线下/线上)

Posted gwhm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Docker的Mysql主从复制搭建(线下/线上)相关的知识,希望对你有一定的参考价值。

 

利用Docker搭建主从服务器

首先拉取docker镜像,我们这里使用5.7版本的mysql

docker pull mysql:5.7

然后使用此镜像启动容器,这里需要分别启动主从两个容器

技术图片

 

Master(主):

docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Slave(从):

docker run -p 3340:3306 --name mymysql1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

使用docker ps命令查看正在运行的容器:

技术图片

此时可以使用Navicat等工具测试连接mysql创建两个以上端口的连接

技术图片

配置mymysql(主)

通过docker exec -it 容器id /bin/bash命令进入到mymysql容器内部,也可以通过docker exec -it 容器名称 /bin/bash命令进入。

cd /etc/mysql切换到/etc/mysql目录下,然后vim my.cnf 或者 vi my.cnf  如果没有vi或者vim

apt-get update

apt-get install vim 命令安装vim

进入my.cnf

[mysqld]

## 同一局域网内注意要唯一

server-id=100

## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

配置完成之后,需要重启mysql服务使配置生效。使用service mysql restart完成重启。

重启mysql服务时会使得docker容器停止,我们还需要docker start 容器id 启动容器。

下一步在mymysql(主)数据库创建数据同步用户,授予用户 mymysql1  REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

CREATE USER ‘mymysql1‘@‘%‘ IDENTIFIED BY ‘123456‘;

技术图片

只要出现这个表示成功然后运行下一个

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘mymysql1‘@‘%‘;

 

配置mymysql1(从)

和配置mymysql(主)一样,在mymysql1配置文件my.cnf中添加如下配置:

[mysqld]

## 设置server_id,注意要唯一

server-id=101

## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-mymysql-bin

## relay_log配置中继日志

relay_log=edu-mysql-relay-bin

 

配置完成后也需要重启mysql服务和docker容器

链接mymysql(主)和mymysql1(从)

在mymysql1(从)进入mysql,mysql -u root -p    密码:123456   执行show master status;

技术图片

在mymysql1中进入MySQL 执行

change master to

master_host=‘172.17.0.2‘,(主容器ip    用docker inspect 容器ID查看)

master_user=‘mymysql1‘,

master_log_file=‘mysql-bin.000001‘,(主File的值)

master_log_pos=1070,(主Position的值)

master_port=3306,

master_password=‘123456‘;

 

start slave;

然后执行show slave status \\G;查看

技术图片

这两个都是yes表示成功

在主连接中创建库在从连接中就可以看见

3.3 如在配置主从同步前master中已有数据,则需提前进行数据同步操作

登录master,执行锁表操作

mysql -u root -p1234 -h 127.0.0.1 -P 3307
FLUSH TABLES WITH READ LOCK;

将master中需要同步的db的数据dump出来

mysqldump -u root -p -h 127.0.0.1 -P 3307  mytest > mytest.dump 

将数据导入slave

mysql -u root -p -h 127.0.0.1 -P 3308 mytest < mytest.dump

按前文所述步骤开启主从同步,然后解锁master

UNLOCK TABLES;


作者:yangziwen
链接:https://www.jianshu.com/p/f1c56fa3b20d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

以上是关于基于Docker的Mysql主从复制搭建(线下/线上)的主要内容,如果未能解决你的问题,请参考以下文章

基于Docker搭建MySQL主从复制

基于Docker搭建MySQL主从复制

基于Docker的Mysql主从复制搭建

基于Docker的Mysql主从复制搭建

基于Docker的MySQL主从复制搭建及原理

基于Docker搭建MySQL主从复制