zoukankan      html  css  js  c++  java
  • MacOS使用Docker创建MySQL主主数据库

    主从同步配置可以参考上一篇MacOS使用Docker创建MySQL主从数据库

    一、创建MySQL数据库容器配置文件对应目录

    我们在当前用户下创建一组目录,用来存放MySQL容器配置文件,(Linux下可以省略此步骤)参考下图:

    二、主主配置文件

    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

    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

    三、创建两个MySQL数据库容器

    创建mone数据库容器

    docker run --name monemysql -d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yumaster/test/mysql_doublemaster/mone/data:/var/lib/mysql -v /Users/yumaster/test/mysql_doublemaster/mone/conf/my.cnf:/etc/mysql/my.cnf -v /Users/yumaster/test/mysql_doublemaster/mone/mysql-files:/var/lib/mysql-files mysql/mysql-server

    创建mtwo数据库容器

    docker run --name mtwomysql -d -p 3318:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yumaster/test/mysql_doublemaster/mtwo/data:/var/lib/mysql -v /Users/yumaster/test/mysql_doublemaster/mtwo/conf/my.cnf:/etc/mysql/my.cnf -v /Users/yumaster/test/mysql_doublemaster/mtwo/mysql-files:/var/lib/mysql-files mysql/mysql-server

    此时我们打开Docker仪表板可以看到,两个容器已经运行起来了。而且端口就是我们之前创建的对应端口

     

    四、主主数据库配置

    mone 数据库容器配置:

    //进入mone容器
    docker exec -it monemysql mysql -u root -p123456
    //创建一个用户来同步数据,每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE 权限。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';(这样有可能在slave创建与master连接时报错)
    或
    CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    //对用户进行授权
    GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
    //查看状态,记住File、Position的值,在mtwo中将用到
    show master status;
    //查询mone容器的IP,会在slave设置主库连接时用到
    docker inspect monemysql | grep IPA;

    mtwo 数据库容器配置:

    //进入mone容器
    docker exec -it mtwomysql mysql -u root -p123456
    //设置主库链接,master_host即为容器IP,master_log_file和master_log_pos即为在mone容器中,通过show master status查出来的值;
    change master to master_host='172.17.0.4',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=661,master_port=3306;
    //创建一个用户来同步数据,每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE 权限。mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';(这样有可能在slave创建与master连接时报错)
    或
    CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    //对用户进行授权
    GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
    //启动同步
    start slave;
    //查看状态
    show master status;

    设置完mtwo之后,再进入mone容器

    //进入mone容器
    docker exec -it monemysql mysql -u root -p123456
    //设置mtwo主库链接
    change master to master_host='172.17.0.5',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=661,master_port=3306;
    //启动同步
    start slave;

    五、双主配置验证

    在mone与mtwo容器中查看状态:

    show slave status\G; 

     

    当Slave_IO_Running与Slave_SQL_Running均为Yes,说明双主配置成功;

    无论在mone,还是在mtwo中创建数据库,新增数据,两边都可以同步到数据

    create database mone_demo;
    use mone_demo;
    create table userinfo(username varchar(50),age int);
    insert into userinfo values('Tom',18);
    select * from userinfo;

  • 相关阅读:
    vue-cli 中stylus写样式莫名报错?
    Github桌面端安装慢问题
    firefox无法使用yslow的解决方案
    vue安装找不到命令
    css解惑
    vs2015中ctrl+shift+F进行“在文件中查找”,有时候无效?
    WebStrom安装了angularjs插件,但是没有语法提示
    jq版本更新后无live函数的处理.
    word每次打开都要选择文档类型
    百度编辑器1.4.3 .net版在vs2008的使用方法
  • 原文地址:https://www.cnblogs.com/yumaster/p/15737847.html
Copyright © 2011-2022 走看看