MogDB/openGauss 角色切换后sequence为什么不连续
背景
今天在客户现场做高可用切换测试,为了验证数据库节点角色切换后无数据丢失,我单独创建一张使用了自增 sequence 的表,通过 vip 方式访问数据库,并 1s 插入一条数据。
因为数据库本身是通过 benchmarksql 工具加压的,数据库服务器的 CPU 使用率达到 70%,所以如果这张表的序列是连续的,且切换时间与数据插入时间对的上,那就可以认定数据无丢失,但当我切换数据库角色后,神奇的现象出现了,切换时间是对的上的,但序列却是跳跃的。
复现
准备测试表
准备测试脚本
这个脚本可以放到脚本里,也可以直接终端显示日志
while true; do gsql -h 192.168.xxx.xxx postgres -Uur -Wu@123456 -p 25000 -c "insert into seqtest(ip_address) select setting from pg_settings where name='local_bind_address'"; sleep 1s ; done