原理介绍:流复制(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、通过创建数据库来验证:

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

                   主库上操作:

                       

                   在从库上查询

                      

                  

Postgresql12主备流复制操作过程以及原理【pg_basebackup】的更多相关文章

  1. PostgreSQL主备流复制机制

    原文出处 http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...

  2. PgSQL · 特性分析 · PG主备流复制机制

    原文地址:http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...

  3. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  4. KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(同一主机)

    案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...

  5. KingbaseES R6 主备流复制集群创建级联复制案例

    案例环境: 数据库: test=# select version(); version -------------------------------------------------------- ...

  6. pgpool-II主备流复制的架设

    1.环境 OS: CentOS release 6.4 (Final) DB: postgresql 9.3.6 pgpool服务器: pgpool 172.16.0.240 数据库主服务器:mast ...

  7. KingbaseES R6 手工创建主备流复制案例

    ​ 数据库版本: TEST=# select version(); version ---------------------------------------------------------- ...

  8. [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制

    一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...

  9. PostgreSQL流复制

    原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...

  10. KingbaseES R3 集群删除test库导致主备无法切换问题

    案例说明: 在KingbaseES R3集群中,kingbasecluster进程会通过test库访问,连接后台数据库服务测试:如果删除test数据库,导致后台数据库服务访问失败,在集群主备切换时,无 ...

随机推荐

  1. 面试题 17.12. BiNode

    地址:https://leetcode-cn.com/problems/binode-lcci/ <?php /** 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,righ ...

  2. SQL注入之WAF绕过注入

    绕过WAF: WAF防御原理: 简单来说waf就是解析http请求,检测http请求中的参数是否存在恶意的攻击行为,如果请求中的参数和waf中的规则库所匹配,那么waf则判断此条请求为攻击行为并进行阻 ...

  3. 使用SVM在数字验证码识别中的应用研究课程报告

    第1章 概要设计 1.1 设计目的 支持向量机作为一类强大的监督学习模型,以其出色的泛化能力,在手写数字识别.面部检测.图像分类等多个领域展现出了其优越性.其在处理小样本.非线性及高维模式识别任务中表 ...

  4. python正则表达式笔记2

    由 '\' 和一个字符组成的特殊序列在以下列出. 如果普通字符不是ASCII数位或者ASCII字母,那么正则样式将匹配第二个字符.比如,\$ 匹配字符 '$'. \number匹配数字代表的组合.每个 ...

  5. 如何利用 PostgreSQL 的 JSONB API 作为扩展的轻量级 JSON 解析器

    前言 在基于 C 语言的 PostgreSQL 扩展开发中,您可能会遇到需要处理 JSON 等结构化数据的情况.通常,您可能会在扩展中引入第三方 JSON 解析库,例如 cJSON 或 libjans ...

  6. 05 过拟合(over-fitting)与正则化(regularization)

    1. 什么是Overfitting 我们希望神经网络模型能够找到数据集中的一般规律,从而帮助我们预测未知数据.这个过程是通过不断地迭代优化损失函数(也就是预测值和实际值的误差)而实现的.然而随着误差进 ...

  7. RabbitMQ 消息实现过程+事务+消息确认

    服务端(生产者) 1.引用 rabbitmq 包 2.建立连接工厂 connectionfactory 3.创建 频道 createchannel 4.在频道中 绑定消息队列 5.发布basicpub ...

  8. 【单片机】滑稽AT89C52表情实现

    [单片机]滑稽AT89C52表情实现 零.原因 在群里看到了这样一个表情: 这是用51做的,刚好开发板上有8个小灯,想实现一下. 一.代码 新建工程,写入如下代码: #include<reg52 ...

  9. Redis 应用场景之短信验证码

    应用场景 以 OSChina 账号注册 为例...讲错了请留言批评指正... 逻辑场景 用户操作: 用户输入手机号, 然后点击获取验证码. 前端逻辑: ajax 发起请求, 参数带上手机号. 后端逻辑 ...

  10. javascript 判断浏览器

    navigator.userAgent 通常我们可以通过navigator.userAgent只读属性来获取浏览器的一些信息,算是原生方法吧. jquery -jquery1.9 版本可以通过$.br ...