PG数据库异步流复制
PG数据库异步流复制
背景说明
- 最近想进行一个数据库高可用课题的研究.
- 因为之前某种原因,这次选择的是PG数据库.
- 为了简单起见, 暂时采用PG异步流复制的场景.
- 这次仅是为了测试, 不考虑高可用绿色切换的场景.
设置过程
- 本次学习自如下网站:
http://blog.itpub.net/26442936/viewspace-2771065/
- 原作者对数据非常有研究, 这里仅是进行一次简单学习与整理.
设置过程
- 安装PG数据库.
yum localinstall *.rpm
- 需要主要主从库都能够准确安装上数据库.
- 第一个数据库需要执行创建操作
# 本次是 PG13为例进行说明
systemct status postgresql-13
# 查看数据库的信息
#一般启动脚本为 /usr/pgsql-13/bin/ 数据目录为: /var/lib/pgsql/13/data
su - postgres
# 切换用户后进行数据库初始化的操作
cd /usr/pgsql-13/bin
./initdb -D /var/lib/pgsql/13/data
设置过程
- 数据库安装完成之后需要进行流复制的初始化设置.
- 设置的事项应该不需要太多.
#修改 postgresql.conf的设置
#主要有两处
listen_addresses ='*'
wal_level = replica
#修改pg_hba.conf的配置文件
host replication repl the_Slave_server_ip/32 md5
host replication repl the_master_server_ip/32 md5
# 注意 repl 是需要创建一个数据库的用户
# 需要使用pgsql 命令执行下来.
create role repl login replication encrypted password 'yourpassword';
设置过程
- 需要设置.pgpass 的默认配置
vim /postgres/can/rw/.pgpass
#添加内容为:
The_ip_of_master:5432:replication:repl:$yourpassword
# 注意这个文件需要让备份库可以读写.
- 设置完成后需要执行一下重启操作
# 注意是在主库
systemctl restart postgresql-13
设置过程
- 主库备份
pg_basebackup -h The_ip_of_master -U repl -D /var/lib/pgsql/13/databackup -Xs -P -R
# 注意需要使用非127.0.0.1的ip不然容易出问题.
# 这里会复制一下别人的专门说法.
- 参数说明
# /var/lib/pgsql/13/databackup是从库创建一个新目录,用来恢复主库的cluster databases
# -h 主库ip地址
# -U 指定连接主库的用户
# -D 从库复制数据的目录
# -Xs 主库备份时,以流式传输WAL日志内容
# -P 进度报告
# -R 创建一个standby.signal空文件,用于在集群中激活standby server,有这个standby.signal文件即为备库;
另外也可以把主库一些连接信息primary_conninfo写入备库postgresql.auto.conf
设置过程
- 从库的处理
注意需要将上一步 -D 产生的目录 复制到从数据库的特定目录上面
scp -r /var/lib/pgsql/13/databackup postgres@10.110.82.185:/var/lib/pgsql/13
注意文件目录的权限和属主必须保持准确.
注意需要修改启动脚本. 修改 systemd 的service 文件里面的 数据目录
处理步骤与前面相同
systemctl status postgresql-13
vi /usr/lib/systemd/system/postgresql-13.service
修改文件.
添加核心配置文件.
设置过程
- 注意 pg_basebackup 会产生一个文件:
standby.signal
注意包含这个文件的数据目录 在PG数据库启动之后
会提示没有写入权限
如果需要改为主库, 需要移除这个文件
注意这个文件一般是空的, 需要从 postgresql.auto.conf
复制配置文件到此目录才可以实现.
注意需要注意文件的权限,避免文件丢失权限导致无法启动.
设置过程
- 启动从库
systemctl restart postgresql-13
- 验证流复制是否准确
# 主库查询
select * from pg_stat_replication;
# 从库查询
select * from pg_stat_wal_receiver;
简单验证
- 主库插入从库验证
#主库设置:
create table zhaobsh (master varchar(200))
insert into zhaobsh values ('主库自主插入')
#从库查询:
select * from zhaobsh
# 验证能够查询出结果来
PG数据库异步流复制的更多相关文章
- postgresql数据库异步流复制hot standby环境搭建
生命不息,test不止. 最近组里面修改了几个postgresql的bug,要进行回归测试,除了前面提到的WAL的RT测试和Mirroring Controller的RT测试,还要测试下postgre ...
- PgSQL · 特性分析 · PG主备流复制机制
原文地址:http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...
- Postgressql高可用(pgpool+异步流复制)
文档结构: 由于博主之前是Oracle dba,oracle 高可用一般是rac,以及搭建ADG,一个是基于实例的高可用,一个是基于数据的容灾,甚至也有rac+adg的方式.Postgres有同步和异 ...
- postgresql 异步流复制hot standby搭建
先说说环境,主从库版本都是9.5,主库在CentOS物理机上,从库在Ubuntu虚拟机上 一.主库上的操作: 1.添加同步访问规则: host replication dbuser ...
- Postgresql 9.6 搭建 异步流复制 和 同步流复制 详细教程
Basic Replication If you’re feeling overwhelmed, try setting up a slave to see how easy it is! We’ll ...
- PostgreSQL异步主从流复制搭建
1 总体规划 Master库 Slave库 操作系统 CentOS Linux release 7.5.1804 CentOS Linux release 7.5.1804 处理器 1 1 内存 ...
- PostgreSQL流复制
原理机制 参考--https://yq.aliyun.com/articles/51009 主备总体结构 PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组 ...
- 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
前言 在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应.大家发现了另一款开源的数据库: PostgreSQL. 虽然centos自带版本9.2也可以用,但是最近的几次 ...
- PostgreSQL流复制记录
参考了别人的部分,添加了自己在实践中的内容,仅做记录. 1.同步流复制中 主机操作 1.1postgresql.conf wal_level = hot_standby # 这个是设置主为wal的主机 ...
- PostgreSQL主备流复制机制
原文出处 http://mysql.taobao.org/monthly/2015/10/04/ PostgreSQL在9.0之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在 ...
随机推荐
- 基于Fabric的性能测试与调优实践
摘要:本文聚焦Fabric核心业务,构建一个测试模型,对社区原生的Fabric和华为云区块链(基于Fabric)进行实测,识别社区原生Fabric的性能瓶颈,并尝试通过华为区块链提供的动态伸缩.快速P ...
- 华为云登顶HotpotQA多跳知识推理问答评测
日前,华为云在知识计算领域的多跳知识推理问答取得重大进展.基于自然语言处理领域的领先技术积累,华为云语音语义创新Lab联合华为诺亚方舟实验室在国际权威的HotpotQA评测Fullwiki Setti ...
- 带你了解数据库的“吸尘器”:VACUUM
摘要:在GaussDB(DWS)中,VACUUM的本质就是一个"吸尘器",用于吸收"尘埃". 下面将从VACUUM的作用.用法.原理等方面进行介绍. 在Gaus ...
- 上手测试GaussDB(for Redis) 和开源 Redis,只为推荐质优价廉的Redis
摘要:一文带你全方位测评 GaussDB(for Redis) 和开源 Redis. 本文分享自华为云社区<程序员硬核测评:全方位测评 GaussDB(for Redis) 和开源 Redis& ...
- 华为云企业级Redis揭秘第15期:Redis为什么需要强一致?
摘要:其实开源Redis的弱一致性已经不满足很多应用场景的诉求.怎么,不信? 本文分享自华为云社区<华为云企业级Redis揭秘第15期:Redis为什么需要强一致?>,作者: GaussD ...
- vue2升级vue3:this.$createElement is not a function—动态组件升级
this.$createElement vue2 动态组件加载,this.$createElement非常好使!比如: import { Component as tsc } from 'vue-ts ...
- 用 docker 部署 folkmq 消息中间件
docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.0.19
- Docker 安装 kafka
简单安装为了集成 SpringBoot,真实使用,增加增加更多配置,比如将log映射出来 1.安装 zookeeper [root@centos-linux ~]# docker pull wurst ...
- SpringBoot 自定义初始化任务 Runner
在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.可以通过实现Runner接口完成以上工作. 两者只是参数上的区别 方式一 实现 CommandLineRunner 接口 ...
- C# 和 java 基本数据类型
C# 和 java 基本数据类型 C#类型 java类型 描述 默认值 bool boolean 布尔值 False byte byte 8 位无符号整数 0 char char 16 位 Unico ...