docker安装mysql 5.7后配置主从同步

接上篇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;

你可能感兴趣的:(mysql相关)