
postgresql_高可用
文章平均质量分 72
rudy_gao
这个作者很懒,什么都没留下…
展开
-
不要滥用UNLOGGED table 和 hash index
注意PostgreSQL的unlogged table是不记录xlog的,所以在备库上没有unlogged table的数据记录。同时,数据库在进入恢复状态时,为了保证数据的一致性,postgresql会自动清除unlogged table的数据文件。那么问题来了,万一你不小心误创建了unlogged table,你可能一开始会没有感知,但是一旦发生以下情况,你会发现数据不见了。转载 2015-10-23 11:12:27 · 1056 阅读 · 0 评论 -
PgSQL · 特性分析 · PG主备流复制机制
PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在备库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record。而PostgreSQL9.0之前提供的方法是主库写完一个WAL日志文件后,才把WAL日志文件传送到备库,这样的方式导致主备延迟特别大。同时PostgreSQL9.0之后提供了Hot Standby,备库在应转载 2016-01-28 16:41:06 · 1110 阅读 · 0 评论 -
GPDB · 特性分析· GreenPlum Primary/Mirror 同步机制
PostgreSQL 主备同步机制是通过流复制实现,其原理见之前的月报PG主备流复制机制。Greenplum 是基于PostgreSQL开发的,它的主备也是通过流复制实现,但是Segment节点中的Primary和Mirror之间的数据同步是基于文件级别的同步实现的。为什么Primary和Mirror不能再使用流复制实现呢?主要有两个原因:Append Only表不写WAL日志,所以A转载 2016-01-28 16:34:51 · 4426 阅读 · 0 评论 -
postgresql 字符集server_encoding变更
--今天在使用postgres_fdw做远端数据库转储时,发现本地所使用的字符集与远端是不同的,造成插入数据错误postgres=# insert into t select * from for_t; ERROR: character with byte sequence 0xe7 0xa6 0xb4 in encoding "UTF8" has no equivalent in原创 2015-11-30 14:56:14 · 11026 阅读 · 0 评论 -
PgSQL · 特性分析 · full page write 机制
PG默认每个page的大小为8K,PG数据页写入是以page为单位,但是在断电等情况下,操作系统往往不能保证单个page原子地写入磁盘,这样就极有可能导致部分数据块只写到4K(操作系统是一般以4K为单位),这些“部分写”的页面包含新旧数据的混合。在崩溃后的恢复期间,xlog 里面存储的记录变化信息不够完整,无法完全恢复该页。PG为了解决这类问题,full_page_write机制孕育而生。什么转载 2015-11-26 09:47:14 · 2080 阅读 · 0 评论 -
pg_rman 实现对postgresql数据库的备份,恢复与管理
--下载软件https://github.com/ossc-db/pg_rman--安装 unzip pg_rman-master.zip --下载安装postgresql93-libshttp://yum.postgresql.org/9.3/redhat/rhel-6.4-x86_64/ [root@rudy tools]# rpm -ivh postgresql93-li原创 2015-12-28 15:00:09 · 2826 阅读 · 0 评论 -
备库暂停应用xlog日志
--对于主从复制来说,有时候想停止从库应用主库的xlog做一些事情,此时可以用不pg提供的复制函数--在从库查看其是否在应用xlog,返回f说明其没有暂停应用xlog日志postgres=# select pg_is_xlog_replay_paused(); pg_is_xlog_replay_paused -------------------------- f(1 row)原创 2015-12-11 15:59:48 · 938 阅读 · 0 评论 -
pg_rewind增量同步备库
/*在数据库变得比较大时, 例如上TB, 如果部署了PostgreSQL primary-standby 流复制或者log shipping HA.当发生了failover, old primary节点可能因为某些原因需要重新同步数据. 在广域网上, 由于网络异常也可能造成standby节点落后主节点, 导致需要重新同步数据.小数据库重新同步数据很方便, 全量或者使用rsync增量原创 2015-12-10 15:03:15 · 3738 阅读 · 0 评论 -
FATAL,XX000,"highest timeline 14 of the primary is behind recovery timeline 15" rsync 增量重置备库
--在主从复制环境中,如果从库不小心打开了读写模式(相当单节点的一个数据),比如touch /usr/local/postgresql/9.3.4/5434/pgsql.recovery.trigger--此时从节点已经于主机点脱离,此时再把这个节点改为从节点时,由于从的timeline高于主,故该节点不能再变成从节点了[postgres@rudy_01 5434]$ ls | grep r原创 2015-10-30 17:07:43 · 20473 阅读 · 0 评论 -
PgSQL Replication Slot 实现分析
PostgreSQL 9.4在这个版本,我们看到了像Jsonb, Logical Decoding, Replication Slot等新功能。对于Replication Slot,文档上介绍的不多,乍一看让人比较难理解是做什么的。其实,Replication Slot的出现,主要是为最终在PG内核实现逻辑复制和双向复制铺路的(目前,逻辑和双向复制在内核中还缺少很多核心功能点,需要借助BDR插转载 2015-10-30 10:17:05 · 3971 阅读 · 0 评论 -
PostgreSQL密码文件的设置
在进行远程备份或者登录时要手工输入密码,总是一件麻烦的事情。不过PG提供了一个简单的方法,那就是用密码文件的方式。这点PG和GP是相同的。Linux下密码文件可在home路径下新建一个名为.pgpass的文件或者引用一个PGPASSFILE文件。Windows下密码文件一般放的位置是%APPDATA%\postgresql\pgpass.conf,比如C:\Document转载 2015-10-12 17:28:22 · 8514 阅读 · 0 评论 -
POSTGRESQL HOT_STANDBY流复制环境搭建
--传统的搭建流复制备库步骤为以下: 1 select pg_start_backup(); 2 复制数据文件; 3 select pg_stop_backup();--而 pg_basebackup 则省略以上步骤,一步搞定--主库上操作 --创建复制用户CREATE USER repuser REPLICA原创 2015-10-13 11:04:19 · 1045 阅读 · 0 评论 -
postgresql备份恢复之pg_dump大数据处理
目录[-]介绍使用管道压缩和解压custom-formatdirectory-format其他一些参数简单说明介绍官方文档介绍的主要有三种方式:通过unix管道,直接读取pg_dump的输出来压缩.使用pg_dump的custom-format使用pg_dump的directory-format使用管道压缩和解压由转载 2015-10-26 15:05:38 · 6845 阅读 · 0 评论 -
rsync增量重置备库
--在主从复制环境中,如果从库不小心打开了读写模式(相当单节点的一个数据),比如touch /usr/local/postgresql/9.3.4/5434/pgsql.recovery.trigger--此时从节点已经于主机点脱离,此时再把这个节点改为从节点时,由于从的timeline高于主,故该节点不能再变成从节点了[postgres@rudy_01 5434]$ ls | gre原创 2016-02-19 17:24:00 · 1182 阅读 · 0 评论