InnoSQL HA Suite的实现原理与配置说明 InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync replicaiton)的功能 MySQL 5.6支持了crash safe功能
时间:2022-03-13 23:44
Virtual Sync Replication的实现机制
有用户可能会对VSR的性能抱有担心,的确网络的延迟是无法避免的,这决定了VSR的性能会比异步的复制要差。但是VSR的性能会比semi-sync复制的性能要好很多。其实这是非常容易理解的,因为步骤3,4交换顺序后,可以极大的提高组提交的比例,从而减少fysnc的次数,提高性能,这就是前面说的,通过减少fsync来减缓网络延迟带来的开销。也有类似VSR的实现机制(FB称之为semi synchronous replication),他们也证实了VSR的性能要比semi-sync来得好。
HA Suite(MySQL双机高可用套件)
仅仅通过VSR机制就能保证主从数据的完全一致性吗?很可惜,还是不能。VSR还是与semi-sync一样,存在故障切换后,原master服务器的数据比slave多的情况。这是因为上述的步骤2已经写二进制日志了,master故障恢复后依然会提交该事务,但是这部分二进制日志可能会没有传送到slave。但是VSR和semi-sync不同的是,由于事务还在提交过程中,数据对其他事务不可见,这意味着,这部分已经写入到二进制日志的事务可以回滚。这部分的操作,最早通过外部脚本来控制,后来InnoSQL决定将这部分的工作交由数据库自己来完成,最后以一个高可用的套件形式来展现给用户,那么这部分的操作对用户来说就都是透明的了。
要配置HA Suite是及其简单的,假设复制环境的主服务器为192.168.1.2,从服务器为192.168.1.3,那么将其配置为双主的形式,启用semi-sync replication的插件,然后进行类似如下的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[mysqld]
binlog = mysqld-bin #开启二进制日志,搭建双主环境
sync_binlog = 1 #保证crash safe
innodb_flush_log_trx_commit = 1 #保证crash safe
rpl_semi_sync_master_timeout = 100000000 #不要超时,防止切异步,保证主从数据的完全一致性
rpl_semi_sync_master_commit_after_ack = 1 #启用VSR功能
enable_table_relay_info = 1 #开启crash safe功能
relay_log_recovery = 1 #开启crash safe功能
slave_parallel_threads=16 #并行复制的线程数
ha_partner_host = 192.168.1.3 #配置partner服务器(另一台配置为192.168.1.2)
ha_partner_user = xxx #连接partner服务器的数据库用户,用户直接使用复制的用户即可
ha_partner_password = xxx #连接partner服务器的数据库用户密码
ha_partner_port = 3306
read_only = 1 #可选配置
|
可以看到对于VSR来说最为重要的就是网络,对于网络的要求极高,当然这也非常容易理解,这对于Oracle DataGurad、Microsoft SQL Server Mirroring来说也是一样的要求。HA Suite配置之前介绍的功能,又能极大的提高从机的性能,同时又能缩短故障恢复的时间。
关于InnoSQL
InnoSQL是国产MySQL版本,并且遵守GPL v2协议,对开源所有修改的代码。InnoSQL针对互联网与传统金融企业的数据库应用进行性能优化与数据保障。
InnoSQL技术讨论QQ群:166583560 InnoSQL官方网站: InnoSQL社区论坛: InnoSQL公众账号:InsideMySQL InnoSQL微薄:@InnoSQL