zoukankan      html  css  js  c++  java
  • Docker 搭建 MySQL8.0 主从复制环境

      拉取 docker 镜像

    docker pull mysql/mysql-server:8.0

      创建 docker 网络

    docker network create mysql_network

      运行 MySQL 主节点

    docker run -p 3306:3306 --name mysql_master -h mysql_master --net=mysql_network --restart=always 
        -v ~/docker/mysql/mysql_master/log:/var/log/mysql 
        -v ~/docker/mysql/mysql_master/data:/var/lib/mysql 
        -v ~/docker/mysql/mysql_master/conf:/etc/mysql 
        -e lower_case_table_names=1 
        -e MYSQL_ROOT_PASSWORD=root 
        -d mysql/mysql-server:8.0

      编辑主节点配置文件

    vi ~/docker/mysql/mysql_master/conf/my.cnf
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    init_connect='set collation_connection=utf8mb4_unicode_ci; set names utf8mb4;'
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    server-id=1
    log-bin=mysql-bin
    #binlog-do-db=test_db
    binlog-ignore-db=mysql
    binlog_cache_size=1M
    binlog_format=mixed
    expire_logs_days=7
    mysql_master/conf/my.cnf

      重启 MySQL 主节点

    docker restart mysql_master

      在主节点创建用户,用于复制主节点数据到从节点

    docker exec -it mysql_master mysql -uroot -proot
    
    create user 'mysql_slave'@'%' identified with mysql_native_password by '123456';
    
    grant replication slave, replication client on *.* to 'mysql_slave'@'%';

      运行 MySQL 从节点

    docker run -p 3307:3306 --name mysql_slave -h mysql_slave --net=mysql_network --restart=always 
        -v ~/docker/mysql/mysql_slave/log:/var/log/mysql 
        -v ~/docker/mysql/mysql_slave/data:/var/lib/mysql 
        -v ~/docker/mysql/mysql_slave/conf:/etc/mysql  
        -e lower_case_table_names=1 
        -e MYSQL_ROOT_PASSWORD=root 
        -d mysql/mysql-server:8.0

      编辑从节点配置文件

    vi ~/docker/mysql/mysql_slave/conf/my.cnf
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    init_connect='set collation_connection=utf8mb4_unicode_ci; set names utf8mb4;'
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    server-id=2
    log-bin=mysql-slave-bin
    #binlog-do-db=test_db
    binlog-ignore-db=mysql
    relay_log=mysql-relay-bin
    binlog_cache_size=1M
    binlog_format=mixed
    expire_logs_days=7
    slave_skip_errors=1062
    read_only=1
    log_slave_updates=1
    mysql_slave/conf/my.cnf

      重启 MySQL 从节点

    docker restart mysql_slave

      查看主节点日志文件和位置。可以看到文件名为 mysql-bin.000002,位置在693。

    docker exec -it mysql_master mysql -uroot -proot
    show master status;

      登录从节点,与主节点之间建立关联

    docker exec -it mysql_slave mysql -uroot -proot
    
    change master to master_host='mysql_master', master_user='mysql_slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=693, master_connect_retry=30;

      查看从节点状态

    show slave statusG;

      启动主从复制

    start slave;

      再次查看,可以看到 Slave_IO_Running 和 Slave_SQL_Running 两个进程已经启动了。

    主从复制测试

      在主节点创建一个数据库 'test_db'。

      在从节点上立即就可以看到这个数据库。

  • 相关阅读:
    poj 1904 King's Quest
    【BZOJ】1051: [HAOI2006]受欢迎的牛
    hdu 2767 Proving Equivalences
    hdu 3234 Exclusive-OR
    poj 1988 Cube Stacking
    poj 1733 Parity game
    hdu 3047 Zjnu Stadium 带权并查集
    poj 1182 食物链 种类并查集
    HDU 3749 Financial Crisis
    【BZOJ】1046 : [HAOI2007]上升序列
  • 原文地址:https://www.cnblogs.com/fallTakeMan/p/14038888.html
Copyright © 2011-2022 走看看