zoukankan      html  css  js  c++  java
  • Postgresql12主备流复制操作过程以及原理【pg_basebackup】 HE

    原理介绍:流复制(Streaming Replication)。流复制提供了将 WAL 记录连续发送并应用到从服务器以使其保持最新状态的功能。通过流复制,从服务器不断从主服务器同步相应的数据,

                         同时,从服务器作为主服务器的一个备份。

    pg_basebackup:提供一个全量备份。常用来搭建流复制环境。属于物理备份。逻辑备份工具时pg_dump;

    -D:–pgdata=DIRECTORRY,接收备份的目录
    -F:–format=p | t,指定输出格式,支持p(原样输出)或者t(tar格式输出)
    -r:–max-rate=RATE,最大传输率(kB/s,或用前缀 k,M)
    -R,–write-recovery-conf,备份后写recovery.conf文件
    -s,–slot=SLOTNAME,使用的复制槽
    -T:–tablespace-mapping=OLDDIR=NEWDIR,使用NEWDIR替代OLDDIR
    -x:–xlog,备份开始后,启动另一个流复制连接从主库接收WAL
    -X:–xlog-method=fetch| stream
    –xlogdir=XLOGDIR
    -z:–gzip
    -Z:–compress=0-9
    –target-gp-dbid:根据给定的dbid创建表空间子目录
    -C,–checkpoint=fast| spread
    -l,–label=LABLE:设置backup label
    -E,–exclude
    –exclude-from=FILE

    一、两台服务器上分别安装pg:默认为12版本,路径:/var/lib/postgresql/12

           1、安装命令:

                             sudo apt-get install postgresql 

                      或者

                            sudo apt-get install postgresql-12

     

           2、创建系统账号:

                命令:  sudo su - postgres -c "createuser -s odoo"

                             sudo -u postgres psql

                            alter role odoo with password 'odoo';

                退出方式:最好用\q,这样会将进程结束掉

                Control +Z 退出 或 \q

     

            3、安装完成后各目录说明

                 (1) 配置文件config所在目录 /etc/postgresql/12/main

                 (2) 数据文件data所在目录   /var/lib/postgresql/12/main

                  (3) 端口号               5432

                  (4) 安装目录             /usr/lib/postgresql/12/

    二、主数据库【10.14.22.143】配置

              1、使用postgres用户登陆数据库,创建复制用户

                   #需要一个账号进行主从同步

                  1.1、登录: sudo -u postgres psql

                 1.2、创建:  postgres=#create role replica login replication encrypted password 'replica';

             

              2、修改认证文件:pg_hba.conf

                    添加如下配置:

                             host  all  all  10.14.22..0/16 trust  # 允许连接

                             host replication  replica  10.14.22.0/16 trust # 允许replica用户复制本机数据

                            

             3、配置 postgrsql.conf

                     配置参数:

                            listen_addresses = '*'   #监听所有ip

                            archive_mode = on   #开启归档模式

                            archive_command = 'cp %p /var/lib/postgresql/12/main/%f'   #归档命令

                             wal_level = replica    # 决定多少信息写入WAL,此处为replica模式

                             max_wal_senders = 10   #最大流复制连接,一般和从服务相等

                             wal_sender_timeout = 60s    #流复制超时时间

                             max_connections = 100   #最大连接数,必须不大于从库的配置

                            

             

                 4、重启数据库:

                           命令:

                                  sudo service postgresql restart

                           Or

                                   systemctl start postgresql

                         查看状态:

                                 systemctl status postgresql

                          登录数据库: sudo -u postgres psql

                         其他命令:

                        查看当前目录大小:

                                                        du -sh

                                                         ls -aslsh

    二、从数据库【10.14.22.144】配置:

        注意点:Pg13 做主从库与pg10基本一致,在从库的配置文件上有所不同Pg12后,弃用了resovery.conf文件,不用配置;

        另外postgresql.auto.conf文件的优先级高于postgresql.conf文件

     

           1、 进入目录:cd /var/lib/postgresql

                   执行basebackup命令

                    

                    -R 表示自动生成recovery.conf文件,若不加,可以自定义该文件:

                    standby_mode = on  #表示该节点是从库

                    primary_conninfo = 'host=172.17.0.2  post=5432  user=replicator  password=12345678'

                    ###recovery_target_timelint = 'latest' #说明恢复到最新状态—— 这一行我删除了

                    

     

                   

          2、 将复制的data2 替换掉原来的data目录

                  修改配置文件 postgresql.conf

                         cd 进入到: /etc/postgresql/12/main/postgresql.conf

                 修改参数:

                         wal_level = hot_standby    #热备模式

                         max_connections = 200   #最大连接

                         hot_standby = on #说明这台机器不仅用于数据归档,还可以用于数据查询

                         max_standby_streaming_delay = 30s #流备份的最大延迟时间

                         wal_receiver_status_interval = 10s  #向主机汇报本机状态的间隔时间

                          hot_standby_feedback = on #r出现错误复制,向主机反馈

                          

    三、验证配置是否成功

                1、在主库上执行:能看到从库IP  sudo -u postgres psql

                     

                2、可以在两台服务器上执行 ps aux | grep postgres 来验证部署成功

                      

                  3、通过创建数据库来验证:

                        原理是在自主库上创建数据,然后看从库是否存在

                       主库上操作:

                           

                       在从库上查询

                          

                      

    心有猛虎,细嗅蔷薇
  • 相关阅读:
    Django之数据库表的创建和ORM相关操作
    Django后续和Ajax初识
    阿里云Maven中央仓库配置
    java/javascript 时间操作工具类
    原生javascript实现文件异步上传
    MySQL中的存储函数和存储过程的简单示例
    java同步锁的正确使用
    浅谈javascript的面向对象思想
    java与javascript对cookie操作的工具类
    json字符串与json对象的相互转换
  • 原文地址:https://www.cnblogs.com/1314520xh/p/15678809.html
Copyright © 2011-2022 走看看