使用的postgres版本为 postgresql-9.3.6.tar.gz 版本
一、使用两台物理主机 操作系统为redhat6.5
-
[postgres@v136 ~]$ lsb_release -a
-
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
-
Distributor ID: RedHatEnterpriseServer
-
Description: Red Hat Enterprise Linux Server release 6.5 (Santiago)
-
Release: 6.5
-
Codename: Santiago
二、 在主服务器和从服务器分别创建postgres用户,并在用户目录下编译安装,安装过程中提示缺少的依赖包,通过yum安装
-
[postgres@v136 ~]$tar -zxvf postgresql-9.3.6.tar.gz
-
[postgres@v136 ~]$mkdir pgsql/
-
[postgres@v136 ~]$cd postgresql-9.3.6/
-
[postgres@v136 ~]$./configure --prefix=/home/postgres/pgsql
-
[postgres@v136 ~]$ make && make install
三、 安装完成后,在主服务器目录下初始化主数据库并启动
-
[postgres@v136 ~]$mkdir -p /home/postgres/pgsql/data/
-
[postgres@v136 ~]$./initdb -D /home/postgres/pgsql/data/ -E UTF8 --locale=C -U postgres -W
-
四、修改postgresql.conf和pg_hba.conf ,内容如下
-
vi postgresql.conf 如下:
-
-
work_mem = 2GB
-
maintenance_work_mem = 2GB
-
max_files_per_process = 2000
-
effective_cache_size = 1GB
-
-
wal_level = hot_standby
-
archive_mode = on
-
archive_command = 'cp -i %p ../archivedir/%f < /dev/null'
-
max_wal_senders = 2
-
wal_keep_segments = 32
-
synchronous_standby_names = '*'
-
-
vi pg_hba.conf
-
-
host replication postgres 0.0.0.0/0 trust
-
host all all 0.0.0.0/0 trust
五、启动主服务器数据库
-
[postgres@v136 ~]$./pg_ctl -D /home/postgres/pgsql/data/ -l logfile start
六、检查主数据库是否成功
-
[postgres@v126 bin]$ ./psql
psql (9.3.6)
Type "help" for help.
postgres=# select version();
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 9.3.6 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit
(1 row)
七、设置主库为pg_start_backup(''),并把初始化完成的主库data目录,复制到从数据库的相同目录下,这步骤是关键
-
postgres=# select pg_start_backup('');
-
这行select pg_start_bakcup('')命令后所有请求不在写磁盘。直到执行pg_stop_bakcup('')结束。
八、设置从数据库配置postgresql.conf和recovery.conf,并删除 postmaster.pid文件
-
修改postgresql.conf 如下
-
work_mem = 2GB
maintenance_work_mem = 2GB
max_files_per_process = 2000
effective_cache_size = 1GB
-
wal_level = hot_standby
hot_standby = on
-
修改recovery.conf
-
standby_mode = on
primary_conninfo = 'host=10.7.0.126 port=5432 user=postgres'
九、启动从数据库,并停止主数据库的backup状态
-
[postgres@v136 ~]$./pg_ctl -D /home/postgres/pgsql/data/ -l logfile start
-
在主数据库上另外开一个终端并执行如下命令,管理两个主数据库mingl
-
[postgres@v135 ~]$./psql -d postgres
-
postgres=#select pg_stop_backup();
-
-
两个终端窗口分别收到如下,表示结束基础备份
-
postgres=# select pg_start_backup('');
pg_start_backup
-----------------
0/A000028
(1 row)
-
postgres=# select pg_stop_backup('');
pg_stop_backup
-----------------
0/A0000F0
(1 row)
-
十一、登录并验证主从数据库同步情况,分别创建tt表并主从都正常,完成host standby配置。
-
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+----------
public | dd | table | postgres
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27039319/viewspace-2079167/
,如需转载,请注明出处,否则将追究法律责任。