第18章 复制技术的演进 - xiaoboluo768/qianjinliangfang GitHub Wiki

18.2.1 异步复制

  • 2.配置示例
server_id=33061  			# 该参数在同一个复制架构中需要保持唯一
log-bin=mysql-bin

server_id=33062  			# 该参数在同一个复制架构中需要保持唯一
log-bin=mysql-bin

18.2.2 半同步复制

  • 2.配置示例
rpl_semi_sync_master=semisync_master.so  
# 需要提前安装好semisync_master.so半同步复制插件
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 3000

rpl_semi_sync_slave=semisync_slave.so  # 需要提前安装好semisync_slave.so半同步复制插件
rpl_semi_sync_slave_enabled = 1

18.2.3 增强半同步复制

  • 2.配置示例
rpl_semi_sync_master_wait_no_slave=ON
rpl_semi_sync_master_wait_for_slave_count=1
rpl_semi_sync_master_wait_point=AFTER_SYNC

18.2.4 组复制

  • 2.配置示例
server_id=3306162
sync_binlog=10000
innodb_flush_log_at_trx_commit = 2
binlog-checksum=NONE
innodb_support_xa=OFF
auto_increment_increment=3 		# 集群中有多少个节点,该参数就设置为多少
auto_increment_offset=1  		# 注意,其他节点这个保持唯一
binlog_row_image=full
transaction-write-set-extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_single_primary_mode=OFF
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_start_on_boot=on  
# 需要先在实例中安装group_replication.so库文件
loose-group_replication_ip_whitelist='0.0.0.0/0'
loose-group_replication_local_address='10.10.30.162:24901'  
# 不同的节点修改为自己的IP地址
loose-group_replication_group_seeds='10.10.30.162:24901,10.10.30.163:24901,10.10.30.164:24901'  			# 集群中有多少个节点,就写多少个节点的IP地址
loose-group_replication_bootstrap_group=OFF
report_host='node1'  			# 不同的节点修改为自己的host解析记录

server_id=3306163
sync_binlog=10000
innodb_flush_log_at_trx_commit = 2
innodb_support_xa=OFF
binlog-checksum=NONE
auto_increment_increment=3
auto_increment_offset=2
binlog_row_image=full
transaction-write-set-extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_single_primary_mode=OFF
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_start_on_boot=on
loose-group_replication_ip_whitelist='0.0.0.0/0'
loose-group_replication_local_address='10.10.30.163:24901'
loose-group_replication_group_seeds='10.10.30.162:24901,10.10.30.163:24901,10.10.30.164:24901'
loose-group_replication_bootstrap_group=OFF
report_host='node2'

18.2.5 GTID复制

# 在传统复制模式下使用change master to语句需要指定binlog文件和binlog位置
mysql> change master to master_host='ip',master_user='user_name',master_password= 'password', master_port='mysql_port',master_log_file='binlog file name', master_log_pos='binlog position';

# 在GTID复制模式下不需要指定binlog文件和binlog位置,只需指定master_auto_position=1即可
## 注意,如果从库是基于备份数据搭建的,那么在执行change master to语句之前,需要使用备份目录下的xtrabackup_binlog_info 文件中的GTID构造一个set gtid_purged= 'GTID SET' 设置一下,这样就能够保证GTID和数据保持一致了
reset master;   # 在从库实例启动之后,登录到预搭建从库的实例中清除之前的GTID、binlog等位置信息
mysql> set global gtid_purged='2d623f55-2111-11e8-9cc3-0025905b06da:1-3';  # 把xtrabackup_binlog_info文件中的GTID SET写上来,有多个GTID SET时用逗号分隔
mysql> change master to master_host='ip',master_user='user_name',master_password= 'password', master_port='mysql_port',master_auto_position=1;  # 执行change master to语句
  • 2.配置示例
gtid_mode = on
enforce_gtid_consistency = 1

gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates = 1  # 在MySQL 5.7及之后的版本中,在从库中可以关闭该参数,关闭之后mysql.gtid_executed表中会实时记录每个事务的GTID

18.3.2 DATABASE 并行复制

  • 2.配置示例
slave_parallel_workers=N

18.3.3 LOGICAL_CLOCK 并行复制

  • 2.配置示例
slave_parallel_type=LOGICAL_CLOCK

slave_preserve_commit_order=1
slave_parallel_workers=N
slave_parallel_type=LOGICAL_CLOCK

18.3.4 WRITESET并行复制

  • 2.配置示例
slave_parallel_type=LOGICAL_CLOCK
transaction_write_set_extraction=XXHASH64
binlog_transaction_dependency_tracking=WRITESET|WRITESET_SESSION
binlog_transaction_dependency_history_size=25000

slave_preserve_commit_order=1
slave_parallel_workers=N
slave_parallel_type=LOGICAL_CLOCK

上一篇:第17章 mysql系统库应用示例荟萃 | 下一篇:第19章 事务概念基础