MySQL搭建高可靠主从复制前的一些参数和准备

基本参数

#开启binlog
log_bin = /data/binlog/mysql/bin
binlog_format = row

#隔离级别
transaction_isolation = read-committed

#开启GTID
gtid-mode = on
enforce-gtid-consistency = true

#双一标准,每次提交事务binlog和redo log都会持久化到磁盘
sync_log = 1
innodb_flush_log_at_trx_commit = 1

#两阶段提交(此参数在MySQL5.7.10被废弃,此后两阶段提交都是默认开启)
innodb-support-xa = on

#从机上的SQL线程更新操作会再次产生binlog(可选)
log_slave_updates = 1

#I/O线程高可用(1、宕机后不使用已经接受的日志;2、从主机上重新拉取二进制日志)
relay-log-recovery = 1

#每执行n个event,更新一次relay-info.log
sync_relay_log_info = n

#SQL线程高可靠,使从库的日志回放和relay-info.log的记录变为原子操作
reloy_log_info_repository = TABLE

#从库的master.log中的信息记录到表(可选)
master_info_repository = TABLE

缓解主从延时

1、增加SQL线程
show variables like '%parallel%';
(root@localhost) [(none)]> show variables like '%parallel%';
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| slave_parallel_type    | DATABASE |
| slave_parallel_workers | 0        |
+------------------------+----------+
2 rows in set (0.03 sec)

#设置从机中sql线程数量
set global slave_parallel_workers = 8;

2、基于组提交的复制 (Back to Top)

#5.7参数,master上怎么执行,slave上就怎么回放(基于组提交的复制,InnoDB原生支持组提交)
set global slave_parallel_type = logical_clock;

解决主从一致参数

#即使事务已经被commit,若日志没有同步到slave上,master上的数据不会被更新;
rpl_semi_sync_master_wait_point = AFTER_SYNC
#在超时之前,日志至少要成功同步至n台slave上,主从复制才能继续
rpl_semi_sync_master_wait_for_slave_count = { 1-65535 }

开启无损失的半同步复制

#加载插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#查看是否加载成功:
show plugins;

#启动:
SET GLOBAL rpl_semi_sync_master_enabled = 1;
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
或者
[mysqld]
#replication
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_slave_enabled = 1;

#重启从库上的IO线程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;

#查看是否在运行
show status like '%rpl%';

以上参数,做高可用建议主从配置对称。

posted @ 2021-11-30 11:27  fromLaniakea  阅读(43)  评论(0)    收藏  举报