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;

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

购物车