Postgresql12主备流复制操作过程以及原理【pg_basebackup】
原理介绍:流复制(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】的更多相关文章
- PostgreSQL主备流复制机制
原文出处 http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...
- PgSQL · 特性分析 · PG主备流复制机制
原文地址:http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(异机复制)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- KingbaseES V8R6集群部署案例之---Windows环境配置主备流复制(同一主机)
案例说明: 目前KingbaseES V8R6的Windows版本不支持数据库sys_rman的物理备份,可以考虑通过建立主备流复制实现数据库的异机物理备份.本案例详细介绍了,在Windows环境下建 ...
- KingbaseES R6 主备流复制集群创建级联复制案例
案例环境: 数据库: test=# select version(); version -------------------------------------------------------- ...
- pgpool-II主备流复制的架设
1.环境 OS: CentOS release 6.4 (Final) DB: postgresql 9.3.6 pgpool服务器: pgpool 172.16.0.240 数据库主服务器:mast ...
- KingbaseES R6 手工创建主备流复制案例
数据库版本: TEST=# select version(); version ---------------------------------------------------------- ...
- [原创] PostgreSQL Plus Advanced Server在Windows中配置双机热备流复制
一.系统环境 操作系统:Windows Server 2003/2008 两个节点分别为master与slave. 主节点master:172.27.19.28 备机点slave:172.27.19. ...
- PostgreSQL流复制
原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...
- KingbaseES R3 集群删除test库导致主备无法切换问题
案例说明: 在KingbaseES R3集群中,kingbasecluster进程会通过test库访问,连接后台数据库服务测试:如果删除test数据库,导致后台数据库服务访问失败,在集群主备切换时,无 ...
随机推荐
- 【Abaqus】*Solid Section定义复合材料
*SOLID SECTION 介绍 *solid section 用来定义单元的材料属性,材料方向等信息: solid (continuum) elements infinite elements a ...
- Windows 提权-服务_弱服务权限
本文通过 Google 翻译 Weak Service Permissions – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行 ...
- 记录一个命令 可以在linux很方便的安装一些软件
小鱼的一键安装系列 wget http://fishros.com/install -O fishros && . fishros 一键安装:ROS(支持ROS和ROS2,树莓派Jet ...
- 【Linux】远程连接Linux虚拟机(MobaXterm)
[Linux]远程连接Linux虚拟机(MobaXterm) 零.原因 有时候我们在虚拟机中操作Linux不太方便,比如不能复制粘贴,不能传文件等等,我们在主机上使用远程连接软件远程连接Linux虚拟 ...
- 【Python】解决“Tk_GetPixmap: Error from CreateDIBSection”闪退问题
解决Python使用Tkinter的Notebook切换标签时出现的"Tk_GetPixmap: Error from CreateDIBSection 操作成功完成"闪退问题 零 ...
- 移动应用APP购物车(店铺系列二)
今天还是说移动app开发,店铺系列文章,我们经常去超市使用购物车,即一个临时的储物空间,用完清空回收.我大兄弟说, 平时很忙,录入订单的目录很多,临时有事回来要可以继续填写,提交订单后才算结束,这就是 ...
- pg获取tree完整的数据
一个表: DRGCode DRGParend DRGName 这样一个tree表结构. 任意查询string,希望得到一个查询完整的tree.怎么做? SELECT * FROM "DRG& ...
- DevOps与:cloud,IaC,Container,Microservices, Serverless
本文我们来理一理当下最火的技术与DevOps的关系,2020年可以考虑从如下的几方面来改进DevOps. DevOps代表开发和运营.它的目标是将开发.质量保证和运营(部署和集成)合并到一个单一的.连 ...
- STM32_RTOS_V2编程模板1-消息队列
#pragma region QUEUE1 // 1DEFINE osMessageQueueId_t queueDemo1 = NULL; // 2INIT queueDemo1 = osMessa ...
- 使用搜索引擎时如何排除一些垃圾站点,比如csdn.net
使用搜索引擎时需要排除一些垃圾站点,比如csdn.net时,可以在关键词后面加上-site:csdn.net: stable diffusion docker部署TensorFlow 教程 -site ...