docker mysql 同步_Docker Mysql数据库双主同步配置方法

一、背景

二、具体操作

1、创建目录(~/test/mysql_test1):

--mysql

--mone

--data

--conf

--my.cnf

--mtwo

--data

--conf

--my.cnf

2、主主配置文件

Mone: my.cnf

[mysqld]

server_id = 1

log-bin= mysql-bin

replicate-ignore-db=mysql

replicate-ignore-db=sys

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

read-only=0

relay_log=mysql-relay-bin

log-slave-updates=on

auto-increment-offset=1

auto-increment-increment=2

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/

Mtwo: my.cnf

[mysqld]

server_id = 2

log-bin= mysql-bin

replicate-ignore-db=mysql

replicate-ignore-db=sys

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

read-only=0

relay_log=mysql-relay-bin

log-slave-updates=on

auto-increment-offset=2

auto-increment-increment=2

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/

3、创建容器

//创建并启动主从容器;

//mone

docker run --name monemysql -d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root -v ~/test/mysql_test1/mone/data:/var/lib/mysql -v ~/test/mysql_test1/mone/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7

//mtwo

docker run --name mtwomysql -d -p 3318:3306 -e MYSQL_ROOT_PASSWORD=root -v ~/test/mysql_test1/mtwo/data:/var/lib/mysql -v ~/test/mysql_test1/mtwo/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7

4、容器设置详细

mone容器设置:

//进入mone容器

docker exec -it monemysql mysql -u root -p

//启动mysql命令,刚在创建窗口时我们把密码设置为:root

//创建一个用户来同步数据

//这里表示创建一个slave同步账号slave,允许访问的IP地址为%,%表示通配符

GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';

//查看状态,记住File、Position的值,在mtwo中将用到

show master status;

小技巧:

查看容器IP:

docker inspect monemysql | grep IPA

7bb9d91b5a0ae737f78c8aca7f7aac10.png

mtwo容器设置:

//进入mtwo容器

docker exec -it mtwomysql mysql -u root -p

//启动mysql命令,刚在创建窗口时我们把密码设置为:root

//设置主库链接,master_host即为容器IP,master_log_file和master_log_pos即为在mone容器中,通过show master status查出来的值;

change master to master_host='172.17.0.11',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=154,master_port=3306;

//创建一个用户来同步数据

GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';

//启动同步

start slave ;

//查看状态

show master status;

设置完后,再次进入Mone容器

//进入mone容器

//启动mysql命令,刚在创建窗口时我们把密码设置为:root

docker exec -it monemysql mysql -u root -p

//设置mtwo主库链接,参数详细说明同上

change master to master_host='172.17.0.12',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=443,master_port=3306;

//启动同步

start slave ;

配置完成之后,可以验证双主配置是否正确

在mone容器中,查看:

show slave statusG;

8de93474bbfc02d35d6f5075302f1810.png

在mtwo容器中,查看:

show slave statusG;

26573791be9fc8cf0e95e8e3fd34500c.png

当红框两个Running状态都为Yes时,说明双主配置成功了~

三、验证

1、在mone库中操作:

create database mone_demo;

use mone_demo;

create table userinfo(username varchar(50),age int);

insert into userinfo values('Tom',18);

select * from userinfo;

908810b838c3e2464ea552a57dec3ccb.png

2、在mone库操作完后,在mtwo库中查看验证

decaa6a175f628d784cd2c795025f992.png

首先查看数据库,发现数据库已经同步过来了,继续验证:

0e21d52ab0cfb6ddcb30a53c9ef6b30b.png

发现表的数据也同步过来了。

3、在mtwo库中,在此库,此表中,新增记录

insert into userinfo values('mtwo',20);

在mone库中查看,发现在mtwo库中新增的记录,确实也同步到mone库中来了哦~

bdf098646510d215ca2ffd21743abcb3.png

4、继续走一波验证,在mtwo库中,新增一个数据库,看是否同步到mone库中

create database mtwo_demo;

在mone库中,查看验证,查看数据库:

4882fc64fa1fd944345b16e1701cb7f0.png

发现在mtwo库新增的数据库,已经同步到了mone容器中来了

到此为止,Mysql的主从同步和主主同步就介绍结束了,喜欢的,请点赞关注公众号哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值