ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PostgreSQL10.6主从复制搭建

2020-01-17 11:02:17  阅读:280  来源: 互联网

标签:主从复制 postgres lib pgsql replica var PostgreSQL10.6 root 搭建


1、环境

操作系统版本:CentOS Linux release 8.0.1905 (Core)

PostgreSQL版本:10.6
主机:

    test1 192.168.1.11
    test2 192.168.1.12
    test3 192.168.1.13

2、在3台机器安装并初始化PostgreSQL

[root@test1 ~]# yum install postgresql-server -y
[root@test1 ~]# postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

3、主库配置
编辑主库配置文件

[root@test1 ~]# vim /var/lib/pgsql/data/postgresql.conf
listen_addresses = '192.168.1.11'
wal_log_hints = on
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/pg_archive/%f' 

配置认证文件

[root@test1 ~]# vim /var/lib/pgsql/data/pg_hba.conf
#追加三行
host    replication     replica         192.168.1.11/32         md5
host    replication     replica         192.168.1.12/32         md5
host    replication     replica         192.168.1.13/32         md5

创建pg_archive目录

[root@test1 ~]# mkdir -p /var/lib/pgsql/pg_archive
[root@test1 ~]# chown postgres:postgres /var/lib/pgsql/pg_archive

配置recovery.conf

[root@test1 ~]# vim /var/lib/pgsql/data/recovery.bak
standby_mode = on
primary_conninfo = 'host=192.168.1.11 port=5432 user=replica password=replica'
recovery_target_timeline = 'latest'
[root@test1 ~]# chown postgres:postgres /var/lib/pgsql/data/recovery.bak

新建pgpass文件

[postgres@test1 ~]$ vim ~/.pgpass
192.168.1.11:5432:replication:replica:replica
192.168.1.12:5432:replication:replica:replica
192.168.1.13:5432:replication:replica:replica
[root@test1 ~]# chown 600 /var/lib/pgsql/.pgpass

启动数据库,关闭服务

[root@test1 ~]# systemctl start postgresql
[root@test1 ~]# systemctl stop firewalld.service 

创建同步用户

[root@test3 ~]# su - postgres
[postgres@test3 ~]$ psql 
psql (10.6)
Type "help" for help.

postgres=# create role replica login replication encrypted password 'replica';
CREATE ROLE
postgres=# \q
[postgres@test1 ~]$ 

4、配置两台从库
从主库复制备份过来

[root@test2 ~]# rm -rf /var/lib/pgsql/data/*
[root@test2 ~]# pg_basebackup -h 192.168.1.11 -p 5432 -U replica -F p -P -D /var/lib/pgsql/data/
Password:  replica
22797/22797 kB (100%), 1/1 tablespace
[root@test2 ~]# chown postgres:postgres -R /var/lib/pgsql/data

重命名recovery配置文件

[root@test2 ~]# mv /var/lib/pgsql/data/recovery.bak /var/lib/pgsql/data/recovery.conf

新建pgpass文件

[root@test2 ~]# su - postgres
[postgres@test2 ~]$ vim ~/.pgpass
192.168.1.11:5432:replication:replica:replica
192.168.1.12:5432:replication:replica:replica
192.168.1.13:5432:replication:replica:replica
[root@test2 ~]# chown 600 /var/lib/pgsql/.pgpass

创建pg_archive目录

[root@test2 ~]# mkdir -p /var/lib/pgsql/pg_archive
[root@test2 ~]# chown postgres:postgres /var/lib/pgsql/pg_archive

修改监听ip地址,并启动服务

[root@test2 ~]# vim /var/lib/pgsql/data/postgresql.conf
listen_addresses = '192.168.1.12'
[root@test2 ~]# systemctl start postgresql
[root@test2 ~]# systemctl stop firewalld.service

在test3重复做一次
5、测试主从同步状态
在主库查看同步节点

[postgres@test1 ~]$ psql 
psql (10.6)
Type "help" for help.
postgres=# select * from pg_stat_replication;

PostgreSQL10.6主从复制搭建

创建测试库,然后检查两个从库是否同步
在主库操作

postgres=# CREATE DATABASE test_db;
CREATE DATABASE

查看从库
test2同步了
PostgreSQL10.6主从复制搭建
test3同步了
PostgreSQL10.6主从复制搭建

搭建完成

标签:主从复制,postgres,lib,pgsql,replica,var,PostgreSQL10.6,root,搭建
来源: https://blog.51cto.com/niubdada/2467388

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有