暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL异步流复制(一主一从)

原创 alexlei_liu 2024-08-28
213

PostgreSQL异步流复制(一主一从)

1、主库创建流复制的用户

postgres=# CREATE ROLE replica login replication encrypted password 'replica';
CREATE ROLE
postgres=#

2、主库修改pg_hba.conf文件,允许备库IP通过复制用户访问数据库

# replication privilege.
#主库
host   replication     replica         10.240.1.12/32         md5
#从库
host   replication     replica         10.240.1.13/32         md5

#这里配置两条,因为主从可以相互切换的,主要为了保持主从配置一致性。

3、主库修改postgresql.conf文件

listen_addresses = '*'
max_connections = 4000
#建议物理内存的四分之一
shared_buffers = 4GB

wal_level = replica
wal_buffers = 16MB
max_wal_size = 2GB
min_wal_size = 80MB

archive_mode = on
archive_command = 'test ! -f /home/postgres/pg14/archive_wals/%f && cp %p /home/postgres/pg14/archive_wals/%f'

wal_keep_size = 2GB
hot_standby = on
hot_standby_feedback = on

#针对分区表的优化
constraint_exclusion = partition

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%u.log'
log_rotation_age = 1d
log_truncate_on_rotation = on

log_min_duration_statement = 3s
idle_in_transaction_session_timeout = 5min

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
pg_stat_statements.track_utility = on
pg_stat_statements.save = on


4、停止备库,删除相应的数据文件

pg_ctl stop -m fast
rm -rf /usr/local/pg14/data

5、备库上通过pg_basebackup命令对主库进行基础备份

pg_basebackup -h 10.240.1.10 -p 5432 -U replica --password -X stream -Fp --progress -D $PGDATA -R

6、启动备库

pg_ctl start

7、主库查看数据库复制信息

psql
select * from pg_stat_replication
或者
ps

至此,pg数据库的异步流复制(一主一从)搭建完毕。

8、压测

使用pgbench对主从进行压测

#创建数据库
psql
create database test_db;

#初始化压测数据
pgbench -i -s 100 -F90  -d test_db

#压测
pgbench -c 10 -T 60 -d test_db

pgbench -c 10 -j 10 -T 60 -d test_db

pgbench -b select-only -c 40 -j 10 -T 60 -d test_db
最后修改时间:2024-08-30 15:09:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论