切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
Postgre SQL
PostgreSQL主从序列的last_value不一致
PostgreSQL主从序列的last_value不一致
2020-06-18
Postgre SQL
前端之家
前端之家
收集整理的这篇文章主要介绍了
PostgreSQL主从序列的last_value不一致
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
404
_0@
一直以为Postgre
sql
的主从所有数据都是一致的,但直到最近测试过程中发现的一个奇怪的序列问题让我有所改观,一开始以为是某个版本的问题,发现9.x的版本都存在这个问题,让我一度认为是postgre
sql
的一个BUG。
@H_
404
_0@
@H_
404
_0@ 我们的一个应用会定期同步Postgre
sql
流复制的从机数据到一台测试机上,此时测试机上的数据和生产的现存数据是一致的,但是序列的last_value值是不一样的,导致测试机上新增数据时,最新的序列值和生产上是不一样的。
@H_
404
_0@
@H_
404
_0@ 简单的测试过程如下
@H_
404
_0@
@H_
404
_0@ 环境:
OS :CentOS 6.5
@H_
404
_0@ DB:Postgre
sql
9.4beta3
@H_
404
_0@ Primary:10.1.11.71 @H_
404
_0@ StandBy:10.1.11.72 @H_
404
_0@ 主从环境部署略 @H_
404
_0@
@H_
404
_0@
@H_
404
_0@ Primary端新建一张表:
[postgres
@localhost
~]$ p
sql
p
sql
(9.4beta3)
Type "help" for help.
@H_
404
_0@ postgres=# create table test(id serial,remark varchar(100));
CREATE TABLE
postgres=# select sequence_name,last_value,log_cnt from test_id_seq;
sequence_name | last_value | log_cnt
---------------+------------+---------
test_id_seq | 1 | 0
(1 row) @H_
404
_0@
@H_
404
_0@ 此时在Standby端查看 @H_
404
_0@ [postgres
@localhost
~]$ p
sql
p
sql
(9.4beta3)
Type "help" for help.
postgres=# select sequence_name,log_cnt from test_id_seq;
sequence_name | last_value | log_cnt
---------------+------------+---------
test_id_seq | 1 | 0
(1 row)
更新Primary端的测试数据
postgres=# insert into test(remark) select generate_series(1,100)||'hello,world';
INSERT 0 100
postgres=# select sequence_name,log_cnt from test_id_seq;
sequence_name | last_value | log_cnt
---------------+------------+---------
test_id_seq | 100 | 32
(1 row) @H_
404
_0@
@H_
404
_0@ 再次去查看standby端的序列值 @H_
404
_0@ postgres=# select sequence_name,log_cnt from test_id_seq;
sequence_name | last_value | log_cnt
---------------+------------+---------
test_id_seq | 132 | 0
(1 row) @H_
404
_0@
@H_
404
_0@ 其实多更新几次,你会发现备机上的last_value比主机上的略大,而且是主机上的last_value与 log_cnt之和。log_cnt在官方文档上没有详细说明,只是标注一个内部参数,并在replication中才有用处,通常认为是备机应用其他WAL时预留的nextval值,默认是32,所以这并不是一个BUG,而是故意设置的。 @H_
404
_0@ 如果从备机上同步数据到模测环境上需要注意这一点。
上一篇:不使用crosstab实现PostgreSQL的行
下一篇:[亲测,可用]postgresql 无法删除数
猜你在找的Postgre SQL相关文章
PosegreSQL基础回顾(第 4 章 SQL语法)
来源:http://www.postgres.cn/docs/11/ 4.1.1. 标识符和关键词 SQL标识符和关键...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 8 章 数据类型)
来源:http://www.postgres.cn/docs/11/ 8.1. 数字类型 数字类型由2、4或8字节的...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 5 章 数据定义)
来源:http://www.postgres.cn/docs/11/ 5.1. 表基础 SQL并不保证表中行的顺序。...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 6 章 数据操纵、第 7 章 查询)
来源:http://www.postgres.cn/docs/11/ 6.4. 从修改的行中返回数据 有时在修改行...
作者:前端之家 时间:2020-11-21
PosegreSQL基础回顾(第 13 章 并发控制)
来源:http://www.postgres.cn/docs/11/ 13.2.1. 读已提交隔离级别 读已提交是Po...
作者:前端之家 时间:2020-11-21
PostgreSQL安装和使用
青岛OJ系统用的关系型数据库是PostgreSQL,为此对PostgreSQL大致了解下。 今天的主要话题围...
作者:前端之家 时间:2020-11-01
PostgreSQL整体架构
作者:前端之家 时间:2020-08-07
为什么选择PostgreSQL而不是MySQL
David Bolton是一名独立开发者,他使用PostgreSQL和MySQL都已有超过十年的时间。近日,他撰...
作者:前端之家 时间:2020-08-07
为什么选择PostgreSQL而不是MySQL
David Bolton是一名独立开发者,他使用PostgreSQL和MySQL都已有超过十年的时间。近日,他撰...
作者:前端之家 时间:2020-08-07
专访唐成:从小工到专家,PostgreSQL的修炼之道
唐成,拥有十几年数据库、操作系统、存储领域的工作经验。目前任沃趣科技首席数据库架构师...
作者:前端之家 时间:2020-08-07
编程分类
MySQL
MsSQL
Oracle
Sqlite
Postgre SQL
Mariadb
MongoDB
NoSQL
HBase
JDBC
最新文章
• PosegreSQL基础回顾(第 4
• PosegreSQL基础回顾(第 8
• PosegreSQL基础回顾(第 5
• PosegreSQL基础回顾(第 6
• PosegreSQL基础回顾(第 13
• PosegreSQL基础回顾(第 9
• PostgreSQL安装和使用
• PostgreSQL整体架构
• 为什么选择PostgreSQL而不
• 为什么选择PostgreSQL而不
热门标签
更多 ►
undo日志
persistent-c
mysql-error-
postal-code
sql-match-al
mysql-5.6
mysql-8.0
database-tri
安装路径
系统错误
data_dir
丢失文件
主从同步
sql_mode
数据库目录
匿名用户
character_se
ID归零
数据库位置
查询表
重复字段
查询字段
截断日志
SUSPECT
7391
Remote Serve
Linked Serve
玄学问题
登录不上
开启远程访问