PostgresSQL 主从搭建步骤

由于工作需要,最近开始接触各种数据库,并尝试各种数据库产品的高可用方案。今天分享的是postgresSQL的主从配置,其实还是蛮简单的,跟随本文的步骤,保证能实现PG主从的搭建。

1. 安装环境

192.168.0.136 主库
192.168.0.160 从库
PORT: 5432
USR: postgres

2. 主库已经运行一段时间,检查主库的version,保证主从数据库的version相同。

# psql --version
psql (PostgreSQL) 9.4.11
 
# rpm -qa|grep postgres
postgresql94-libs-9.4.11-1PGDG.rhel6.x86_64
postgresql94-server-9.4.11-1PGDG.rhel6.x86_64
postgresql94-9.4.11-1PGDG.rhel6.x86_64

3. 在从库上安装相同版本的软件

检查安装情况,已经安装和primary相同的软件版本

# rpm -qa|grep postgres
postgresql94-libs-9.4.11-1PGDG.rhel6.x86_64
postgresql94-server-9.4.11-1PGDG.rhel6.x86_64
postgresql94-9.4.11-1PGDG.rhel6.x86_64

4. 查询主库的数据库位置

# su - postgres
$  echo $PGDATA
/var/lib/pgsql/9.4/data
$ cd /var/lib/pgsql/9.4/data
$ ls
base    pg_clog      pg_hba.conf    pg_log      pg_multixact
pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION 
postgresql.auto.conf  postmaster.opts global  pg_dynshmem  pg_ident.conf 
 pg_logical  pg_notify    pg_serial    pg_stat      pg_subtrans 
 pg_twophase  pg_xlog    postgresql.conf      postmaster.pid

确认配置文件位置

postgres=# show config_file;
  config_file             
-----------------------------------------
 /var/lib/pgsql/9.4/data/postgresql.conf

查看数据文件目录

postgres=# show data_directory;
    data_directory     
-------------------------
 /var/lib/pgsql/9.4/data

5. 准备修改主库的参数文件,先查询一下pg_hba.conf已有的参数内容

$ cat pg_hba.conf|grep -v '^#'
local  all            all                                    peer
host    all            all            0.0.0.0/0            trust
host    all            all            ::1/128            ident

6. 在主库的pg_hba.conf中添加

$ more pg_hba.conf
host    replication    replica    192.168.0.160                md5

这样,就设置了replica这个用户可以从192.168.0.160 对应的网段进行流复制请求。

7. 在主库给postgres设置密码,登录和备份权限。

$psql
postgres# CREATE ROLE replica login replication encrypted password 'replica123'

8. 修改postgresql.conf,注意设置下下面几个地方:

wal_level = hot_standby      # 这个是设置主为wal的主机
max_wal_senders = 10          # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 256        # 设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s      # 设置流复制主机发送数据的超时时间
max_connections = 100          # 这个设置要注意下,从库的max_connections必须要大于主库的
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/9.4/archive/%f'

9. 创建对应archive log存放路径

mkdir -p /var/lib/pgsql/9.4/archive/

10. 重启主库,让配置生效

# service postgresql-9.4 start
Starting postgresql-9.6 service:                          [  OK  ]

11. 在从库远程连接主数据库,验证replica用户是否可以正常访问

psql -h IP-address -p 5432 dbname usename 
psql -h 192.168.0.136 -p 5432 postgres replica

12. 然后在主库做一次基础备份(后面的Hot-standby主要使用data目录下文件):

postgres=# SELECT pg_start_backup('bak20170905');
$tar czvf /var/lib/pgsql/9.4/backups/backup_data.tar.gz.20170905 /var/lib/pgsql/9.4/data
postgres=# SELECT pg_stop_backup();

13. 将备份文件sftp到从库,并解压,替换原有的data目录

cd  /var/lib/pgsql/9.4/
mv data data_bk
mv backup_data.tar.gz.20170905 backup_data.tar.gz
tar -xzvf backup_data.tar.gz

14. 删除一些就的身份信息,归档日志文件等

rm -rf data/pg_xlog/
mkdir -p data/pg_xlog/archive_status
rm data/postmaster.pid

15. 查找并拷贝recovery.conf.sample文件到data目录下

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/207aad3f80760a4b9441d33fc2534e26.html