为了账号安全,请及时绑定邮箱和手机立即绑定

Docker mysql 主主配置

标签:
Java

二、具体操作

1、创建目录(/app/mysql/):


--mysql-one

    --logs

    --data 

    --conf

         --my.cnf   

   --mysql-two

    --logs

    --data 

    --conf

        --my.cnf



2、主主配置文件

mysql-one: 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/


mysql-two: 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、创建容器


//创建并启动容器;

//mysql-one

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /app/mysql-one/logs:/logs -v /app/mysql-one/data:/var/lib/mysql -v /app/mysql-one/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7

//mysql-two

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /app/mysql-two/logs:/logs -v /app/mysql-two/data:/var/lib/mysql -v /app/mysql-two/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7

4、容器设置详细

mysql-one容器设置:


//进入mysql-one容器

docker exec -it monemysql mysql -u root -p

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

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

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

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

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

show master status;


小技巧:

查看容器IP:

docker inspect monemysql | grep IPA

https://img1.sycdn.imooc.com//5d2d2ecb0001195104680120.jpg


mysql-two容器设置:


//进入mysql-two容器

docker exec -it mysql mysql -u root -p

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

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

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

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

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

//启动同步

start slave ;

//查看状态

show master status;



设置完后,再次进入Mysql-one容器


//进入mone容器

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

docker exec -it mysql mysql -u root -p

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

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

//启动同步

start slave ;

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

在mysql-one容器中,查看:

show slave status\G;

https://img1.sycdn.imooc.com//5d2d2ed10001034807170318.jpg


在mysql-two容器中,查看:

show slave status\G;

https://img1.sycdn.imooc.com//5d2d2ed60001a84e07230372.jpg


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


三、验证

1、在mysql-one库中操作:

create database mone_demo;

use mone_demo;

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

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

select * from userinfo;

https://img1.sycdn.imooc.com//5d2d2efb0001371505480370.jpg


2、在mysql-one库操作完后,在mysql-two库中查看验证

https://img1.sycdn.imooc.com//5d2d2eff00013c4a02980250.jpg

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

https://img1.sycdn.imooc.com//5d2d2f03000115b806280261.jpg

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


3、在mysql-two库中,在此库,此表中,新增记录

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

在mysql-one库中查看,发现在mysql-two库中新增的记录,确实也同步到mysql-one库中来了哦~

https://img1.sycdn.imooc.com//5d2d2f130001067503420192.jpg


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

create database mtwo_demo;

在mysql-one库中,查看验证,查看数据库:

https://img1.sycdn.imooc.com//5d2d2f180001d00603920260.jpg

发现在mysql-two库新增的数据库,已经同步到了mysql-one容器中来了



作者:soane1983
链接:https://www.jianshu.com/p/079a51ecede4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消