zoukankan      html  css  js  c++  java
  • PostgreSQL提升为主库 时间线加一的问题

    在使用PostgreSQL高可用集群过程中发现一个很难解决的问题,先记录在这里。

    我们知道在PG流复制集群中,如果主库死掉了,备库要提升为主库有两种方法:

    1)pg_ctl promote 

    2)创建对应的trigger文件:touch " " /var/lib/pgsql/10/data/.tfile

    但是这两种方法会使得备库提升为主的同时,时间线会+1,在pg_wal中可以看到:

    -bash-4.1$ ls -rlth pg_wal/
    total 49M
    drwx------ 2 postgres postgres 4.0K May 25 14:09 archive_status
    -rw------- 1 postgres postgres  16M May 25 14:09 000000010000000000000002
    -rw------- 1 postgres postgres  16M May 25 14:12 000000010000000000000003
    -rw------- 1 postgres postgres   41 May 25 14:13 00000002.history
    -rw------- 1 postgres postgres  16M May 25 14:13 000000020000000000000003

    但是如果我们不想让时间线+1,应该怎么提升为主节点呢?

    为什么不想让时间线+1呢? 如果主库再起来时,需要作为备节点了,由于可能发生日志分支,需要使用pg_rewind找到相同日志的点,当做完rewind之后,发现无法启动主库。因为他们相同的点在时间线+1前的时间线中,而新的主库的时间线已经+1了。就无法创建同步,目前只能重做主库,但是如果数据量很大的时候,就很麻烦!

    思路:

    1)看看官方文档中有没有方法。

    2)看看能不能提一个BUG。

  • 相关阅读:
    剑指offer:二维数组的查找
    安卓突击:绘制图像
    安卓突击:绘制图形和文本
    Android突击:定制控件
    Android突击:PanelLayout的实现
    POJ 1426 Find The Multiple
    POJ 2251 Dungeon Master
    event.target的认识
    JS延迟加载
    jquery中position 和offset的区别
  • 原文地址:https://www.cnblogs.com/kuang17/p/9088393.html
Copyright © 2011-2022 走看看