问题背景
从原理上将 GBase8s Enterprise Replication 可以实现双写,但在实际经验中不推荐使用双写机制。因其独特的复制技术,在某些场景下存在数据同步冲突的可能性,虽然也提供了一些冲突的解决方案,其本质上已经对数据精准度做了让步。
在实际经验中,更推荐将连接锁定在一个节点上。然而,在运行过程中,不可避免的会发生数据库/服务器故障导致数据库发生切换,在现有机制下,不能保证连接锁定在一个节点,此时可以借用keepalived 非抢占模式的机制,使用虚拟IP锁定连接。
keepalived 原理在本文不做具体介绍,如下提供了一种参考性的实现逻辑
0 gbase 复制集群正常
1 在各节点分别添加一个 0.0.0.0 的监听
gbase8s onsoctcp 0.0.0.0 9088
DBSERVERALIASES gbase8s
2 在各个节点安装keepalived组件
3 keepalived 参考配置
! Configuration File for keepalived
global_defs {
router_id pri
}
vrrp_script chk_db {
script "/home/gbasedbt/chkdb.sh"
interval 30
w