双机热备(流复制)

双机热备的过程(因为手动安装导致的权限问题,暂时无法开机自启)

主机Primary 10.150.99.6

备机Standby: 10.150.99.96

 

两台系统之中安装postgresql (相同版本)

1.配置主节点

修该postgresql.conf

--------------------------------------------------修改以下参数:

#wal_level = minimal

#max_wal_senders = 0

//wal 发送进程数,有几个备库就设置为几

#wal_keep_segments = 0

//WAL日志文件的大小,设置一个足够大的值,以防主库生成WAL日志太快,日志还没有来得及传送到standby,就会循环覆盖

#hot_standby = off

//开启日志记录功能

#logging_collector = off

#log_directory = 'pg_log' //日志目录

#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' //日志名

 

--------------------------------------------------最终修改为:

wal_level = hot_standby

max_wal_senders = 1

wal_keep_segments = 16

hot_standby = on

logging_collector = on

log_directory = 'pg_log'

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

 

[postgres@node1 data]$ psql

Password:

psql (postgresql 9.4.4)

Type "help" for help.

 

创建用于同步的账户,或者直接使用postgres账户

postgres=# create user standby SUPERUSER LOGIN password 'standby';

CREATE ROLE

 

//配置pg_hba.conf,添加如下:

// MD5 表示,encrypted password 加密过后的密码认证

# IPv4 local connections:

host all all 127.0.0.1/32 md5

host replication standby 10.150.99.96/32  md5

 

重启数据库,使参数生效

//pg_ctl 是数据库集,位于/usr/lib/postgresql/9.3/bin,具体的用法可以--help

//安装postgresql,默认会建立一个数据库cluster,可以通过pg_lsclusters查看,命令可以通过man /usr/share/man/man1/pg_lsclusters.1.gz 查看

 

 sudo service postgresql start

 

2.进行基础备份

 

//开启备份功能

[postgres@node1 data]$psql -c "select pg_start_backup('backup0001')"

//将data目录下的数据远程拷贝到备库的data目录下

[postgres@node1 data]$rsync -arvP -e "ssh -p 22" /var/lib/postgresql/9.1/main/* 10.150.99.96:/usr/local/pgsql/data/ --exclude postmaster.pid

//关闭备份功能

[postgres@node1 data]$psql -c "select pg_stop_backup()"

注意: 没有启用WAL归档;您必须确保所有的WAL段已通过其他的方法拷贝,这样才能完成备份

pg_stop_backup

----------------

0/110000E0

(1 row)

 

3.配置备节点

//删除data目录下的postmaster.pid文件

[postgres@node2 ~]$ cd /opt/pgsql/data

[postgres@node2 data]$ rm -rf postmaster.pid

//在data目录下新建recovery.conf文件

[postgres@node2 data]$ vi recovery.conf

standby_mode='on'

recovery_target_timeline = 'latest'

primary_conninfo='host=10.150.99.6 port=5432 user=standby password=standby'

 

启动数据库

 sudo service postgresql start

 

在主节点上创建表测试

 

 

[postgrs@node1 ~]$ psql

psql (9.4.4)

Type "help" for help.

 

postgres=# create table a (a int);

CREATE TABLLE

postgres=# insert into a values (123);

INSERT 0 1

postgres=#select * from a ;

a

-----

123

(1 rows)

 

在备节点上查看数据是否同步

 

[postgrs@node2 ~]$ psql

psql (9.4.4)

Type "help" for help.

List of relations

Schema | Name | Type | Owner

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

public | a | table | postgres

postgres=#select * from a ;

a

-----

123

(1 rows)

 

数据同步,流复制配置成功!

 

进行联机热备份时,不用关闭数据库。数据库可以正常地执行其它操作。如果要使联机热备份,数据库必须运行在归档模式下,将参数数据库archive_mode设为on,然后再将参数archive_dir设成一个启动数据库的操作系统用户有读写权限的目录,数据库就会运行在归档模式。要使这两个参数生效,必须重新启动数据库。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值