PostgreSQL主从数据库数据同步

运行环境

操作系统:Debian 11.5
数 据 库:PostgreSQL 14.6
主数据库:192.168.8.68
从数据库:192.168.8.69

使用apt-get安装postgresql,安装方法可以参考 https://blog.youkuaiyun.com/itbs/article/details/127909359?spm=1001.2014.3001.5501
官方推荐是用源码安装,优点是可以指定安装位置,实现应用程序、配置文件、数据文件、日志文件在一个文件夹里。用apt-get安装文件位置是分散的,应用程序在/usr/lib/postgresql,配置文件在 /etc/postgresql,数据文件在 /var/lib/postgresql,安装过程比较简单

主库操作

1、创建同步账号

创建同步账号 repl,密码 repl

	su postgres
	psql
	create role repl login replication encrypted password 'repl';
2、修改pg_hba.conf

文件位置 /etc/postgresql/14/main 。在#replication下,增加下面内容

host	replication	repl	192.168.8.69/32		trust
3、修改postgresql.conf

文件位置 /etc/postgresql/14/main 。增加下面内容

wal_level = replica
archive_mode = on
archive_command = 'cp %p /opt/postgresql/pg_archive/%f'
max_wal_senders = 8 
wal_sender_timeout = 60s

/opt/postgresql/pg_archive 这个路径中的文件夹要手动创建一下

4、主库重启
	systemctl restart postgresql

从库操作

1、测试从库访问主库
	psql -h 192.168.8.68 -U postgres

正确的情况下,输入密码即可访问

2、查询数据库的数据文件位置
	su postgres
	psql
	show data_directory;

在这里插入图片描述

查看后用exit退出psql命令行。如果清楚文件所在位置,此步骤可以略过。

3、停止从库
	systemctl stop postgresql

如果使用posgres用户执行,需要输入root密码,用root用户执行不需要

4、清空从库数据库文件
	rm -rf   /var/lib/postgresql/14/main/*  
5、从主库拉取数据
	pg_basebackup -h 192.168.8.68 -D /var/lib/postgresql/14/main -p 5432 -U repl -Fp -Xs -Pv -R --checkpoint=fast

-D 后面是主库数据库文件路径,如果配置了数据库文件地址,需要修改为配置后的路径
在这里插入图片描述

6、修改postgresql.conf
primary_conninfo = 'host=192.168.8.68 port=5432 user=repl password=repl'
recovery_target_timeline = latest 
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on
max_connections = 200  #要比主库连接数大,默认连接数是100
max_worker_processes = 20
7、启动从库
	systemctl start postgresql

同步状态查询

在主库执行,查询从库同步状态。可以新建表或者添加数据进行测试。

	select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;

在这里插入图片描述

### PostgreSQL 主从数据库流复制备份配置教程 以下内容详细介绍了如何在 PostgreSQL 主从数据库中实现流复制备份,涵盖关键步骤和注意事项。 #### 1. 环境准备 确保主服务器和从服务器均已安装 PostgreSQL,并且版本一致[^4]。如果版本不一致,可能会导致兼容性问题。此外,确保两台服务器之间的网络连接正常。 #### 2. 配置主服务器 主服务器需要进行以下配置以支持流复制: ##### 2.1 修改 `postgresql.conf` 编辑主服务器的 `postgresql.conf` 文件,启用流复制功能: ```plaintext wal_level = replica synchronous_commit = on max_wal_senders = 3 wal_keep_segments = 64 archive_mode = on archive_command = 'cd .' # 如果不需要归档,则可以保留此设置 ``` ##### 2.2 修改 `pg_hba.conf` 编辑主服务器的 `pg_hba.conf` 文件,允许从服务器通过复制用户访问: ```plaintext host replication repuser 192.168.1.0/24 md5 ``` 上述配置允许来自 `192.168.1.0/24` 网段的 `repuser` 用户进行复制操作[^3]。 #### 3. 配置从服务器 从服务器需要执行以下操作以完成流复制备份: ##### 3.1 使用 `pg_basebackup` 备份主服务器数据 在从服务器上,使用 `pg_basebackup` 命令从主服务器备份数据: ```bash pg_basebackup -h <主服务器IP> -U repuser -D /home/postgres/opt/data -Fp -Xs -P ``` 上述命令会将主服务器的数据备份到指定目录 `/home/postgres/opt/data` 中[^1]。 ##### 3.2 创建 `recovery.conf` 在从服务器的 `data` 目录下创建 `recovery.conf` 文件,内容如下: ```plaintext standby_mode = 'on' primary_conninfo = 'host=<主服务器IP> port=5432 user=repuser password=yourpassword' trigger_file = '/tmp/postgresql.trigger' ``` 上述配置指定了主服务器的连接信息以及触发文件路径[^3]。 #### 4. 启动从服务器 启动从服务器的 PostgreSQL 实例后,它会自动连接到主服务器并开始流复制。可以通过以下命令检查状态: ```sql SELECT * FROM pg_stat_replication; ``` 该查询会在主服务器上显示从服务器的连接状态[^2]。 #### 5. 测试流复制 在主服务器上插入或更新数据后,检查从服务器是否同步了相同的数据。如果数据一致,则说明流复制配置成功。 #### 6. 常见问题及解决方法 - **错误:无法连接到主服务器** 检查主服务器的 `pg_hba.conf` 文件是否正确配置了从服务器的 IP 地址和用户权限。 - **错误:WAL 日志不足** 增加 `wal_keep_segments` 的值以保留更多 WAL 日志文件[^3]。 - **性能问题** 调整 `synchronous_commit` 参数为 `off` 或 `local`,以提高性能。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值