linux之mysql57并行復(fù)制(提高延遲)
1 查看當(dāng)前參數(shù)
show global variables like 'slave_parallel_workers';? ? 默認(rèn)0,單線程
show global variables like'%slave_parallel_type%';? ? ?#默認(rèn)是多線程機(jī)制是一個(gè)線程處理一個(gè)庫
2 配置主服務(wù)器vim /etc/my.cnf
binlog_group_commit_sync_delay=1000 提交延遲
binlog_group_commit_sync_no_delay_count=100 每組包含的事務(wù)數(shù)量
3 配置從服務(wù)器vim /etc/my.cnf
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=8
slave_pending_jobs_size_max=2147483648
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
relay_log_purge=ON
4 變量說明
#變量binlog_group_commit_sync_delay
全局動態(tài)變量,單位微妙,默認(rèn)0,范圍:0~1000000(1秒)。
表示binlog提交后等待延遲多少時(shí)間再同步到磁盤,默認(rèn)0,不延遲。設(shè)置延遲可以讓多個(gè)事務(wù)在用一時(shí)刻提交,提高binlog組提交的并發(fā)數(shù)和效率,提高slave的吞吐量。
#變量binlog_group_commit_sync_no_delay_count
全局動態(tài)變量,單位個(gè)數(shù),默認(rèn)0,范圍:0~1000000。
表示等待延遲提交的最大事務(wù)數(shù),如果上面參數(shù)的時(shí)間沒到,但事務(wù)數(shù)到了,則直接同步到磁盤。若binlog_group_commit_sync_delay沒有開啟,則該參數(shù)也不會開啟
#變量slave-parallel-type可以有兩個(gè)值:DATABASE 默認(rèn)值,基于庫的并行復(fù)制方式;LOGICAL_CLOCK:基于組提交的并行復(fù)制方式
slave-parallel-type=LOGICAL_CLOCK
#提交的事務(wù)都是可以并行回放(配合binary log group commit);
slave-parallel-workers=8
slave_pending_jobs_size_max = 2147483648
slave_preserve_commit_order=ON
#將master.info和relay.info保存在表中,默認(rèn)是Myisam引擎,官方建議用?
#開啟MTS功能后,務(wù)必將參數(shù)master_info_repostitory設(shè)置為TABLE,這樣性能可以有50%~80%的提升。這是因?yàn)椴?行復(fù)制開啟后對于元master.info這個(gè)文件的更新將會大幅提升
master_info_repository=TABLE
relay_log_info_repository=TABLE
#啟用relaylog的自動修復(fù)功能,避免由于網(wǎng)絡(luò)之類的外因造成日志損壞,主從停止。
relay_log_recovery=ON
relay_log_purge=ON