• 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

    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;

    在mtwo容器中,查看:

    show slave statusG;

    当红框两个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;

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

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

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

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

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

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

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

    create database mtwo_demo;

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

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

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

  • 相关阅读:
    进入到已有的docker容器中
    Ubuntu 18.04下指定Sublime Text 3 默认python编译版本
    设计模式之单例模式(c++版)
    clang10在ubuntu18.04下编译ZeroTier,故障解决
    搜狗输入法安装实践
    ubuntu 安装 dingtalk,飞书,google,zoom,时钟等
    js为某个元素添加某个类,并为其他兄弟元素删除此类
    jquery 中attr和css的区别
    unlimited tablespace 权限是否对所有表空间拥有权限测试
    Oracle DG 日常管理操作
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/9299567.html
Copyright © 2020-2023  润新知