Postgresql 数据库备份恢复,序列值问题

Postgresql 数据库备份恢复,序列值问题,第1张

概述场景: 某个测试系统使用了阿里云的Postgresql RDS,某次将线上数据库备份后,恢复至本地,发现第一次获取序列值 nextval('seq_name') 的时候,返回的是当前值,如同第一次创建序列一样。   排查: (1)  数据库恢复后,检查序列的各个属性,发现起始值,当前值,都是正确的,但是通过 select * from seq_name 发现一个属性"is_called"是fals

场景:

某个测试系统使用了阿里云的Postgresql RDS,某次将线上数据库备份后,恢复至本地,发现第一次获取序列值 nextval('seq_name') 的时候,返回的是当前值,如同第一次创建序列一样。

排查:

(1) 数据库恢复后,检查序列的各个属性,发现起始值,当前值,都是正确的,但是通过 select * from seq_name 发现一个属性"is_called"是false,相当于序列是第一次创建。

(2) 在本地创建一个库,同样建立序列,备份恢复至本地,发现is_called属性是true,没有问题。

因为,备份后的sql,创建序列后,调用setval将属性做了修正。

(3) 阿里云的备份没有上述setval语句,是阿里云rds的BUG。

应对:

对于阿里云rds的情形,恢复数据库后,对所有的sequence执行一条语句 select nextval('seq_name') as val; 即可。

参考:

http://www.cnblogs.com/amosleaf/archive/2012/06/05/2537082.HTML

http://blog.csdn.net/dracotianlong/article/details/8028406

http://n3xtchen.github.io/n3xtchen/postgresql/2015/04/10/postgresql-sequence

http://www.cnblogs.com/wllcs/p/6211985.HTML

http://www.cnblogs.com/alianbog/p/5654604.HTML

总结

以上是内存溢出为你收集整理的Postgresql 数据库备份恢复,序列值问题全部内容,希望文章能够帮你解决Postgresql 数据库备份恢复,序列值问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1172944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存