MySQL 主从复制
文章目录
环境
- mysql 主服务器,centos7.4,192.168.1.10,端口 10000
- mysql 从服务器,centos7.4,192.168.1.6
- 要复制的数据库有 data_db、conf_db
在主服务器上创建用于备份的用户 replicator
|
|
在主服务器上修改 my.cnf
|
|
在主服务器上重启 mysql,获取 master 状态
|
|
导出数据库初态
|
|
查看 binary 日志位置
|
|
在从服务器上编辑 my.cnf
|
|
在从服务器上重启 mysql,导入初态
|
|
导入数据库
|
|
开启同步
|
|
启动 slave,查看 slave 状态
|
|
MySQL8 gtid 互为主从配置
|
|
MySQL8 gtid 多源复制从库配置
-
修改 my.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
[mysqld] # ---- 固定配置 ---- datadir = /data/mysql socket = /var/lib/mysql/mysql.sock pid-file = /var/lib/mysql/mysql.pid log-timestamps = SYSTEM log-error = /var/log/mysql/error.log slow-query-log-file = /var/log/mysql/slow.log slow-query-log = TRUE default-authentication-plugin = mysql_native_password # ---- 动态配置 ---- mysqlx = OFF character-set-server = utf8mb4 default-storage-engine = innodb lower-case-table-names = 1 #skip-name-resolve = 1 #max-user-connections = 600 #innodb-buffer-pool-size = 8G #innodb-buffer-pool-instances = 8 # master server-id = 39 log-bin = /var/lib/mysql/master binlog-format = ROW #binlog-do-db = db1 gtid-mode = ON enforce-gtid-consistency = TRUE binlog-expire-logs-seconds = 172800 # slave #replicate-wild-do-table = db1.% replicate-wild-ignore-table = information_schema.% replicate-wild-ignore-table = mysql.% replicate-wild-ignore-table = performance_schema.% replicate-wild-ignore-table = sys.% slave-parallel-workers = 2 log-slave-updates = FALSE relay-log = /var/lib/mysql/slave relay-log-recovery = TRUE super_read_only = ON master_info_repository = table relay_log_info_repository = table
-
导出主库数据
1 2
mysqldump -uroot -h<主库1> -p --single-transaction --set-gtid-purged=on --databases db1 > 1_db1.sql mysqldump -uroot -h<主库2> -p --single-transaction --set-gtid-purged=on --databases db2 > 2_db2.sql
-
在导出的文件(1_db1.sql,2_db2.sql)中找到 “SET @@GLOBAL.gtid_purged …” 语句,记录下来,并在该文件中删除
-
导入 1_db1.sql 和 2_db2.sql
1 2
mysql -uroot -p < 1_db1.sql mysql -uroot -p < 2_db2.sql
-
合并这两个 “SET @@GLOBAL.gtid_purged …” 语句(gtid set 做并集),导入 gtid set 并集
1
set @@global.gtid_purged = '<gtid set 并集>'
-
加入两个主库的同步配置
1 2 3 4 5 6 7 8 9 10
change master to master_host='<主库1>', master_port=3306, master_user='<主库上的 replication 账户>', master_password='<主库上的 replication 账户的密码>', master_auto_position=1 for channel '<master_1>'; change master to master_host='<主库2>', master_port=3306, master_user='<主库上的 replication 账户>', master_password='<主库上的 replication 账户的密码>', master_auto_position=1 for channel '<master_2>';
-
启动从库
1 2
start slave for channel '<master_1>'; start slave for channel '<master_2>';
-
查看从库
1 2
show slave status for channel '<master_1>'\G show slave status for channel '<master_2>'\G
-
停止从库
1 2 3 4
-- 停止全部 slave stop slave; -- 停止指定 slave stop slave for channel '...';
-
重置从库
1 2 3 4
-- 重置全部 slave reset slave; -- 重置指定 slave reset slave for channel '...';
-
监控表: performance_schema.replication_connection_status
文章作者 Colben
上次更新 2020-04-18