龙空技术网

Postgresql 实现实时主从复制,数据同步如此简单

逗神Pro 381

前言:

如今你们对“centos70postgresql”大约比较关切,你们都想要了解一些“centos70postgresql”的相关内容。那么小编在网摘上网罗了一些对于“centos70postgresql””的相关文章,希望小伙伴们能喜欢,你们一起来学习一下吧!

本篇继续讲述Postgresql,与上篇(PostgreSQL 像 Mysql 一样轻松实现数据复制)不同,上篇讲述的是如何使用pg_basebackup工具,感兴趣的朋友可以去看看。

下面开始本次讲解,使用是两台Centos服务器

主:192.168.1.108 , CentosOne(master) 端口:5432

备:192.168.1.109 , CentosTwo(standy) 端口:5432

其中,备机只需要安装软件,不需要init(初始化)数据库

在实现主从复制之前已确定如下目录:

1. /home/pgsql/data 目录是master数据库的目录,端口为5432

2. /home/pgsql/data 目录是一台standy数据库的目录,端口为5432

3. /home/pgsql/archive 是 master 至 standby的WAL日志中转地点

一、主数据库操作

1、建立archive日志中转地点

mkdir -p /home/pgsql/archive

chmod -R 0700 /home/pgsql/archive

chown -R postgres.postgres /home/pgsql/archive

2. 配置Master,并做一次base backup

编辑 postgresql.conf 以支持 WAL archiving:

vim /home/pgsql/data/postgresql.conf

wal_level = hot_standby

archive_mode = on

archive_command = 'test ! -f /home/postgres/archive/%f && cp %p /home/postgres/archive/%f'

max_wal_senders = 1

wal_keep_segments = 32

注:

max_wal_senders: 是Slave库的节点数,有多少个slave库就设多少。

wal_level :是write ahead log参数值,设置流复制务必将此值更新成hot_standby。

修改 pg_hba.conf 以允许 repluser 访问

vim /home/pgsql/data/pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD

host replication repuser 0.0.0.0/0 md5

创建 standby 能访问 Master 的用户 replication_role (在psql中):

su - postgres

psql

CREATE USER repuser replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD '123456';

\q

exit

重启pgsql

service postgresql-9.4 restart

3、然后做一次基础备份(后面的standby主要使用data目录下文件):

su - postgres

psql

postgres=# SELECT pg_start_backup('bak20150324');

[root@CentosTwo pgsql]# service postgresql-9.4 stop

[root@CentosTwo pgsql]# mv /home/pgsql/data /home/pgsql/data_bak

上面的两行代码是在CentosTwo服务器上操作,即备份服务器

[root@CentosOne ~]# rsync -a /home/pgsql/data root@192.168.1.109:/home/pgsql/ --exclude postmaster.pid

也可以将data目录打包,上传备份服务器,不过需要注意权限设置!

postgres=# SELECT pg_stop_backup();

二、从数据库配置

1、把主数据库备份的打包文件覆盖standby的data目录:

mkdir -p /home/pgsql/archive

chmod -R 0700 /home/pgsql/archive

chown -R postgres.postgres /home/pgsql/archive

查找recovery.conf.sample

find / -name recovery.conf.sample

/usr/pgsql-9.4/share/recovery.conf.sample

2、编辑postgresql.conf

vim /home/pgsql/data/postgresql.conf

设置hot_standby为

hot_standby= on

3、然后编辑 recovery.conf:

cd /home/pgsql

cp /usr/pgsql-9.4/share/recovery.conf.sample data/recovery.conf

vim data/recovery.conf

restore_command = 'cp /home/pgsql/archive/%f %p'

standby_mode = on

primary_conninfo = 'host=192.168.1.108 port=5432 user=repuser password=123456'

trigger_file = '/home/pgsql/trigger_active.5432'

cp data_bak/postgresql.conf data/postgresql.conf

cp data_bak/pg_hba.conf data/pg_hba.conf

更改权限

chmod 0600 data/recovery.conf

chown postgres.postgres data/recovery.conf

4、移动pg_xlog下的所有文件到/storage0/database/postgres/archive目录下

mv /home/pgsql/data/pg_xlog/* /home/pgsql/archive/

5、启动Standby节点,完成Replication。

service postgresql-9.4 start

至此完成配置,可以在主(CentosOne)中增加实验数据,查看备(CentosTwo),是否实时变化了。

标签: #centos70postgresql