版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
、测试说明
本文档是以数据库本身自带的Hot Standby方式进行验证HighGo DB容灾能力的测试文档。
本测试中使用的是一主(master)一备(standby)。
2、测试环境
3、安装
3.1 、获取安装包
3.2 、安装
注意:master和standby安装完数据库后最好pg_ctl stop关闭服务,然后进行接下来的配置
3.2.1 、master安装数据库
注意:安装前需要配置环境变量HG_HOME
[highgo@masker ~]$ vi .bash_profile
export HG_HOME=/home/highgo/hgdb
执行安装,根据提示的步骤进行安装
[highgo@masker ~]$ cd hgdb_linux64_3.0_5.x
[highgo@masker hgdb_linux64_3.0_5.x]$ ./runinstall
3.2.2 、以相同的方式在standby上安装数据库
在安装过程中的参数设置均与master一致。
4 、配置
4.1 、主库master配置
4.1.1 、关闭进程
由于数据库在初始安装成功后是开启状态,为了便于配置,先关闭服务。
[highgo@masker ~]$ pg_ctl stop
waiting for server to shut down....LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
LOG: shutting down
LOG: database system is shut down
done
server stopped
4.1.2 、配置用户环境变量
[highgo@masker ~]$ vi .bash_profile
export LD_LIBRARY_PATH=$HG_HOME/lib
export PGDATA=$HG_HOME/data
PATH=$PATH:$HOME/bin:$HG_HOME/bin
export PATH
--使配置生效
[highgo@masker ~]$ source .bash_profile
4.1.3 、数据库配置
配置postgresql.conf
wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 500
archive_mode = on
archive_command = 'cp %p /home/highgo/hgdb/data/xxfarchivedir/%f'
listen_addresses = '*'
port = 5866
注意:需要在hgdb/data目录下新建xxfarchivedir目录
主库创建超级用户以供备库连接主库时使用
[highgo@masker data]$ pg_ctl start
server starting
[highgo@masker data]$ LOG: database system was shut down at 2015-07-28 23:03:56 PDT
LOG: MultiXact member wraparound protections are now enabled
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
[highgo@masker data]$ psql
psql (3.0.0)
Type "help" for help.
highgo=# create user standby SUPERUSER LOGIN password 'highgo';
CREATE ROLE
配置pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host replication standby 192.168.100.190/32 trust
4.1.4 、重启数据库,使配置生效
[highgo@masker data]$ pg_ctl restart
LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
LOG: shutting down
waiting for server to shut down......LOG: database system is shut down
. done
server stopped
server starting
[highgo@masker data]$ LOG: database system was shut down at 2015-07-28 23:01:46 PDT
LOG: MultiXact member wraparound protections are now enabled
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
4.1.5 、执行一次基础备份
[highgo@masker data]$ psql -c "select pg_start_backup('backupxxf728')"
pg_start_backup
-----------------
0/3000028
(1 row)
[highgo@masker data]$ scp -r ../data/* 192.168.100.190:/home/highgo/hgdb/data/
[highgo@masker data]$ psql -c "select pg_stop_backup()"
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
pg_stop_backup
----------------
0/3000160
(1 row)
4.2 、备库standby配置
//配置用户环境变量
参见master主库环境变量配置。
//删除data目录下的postmaster.pid文件
[highgo@standby data]$ rm -rf postmaster.pid
配置postgresql.conf
hot_standby = on
然后新建recovery.conf并编辑
standby_mode = on
restore_command = 'cp /home/highgo/hgdb/data/xxfarchivedir/%f %p'
primary_conninfo = 'host=192.168.100.195 port=5866 user=standby password=highgo'
5 、启动standby,测试
注意:关闭防火墙
5.1 、主库连接,进行测试
(1)在主库新建mask_tab表,查看备库中是否存在该表
[highgo@masker data]$ psql
psql (3.0.0)
Type "help" for help.
highgo=# create table mask_tab(i int);
CREATE TABLE
highgo=# select * from mask_tab ;
i
---
(0 rows)
备库中查询是否有mask_tab表
[highgo@standby bin]$ psql
psql (3.0.0)
Type "help" for help.
highgo=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+--------
public | mask_tab | table | highgo
(2 rows)
highgo=# select * from mask_tab ;
i
---
(0 rows)
(2)主库中向mask_tab表中插入数据
highgo=# insert into mask_tab select * from generate_series(1,5);
INSERT 0 5
备库中查询mask_tab表中数据
highgo=# select * from mask_tab ;
i
---
1
2
3
4
5
(5 rows)
5.2 、主库查看WAL_SENDER进程
5.3 、备库查看WAL_RECEIVER进程
5.4、关闭master,模拟主机宕机
然后在备机执行pg_ctl promote命令进行切换