docker mysql 5.7をインストールした後、マスタースレーブ同期を構成

2985 ワード

前編に続くhttps://blog.csdn.net/a2589293499/article/details/96840761
  • 新規my.cnfファイル、内容は以下の通り、/mysql-master/confディレクトリに入れます.
  • [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
    #common
    character-set-server = utf8mb4
    max_allowed_packet = 32M
    lower_case_table_names = 1
    log-error = mysql-error.log
    slow_query_log = on 
    slow-query-log-file = mysql-slow.log 
    long_query_time = 2
    log-queries-not-using-indexes = mysql-nouseindex.log
    
    #innodb
    innodb_buffer_pool_size	= 1G
    innodb_thread_concurrency = 16
    innodb_log_file_size = 512M
    innodb_log_files_in_group = 3
    innodb_lock_wait_timeout = 120
    
    #master & slave
    binlog_format = row #row|mixed
    gtid_mode = on
    enforce-gtid-consistency = on
    relay_log_recovery = 1
    relay_log_info_repository = TABLE
    master_info_repository = TABLE
    log-slave-updates = off
    expire_logs_days = 7
    
    #master
    server_id = 9
    innodb_flush_log_at_trx_commit = 1
    sync_binlog = 1
    log-bin = mysql-bin
    binlog-ignore-db = mysql
    
    #slave
    #server_id = 10
    #innodb_flush_log_at_trx_commit = 2
    #sync_binlog = 500
    #slave-skip-errors = 1062
    #replicate-ignore-db = mysql
  • masterノードの内容を注釈し、slaveノードの内容を注釈しないで、/mysql-slave/confディレクトリ
  • を入れます.
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
    #common
    character-set-server = utf8mb4
    max_allowed_packet = 32M
    lower_case_table_names = 1
    log-error = mysql-error.log
    slow_query_log = on 
    slow-query-log-file = mysql-slow.log 
    long_query_time = 2
    log-queries-not-using-indexes = mysql-nouseindex.log
    
    #innodb
    innodb_buffer_pool_size	= 1G
    innodb_thread_concurrency = 16
    innodb_log_file_size = 512M
    innodb_log_files_in_group = 3
    innodb_lock_wait_timeout = 120
    
    #master & slave
    binlog_format = row #row|mixed
    gtid_mode = on
    enforce-gtid-consistency = on
    relay_log_recovery = 1
    relay_log_info_repository = TABLE
    master_info_repository = TABLE
    log-slave-updates = off
    expire_logs_days = 7
    
    #master
    #server_id = 9
    #innodb_flush_log_at_trx_commit = 1
    #sync_binlog = 1
    #log-bin = mysql-bin
    #binlog-ignore-db = mysql
    
    #slave
    server_id = 10
    innodb_flush_log_at_trx_commit = 2
    sync_binlog = 500
    slave-skip-errors = 1062
    replicate-ignore-db = mysql
  • 再起動容器
  • docker restart mysql-master
    docker restart mysql-slave
  • mysql-master容器内部に入り、主従
  • を配置する
    docker exec -it mysql-master/bin/bash
    mysql -uroot -p123456
    create user 'slave1'@'%' identified by '123456';
    grant replication slave on *.* to 'slave1'@'%';
    flush privileges;
  • mysql-slave容器内部に入り、主従
  • を配置する
    docker exec -it mysql-slave/bin/bash
    mysql -uroot -p123456
    change master to master_host='あなたのIP',master_port=3307, master_user='slave1', master_password='123456', master_auto_position=1;
    start slave;