美文网首页高性能MySQL
Docker mysql 主主配置

Docker mysql 主主配置

作者: soane1983 | 来源:发表于2018-12-12 16:49 被阅读2次

    二、具体操作

    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

    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;

    在mysql-two容器中,查看:

    show slave status\G;

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

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

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

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

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

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

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

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

    create database mtwo_demo;

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

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

    相关文章

      网友评论

        本文标题:Docker mysql 主主配置

        本文链接:https://www.haomeiwen.com/subject/fndphqtx.html