1. 程式人生 > >生產環境postgresql主從環境配置

生產環境postgresql主從環境配置

red ase rim source eba 開機啟動 receive delay nco

主從服務器IP:

192.168.11.131 postgreSQL master

192.168.11.132 postgreSQL slave


服務器系統版本:

# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.2 (Maipo)


PG版本:

系統默認9.2


1、安裝軟件、配置環境變量

主從服務器:

# yum install postgresql -y

# yum install postgresql-server -y


# mkdir /data/pg_data

# chown postgres:postgres /data/pg_data


# vi /etc/profile

export PGDATA=/data/pg_data


# source /etc/profile


主服務器:

2、初始化數據庫、啟動數據庫服務並設置為開機啟動

# initdb -D /data/pg_data


註意:

-D是指定數據存放目錄,默認情況下是存放在/var/lib/pgsql/data目錄下,但是生產環境通常有單獨的數據存放分區。


# su postgres

bash-4.2$ pg_ctl -D /data/pg_data start


bash-4.2$ exit


# vi /etc/rc.d/rc.local

/usr/bin/postgres -D /data/pg_data


3、創建同步用戶

# su postgres

bash-4.2$ psql


postgres=# create role repuser login replication encrypted password 'password123';


postgres=# \q


註意:

這裏創建的用戶是repuser,密碼是password123,你可以根據需要隨意配置。


4、修改配置文件pg_hba.conf、postgresql.conf

bash-4.2$ vi /data/pg_data/pg_hba.conf

host replication repuser 192.168.11.0/8 md5

host all all 192.168.11.0/8 trust


bash-4.2$ vi /data/pg_data/postgresql.conf

添加下面配置,配置文件有下面配置的要刪除(包括前邊有警號'#'的)

listen_addresses = '192.168.11.131'

wal_level = hot_standby

max_wal_senders= 6

wal_keep_segments = 10240

max_connections = 512

archive_mode = on

archive_command = 'cp %p /data/pg_data/pg_archive/%f'


註意:

這裏的配置archive_command需要根據實際配置做出改變。


重啟使配置生效

bash-4.2$ pg_ctl -D /data/pg_data restart


從服務器:

5、同步數據

bash-4.2$ pg_basebackup -h 192.168.11.131 -U repuser -D /data/pg_data -X stream -P

Password:

36413/36413 kB (100%), 1/1 tablespace


6、修改配置文件recovery.conf、postgresql.conf

bash-4.2$ cp /usr/share/pgsql/recovery.conf.sample /data/pg_data/recovery.conf


bash-4.2$ vi /data/pg_data/recovery.conf

添加下面配置,配置文件有下面配置的要刪除(包括前邊有警號'#'的)

standby_mode = on

primary_conninfo = 'host=192.168.11.131 port=5432 user=repuser password=password123 keepalives_idle=60'

recovery_target_timeline = 'latest


註意:

這裏的user就是之前創建的同步數據的用戶,密碼也是響應的密碼。


bash-4.2$ vi /data/pg_data/postgresql.conf

添加下面配置,配置文件有下面配置的要刪除(包括前邊有警號'#'的)

listen_addresses = '192.168.11.132'

wal_level = hot_standby

max_connections = 1000

hot_standby = on

max_standby_streaming_delay = 30s

wal_receiver_status_interval = 10s

hot_standby_feedback = on


bash-4.2$ exit


7、啟動服務並設置開機啟動

# chmod 700 /data/pg_data


# vi /etc/rc.d/rc.local

/usr/bin/postgres -D /data/pg_data


# su postgres


bash-4.2$ pg_ctl -D /data/pg_data start


8、驗證

主服務器:

bash-4.2$ psql


postgres=# select client_addr,sync_state from pg_stat_replication;

client_addr | sync_state

--------------+------------

192.168.11.132 | async


postgres=# create database test;

CREATE DATABASE


postgres=# \l

List of databases

Name | Owner | Encoding | Collate | Ctype | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +

| | | | | postgres=CTc/postgres

template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +

| | | | | postgres=CTc/postgres

test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

(4 rows)


從服務器:

# su postgres


bash-4.2$ psql


postgres=# \l

List of databases

Name | Owner | Encoding | Collate | Ctype | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +

| | | | | postgres=CTc/postgres

template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +

| | | | | postgres=CTc/postgres

test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

(4 rows)


9、創建數據庫、訪問用戶並給數據庫賦權

主服務器

postgres=# create user pgone with password 'password321';

CREATE ROLE


postgres=# create database pgdata owner pgone;

CREATE DATABASE


postgres=# grant all privileges on database pgdata to pgone;

GRANT

參考:

https://www.cnblogs.com/sunshine-long/p/9059695.html


生產環境postgresql主從環境配置