zoukankan      html  css  js  c++  java
  • postgresql灾备切换

    演示pg_rewind的使用方法。
    主库在10.0.3.101上,备库在10.0.3.102上。
    这时主库出问题了,如机器宕机了(我们用强制关机来模拟),我
    们现在激活备库,即在10.0.3.102上执行如下命令:
    [postgres@pg02 ~]$ pg_ctl promote
    server promoting
    现在10.0.3.102库变成了主库。
    然后把原主库开机,即在10.0.3.101上执行pg_rewind命令:
    [postgres@pg01 ~]$ pg_rewind -D $PGDATA --source-server='host=10.0.3.102 user=postgres password=postgres'
    pg_rewind: fatal: target server must be shut down cleanly
    我们发现pg_rewind报错,这时就需要把这个库启动一下,然后再
    正常关闭。
    [postgres@pg01 ~]$ pg_ctl start
    pg_ctl: another server might be running; trying to start server anyway
    waiting for server to start....
    done
    server started
    [postgres@pg01 ~]$ pg_ctl stop
    waiting for server to shut down.... done
    server stopped
    然后再执行pg_rewind:
    [postgres@pg01 ~]$ pg_rewind -D $PGDATA --source-server='host=10.0.3.102 user=postgres password=postgres'
    pg_rewind: servers diverged at WAL location 0/18DCD08 on timeline 1
    pg_rewind: rewinding from last common checkpoint at 0/18C1DE0 on timeline 1
    pg_rewind: Done!
    注意,上面的“-D”参数指向本地的目录。
    pg_rewind执行完之后,需要手动建文件“standby.signal”:
    touch $PGDATA/standby.signal
    并在postgresql.conf中添加如下内容:
    primary_conninfo = 'user=postgres password=XXXXXX host=10.0.3.102 port=5432 sslmode=prefer sslcompression=0'
    这样原主库才能变成新主库的备库。
    如果是PostgreSQL 12版本之前的数据库,需要手动创建
    recovery.conf文件,内容如下:
    standby_mode = 'on'
    recovery_target_timeline = 'latest'
    primary_conninfo = 'user=osdba password=XXXXXX host=10.0.3.102 port=5432 sslmode=disable sslcompression=1'
    注意,上面的命令中比之前多了一
    行“recovery_target_timeline='latest'”,这时因为新主库的时间线与原主库
    的不一样了,加上这一行命令才能让原主库切换到新主库的时间线上。
    这时再在10.0.3.101上启动数据库,原主库就变成了新主库的备
    库:
    [postgres@pg01 ~]$ pg_ctl start
    waiting for server to start....
    done
    server started
    注意上面的操作,一定要先建好standby.signal(或是
    recovery.conf),再启动数据库,否则启动了数据库就会进入主库模
    式。如果这样做了,需要把数据库停下来,重新运行pg_rewind命令。

     
    技术链接
  • 相关阅读:
    Promise前期准备---区别实例对象与函数对象
    es6之函数参数默认值、字符串方法、for of
    es6之剩余和扩展参数
    es6之解构赋值
    es6之set和map
    前端知识点总结
    jQuery的12种选择器
    前端面试总结
    Closure
    PHP 中 16 个魔术方法详解
  • 原文地址:https://www.cnblogs.com/liujiacai/p/14643544.html
Copyright © 2011-2022 走看看