PostgreSQL 9.5 版本主备搭建

#PostgreSQL 9.5 版本主备搭建

背景

一些常用命令总结

#su - postgres #进入linux的postgres用户下

$psql #进入本地postgresql数据库管理系统 ,前提是在postgres用户下

$psql -h 10.0.4.176 -p 5455 -U postgres #进入10.0.4.176节点,该节点的数据库端口5455,进入名为postgres数据库中

主机:10.0.4.176

备机:10.0.0.173

postgresql的有效bin目录:/usr/lib/postgresql/9.5/bin

​ 注意可能有无效的bin目录,我这就有/usr/local/pgsql/bin ,但是用了什么语句判断出的前者为有效,这个怎么判断得去查下

postgresql安装目录,也是放postgresql.conf这些配置文件的地儿:/etc/postgresql/9.5/main/postgresql.conf

数据库备份目录(在备机中):/var/libpostgresql/9.5/main

步骤

主机

1 修改postgresql.conf文件

listen_addresses = ‘*’

wal_level = hot_standby

synchronous_commit = local – 本地同步级别

max_wal_senders = 5 – 两台服务器

wal_keep_segments = 10

2 修改pg_hba.conf文件

在文件最后增加

host    all             all             0.0.0.0/0               md5
host    all             all             10.0.4.173/32       md5
host    replication     replica         10.0.4.176/32       md5
host    replication     replica         10.0.4.173/32       md5

3 创建用于复制的用户replica

root@qls-228:~# su - postgres
postgres@qls-228:~$ psql
psql (9.5.24)
Type "help" for help.

postgres=# CREATE ROLE replica login replication encrypted password 'replica';
CREATE ROLE
postgres=#

主服务器配置结束--------END

备机

1 停止postgresql服务

systemctl stop postgresql

2 修改postgresql.conf文件

listen_addresses = ‘*’

wal_level = hot_standby

synchronous_commit = local – 本地同步级别

max_wal_senders = 5 – 两台服务器

wal_keep_segments = 10

hot_standby = on

3 将数据从主机复制到从机【重点】

首先进入数据库备份目录 /var/lib/postgresql/9.5下

如果已经有main文件则需要更改main文件名字

postgres@qls-228:~/9.5$ mv main main_back1

将主机postgresql数据复制到从机

postgres@qls-228:~/9.5$ pg_basebackup -h 10.0.4.176 -U replica -p 5455 -F p -x -P -R -D /var/lib/postgresql/9.5/main3
Password: 
184742/184742 kB (100%), 1/1 tablespace

下面简单做一下参数说明(可以通过pg_basebackup --help进行查看),-h指定连接的数据库的主机名或IP地址,这里就是主库的ip。-U指定连接的用户名,此处是我们刚才创建的专门负责流复制的repl用户。-F指定了输出的格式,支持p(原样输出)或者t(tar格式输出)。-x表示备份开始后,启动另一个流复制连接从主库接收WAL日志。-P表示允许在备份过程中实时的打印备份的进度。-R表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建。-D指定把备份写到哪个目录,这里尤其要注意一点就是做基础备份之前从库的数据目录(/usr/local/postgresql/data)目录需要手动清空。

注意:网上各种备份方法都要自己创建一个recovery.conf文件或者是从/usr/share/postgresql/9.5/recovery.conf.sample复制过来,但总会报错。原因是这个recovery.conf只需要在pg_basebackup中用-R来自动生成就好了。

4 启动备机postgresql数据库并测试

systemctl start postgresql

主机测试

如下为成功

select pg_is_in_recovery();代表该库是主库

root@qls-228:~# su - postgres
postgres@qls-228:~$ psql
psql (9.5.24)
Type "help" for help.

postgres=# select client_addr,sync_state from pg_stat_replication;
 client_addr | sync_state 
-------------+------------
 10.0.4.173  | async
(1 row)

postgres=# select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 f
(1 row)

备机测试

如下为成功

select pg_is_in_recovery();得到t代表该库是备库

root@qls-228:~# su - postgres
postgres@qls-228:~$ psql -h 10.0.4.173 -p 5455 -U postgres
Password for user postgres: 
psql (9.5.24)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=# select client_addr,sync_state from pg_stat_replication;
 client_addr | sync_state 
-------------+------------
(0 rows)

postgres=# select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 t       
(1 row)

再在主从机上分别执行

ps aux | grep wal #若主机上有 wal sender process 进程,从机上有 wal receiver process 进程代表成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值