暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES rac全局事务与两阶段提交操作演示

原创 数据猿 2024-01-15
699


金仓数据库KingbaseES rac全局事务与两阶段提交操作演示

关键字:

KingbaseES、RAC、人大金仓

rac全局事务与两阶段提交操作演示:

系数据库共享存储集群支持全局事务:

  1. root用户查看集群资源状态,是2节点共享存储集群:

crm status

2. 修改kingbase.conf中的max_prepared_transactions参数开启两阶段提交:

vim /sharedata/data_gfs2/rac/data/kingbase.conf

3. 如上修改完成后,重启数据库:

crm resource restart clone-DB

4. 两节点同时用rac用户连接ksql,执行\d :

/home/rac/KingbaseRAC/bin/ksql -Usystem -dtest -p55555

5. 任选其中一节点,创建一张test表,默认情况自动提交功能是开启的

create table test(id int);

\echo :AUTOCOMMIT

6. 此时去另一节点 \d查询表视图,可以看到test表已被创建:

7. 在节点1通过begin语句来开启事务,并执行插入数据操作

insert into test values(1);

8. 在节点2查询test表数据,预期无数据:

select * from test;

9. 节点1通过end语句提交该事务,节点2便可以读到数据:

select * from test;

10. 节点1通过begin语句开启事务,然后写入1条数据,使用savepoint建一个保存点,再次写入数据,两节点查看表中数据:

begin;

insert into test values(2);

savepoint my_savepoint01;

insert into test values(3);

select * from test;

节点1:

节点2:

11. 节点1执行rollback操作回滚至保存点位置,节点1查看表数据变化,再节点1执行commit提交后,节点2查看表数据:

rollback to savepoint my_savepoint01;

select * from test;

commit;

select * from test;

节点1:

节点2:

【两阶段提交】

12. 节点1创建表t1,通过begin语句开启事务,写入1条数据,然后准备事务提交的第一阶段,此时两节点都查看全局事务视图,查看t1中的表数据无新增:

create table t1(id int);

begin;

insert into t1 values(1);

prepare transaction 'trans_001';

select * from sys_prepared_xacts;

select * from t1;

节点1:

节点2:

可见此事务已被持久化,即便数据库重启,该事务也不会回滚或丢失。

13. 此时退出ksql连接,重新连接,查看全局事务视图发现事务trans_001仍存在,任选一节点执行commit操作,成功后再次查看全局事务视图和表数据,事务已提交数据已更新:

\q

/home/rac/KingbaseRAC/bin/ksql -Usystem -dtest -p55555

select * from sys_prepared_xacts;

commit prepared 'trans_001';

select * from sys_prepared_xacts;

select * from t1;

节点1:

节点2:

可见全局事务已提交,数据已更新;

14. 节点1通过begin语句开启事务,写入1条数据,然后准备事务提交的第一阶段,此时两节点都查看全局事务视图,查看t1中的表数据无新增

begin;

insert into t1 values(2);

prepare transaction 'trans_002';

select * from t1;

select * from sys_prepared_xacts;

节点1:

节点2:

15. 两节点退出ksql连接,重新连接,查看全局事务视图发现事务trans_002仍存在,任选一节点执行rollback操作,成功后再次查看全局事务视图和表数据:

节点1:

\q

/home/rac/KingbaseRAC/bin/ksql -Usystem -dtest -p55555

select * from sys_prepared_xacts;

select * from t1;

节点2:

\q

/home/rac/KingbaseRAC/bin/ksql -Usystem -dtest -p55555

select * from sys_prepared_xacts;

select * from t1;

rollback prepared 'trans_002';

select * from sys_prepared_xacts;

可见全局事务已回滚。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论