Postgres主从数据同步
目录
Postgres数据备份的三种方式及比较... 1
① Archive. 1
② 流复制... 1
③ 逻辑复制... 1
流复制... 1
① 原理... 1
② 配置... 3
1. 修改主库配置文件postgresql.conf 3
2. 主库创建复制账号... 3
3. 修改主库配置文件pg_hba.conf 3
4. 重启主库服务... 4
5. 从机在线备份主库数据... 4
6. 修改从库配置文件recovery.conf 5
7. 重启从库服务... 5
8. 查看主从数据库服务,WAL日志与主从标识... 5
9. 同步测试... 6
10. 同步流复制... 7
③ 取消主从同步流复制... 8
④ 重新设置主从同步流复制... 8
Postgres数据备份的三种方式及比较
流复制也叫物理复制,可以从实例级复制出一个与主库一模一样的实例级的从库。流复制同步模式有同步、异步两种。
> 异步复制,可以做到较好的性能,而它的劣势是:主库如果宕机,或从库被激活成主库,部分 WAL 没有发送到从库,可能造成数据丢失。
> 同步复制,能够保证主库上所有事务的修改都能被传送到从库,提高了数据复制安全性的同时也降低了性能。
区别于物理复制的是物理复制是基于实例级的复制,只能复制整个PostgreSQL实例,而不能基于部分库及表。从PostgreSQL10开始,出现了基于表级别的复制,即逻辑复制。
默认状态下的流复制是以异步模式工作的,主库写WAL日志,通过wal sender进程把WAL日志发送给从库的wal receiver进程,wal receiver接收到WAL日志,并持久化到存储。
archive_command = 'test ! -f /mnt/server/archive/%f && cp %p /mnt/server/archive/%f'
listen_address:按需设置,本次测试配置为所有主机均可以访问,生产环境可以按需配置网段wal_level:设置流复制模式至少设置为replica
archive_command:WAL日志归档命令,生产环境可以将归档拷贝到对应目录或其他机器上,本次测试配置为归档到本机的另一个目录下
max_wal_senders:最大WAL发送进程数,此数量需大于等于从库个数且比max_connections小。
wal_keep_segments:pg_wal目录下保留WAL日志的个数,每个WAL文件默认16M,为保障从库能在应用归档落后时依旧能追上主库,此值建议设置较大一点。
hot_standby:此参数控制在恢复归档期间是否支持只读操作,设置为ON后从库为只读模式。
Postgres=# CREATE ROLE replicauser login replication encrypted password 'replicauser';
主库服务器192.168.20.7/24 从库服务器 192.168.20.5/24
/usr/pgsql-10/bin/pg_ctl reload -D /var/lib/pgsql/10/data/
/usr/pgsql-10/bin/pg_ctl restart -D /var/lib/pgsql/10/data/
[root@centos7min2 bin]# su postgres
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/13000028 on timeline 2
pg_basebackup: starting background WAL receiver
32368/32368 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/130000F8
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: base backup completed
-h 指定连接的数据库的主机名或IP地址,这里就是主库的ip
-U 指定连接的用户名,此处是我们刚才创建的专门负责流复制的repl用户
-F 指定生成备份的数据格式,支持p(plain原样输出)或者t(tar格式输出)
-X 表示备份开始后,启动另一个流复制连接从主库接收WAL日志,有 f(fetch)和s (stream)两种方式,建议使用s方式
-P 表示显示数据文件、表空间传输的近似百分比 允许在备份过程中实时的打印备份的进度
-v 表示启用verbose模式,命令执行过程中会打印各阶段日志,建议启用
-R 表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建
-D 指定把备份写到哪个目录,这里尤其要注意一点就是做基础备份之前从库的数据目录(/var/lib/pgsql/10/data)目录需要手动清空
该配置文件由pg_basebackup命令自动生成,也可从/usr/pgsql-10/share/
[root@centos7min2 data]# cat recovery.conf
primary_conninfo = 'user=replicauser host=192.168.20.7 port=5432 password=replicauser'
recovery_target_timeline = 'latest'
trigger_file = '/tmp/failover'
standby_mode: 设置是否启用数据库为备库,如果设置成on,备库会不停地从主库上获取WAL日志流,直到获取主库上最新的WAL日志流
primary_conninfo:设置主库的连接信息,这里设置了主库IP、端口、用户名信息等,此处是明文密码,生产环境建议配置非明文密码,而是将密码配置在另一个隐藏文件中
trigger_file: 若trigger_file指定的文件存在,recovery.conf切换为recovery.done,主从切换
pg_ctl restart 失败,通过postmaster 启动成功
bash-4.2$ ./pg_ctl restart -D /var/lib/pgsql/10/data/
pg_ctl: PID file "/var/lib/pgsql/10/data/postmaster.pid" does not exist
pg_ctl: could not read file "/var/lib/pgsql/10/data/postmaster.opts"
/usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
以上配置可实现异步流复制,pg_stat_replication表字段sync_state = async.
更新备库配置文件 recovery.conf 中的 primary_conninfo 参数,默认值为 walreceiver ,需要指定该实例的 application_name
[root@centos7min2 data]# cat recovery.conf
recovery_target_timeline = 'latest'
trigger_file = '/tmp/failover'
synchronous_standby_names = 'standby01'
synchronous_commit = remote_apply # synchronization level;
# off, local, remote_write, remote_apply, or on
如果需要取消主从同步流复制,只需将从库数据库数据目录下的recovery.conf移走或删除,再重启从库的postgres服务即可。
如果需要重新设置主从同步复制,则需要根据②配置去一步一步重新设置。如果只移除了recovery.conf,则可以将其恢复后重启主从数据库服务即可。
Postgres主从数据同步相关推荐
- 生产环境主从数据同步不了?
生产环境主从数据同步不了? 经历过程: 一般我们常常在做主从复制的时候,可能是很少遇到到错误,那都是因为,你做主从基本用的是,本地虚拟机做,或者一些测试环境做.但是当我们把主从复制部署到生成环境就出问 ...
- mysql主从同步默认延迟_减少mysql主从数据同步延迟问题的详解
基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素: 1. 网络延迟 2. master负载 3. slave负载 一般的做法是 ...
- 减少mysql主从数据同步延迟问题的详解
基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素: 1. 网络延迟 2. master负载 3. slave负载 一般的做法 ...
- DNS服务器(DNS服务器构建,特殊的解析记录,多域名DNS服务器架构,DNF主从架构,DNS主从数据同步)
学前提示: 需要两台虚拟机 虚拟机A:主机名位svr7 IP:192.168.4.7 虚拟机B:主机名pc207 IP:192.168.207 一.进行环境的设置 1.修改两台虚拟机的SELinux ...
- windows配置mysql8.0主从数据库,主从数据同步。
本地配置两个mysql8.0数据库用作主从数据库,同一个服务器安装多个mysql服务,只要端口不一样. 1.下载安装包 mysql下载地址:https://dev.mysql.com/download ...
- Redis 主从数据同步
Redis 数据同步 全量同步 redis 从节点第一次连接主节点采用的是全量同步,包括两个阶段: 第一阶段: 从节点执行slaveof命令和主节点建立了连接,然后发送同步请求: 主节点收到消息判断是 ...
- mysql主从同步当天数据,mysql主从数据同步
一,安装好主数据库和从数据库,此处省略 我已经准备好了以下数据库 主: centos 7 mysql 5.7 ip 192.168.1.2 从: centos 7 mysql 5.7 ip 192.1 ...
- MySql主从数据同步的执行过程
从库验证并连接到主库 从库会创建一个IO线程和一个SQL线程 , 然后请求IO线程连接到主库 , 同时主库会新建一个线程用来给从库传日志 从库的IO线程请求主库的二进制日志和上次更新位置 , 并将得到 ...
- Redis 主从架构数据同步
Redis 主从架构图 主从架构能够很大提升并发能力,master 节点负责写数据,slave 节点负责读数据,这样就涉及到 master 和 slave 数据同步的一个过程 一起来看一下数据是如何同 ...
最新文章
- 一步一步实现自己的模拟控件(9)——消息处理
- java获取文件的所有者_java获取文件夹下所有文件的名称 | 星尘
- 在html中使用thymeleaf编写通用模块
- 【Laravel】使用mews/captcha验证码图片不显示,报错 Call to undefined function Intervention\Image\Gd\imagettfbbox()
- 一个层动态放大的例子的一些知识点
- 工程师最重要的能力是什么
- jdk8和hotspot_HotSpot的-XshowSettings标志的简单性和价值
- 基于图嵌入的兵棋联合作战态势实体知识表示学习方法
- [AtCoder-ARC073F]Many Moves
- js时间和时间戳之间如何转换(汇总)
- java 临时文件 删除_Java临时文件何时被删除?
- 上传pdf图片 文件
- 企业商誉管理系统(业务开展)
- 查看计算机会议 论文,查看计算机视觉会议论文开会的地点
- [LiteratureReview]A Collaborative Visual SLAM Framework for Service Robots
- 锁记——偏向锁注定过不好这一生
- Android:有关下拉菜单导航的学习(供自己参考)
- 文光伏领军企业转型热切拥抱互联网
- Android11对比IOS14,iPhone11升级至iOS14,对比苹果iOS13,迎来3大新变化
- 深度好文丨读完此文,就知道Hadoop了!