PostgreSQL搭建主备流复制

主备复制架构是数据库使用最广泛的一种架构,当主库发生故障时可以将备库提升为主,快速恢复业务。主备架构另外一个功能是提供负载均衡,读业务可以路由到备库,减少主库的负载。本文主要介绍PostgreSQL主备流复制的搭建方法。

  • PostgreSQL版本:11.5
  • 2台机器,搭建PG主备流复制
    • 主库:192.168.56.101
    • 备库:192.168.56.102
一、环境准确(主备库都要执行)

创建pg用户
useradd pg

创建PG数据目录
mkdir -p /data/pg/
chown -R pg:pg /data/pg

切换到pg用户
su – pg

二、创建PG主库(主库执行)

初始化主库:
initdb -D /data/pg

修改主库配置文件:
vim /data/pg/postgresql.conf

listen_addresses = '*'
port = 5432
max_wal_senders = 10
wal_level = replica

修改主库配置文件,添加配置项:
vim /data/pg/pg_hba.conf

host replication all 0.0.0.0/0 md5

启动主库:
pg_ctl -D /data/pg start

创建复制账号:
CREATE USER repl replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD ‘123456’;

三、创建主库的基础备份(备库执行)

创建基础备份到本地:
pg_basebackup -h 192.168.56.101 -U repl -W -p 5432 -D /data/pg -l backup_label

-W参数在终端提示符下输入密码。

设置备库配置文件:
vim /data/pg/postgresql.conf

port = 5432
hot_standby = on

vim /data/pg/recovery.conf

standby_mode = 'on'
primary_conninfo = 'user=repl host=192.168.56.101 password=123456 port=5432 sslmode=disable sslcompression=0 target_session_attrs=any'

启动备库:
pg_ctl -D /data/pg start

四、测试流复制

连接到主库(192.168.56.101),创建表,写入数据:
psql postgres

postgres=# create database db;
postgres=# \l
postgres=# \c db
db=# create table tb(id int);
db=# insert into tb select 1;
db=# exit

连接到备库(192.168.56.102),查询数据:
psql postgres

postgres=# \l
postgres=# \c db
db=# select * from tb;

发表评论