最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

PostgreSql + Streaming数据同步

来源:动视网 责编:小OO 时间:2025-09-30 08:53:57
文档

PostgreSql + Streaming数据同步

PostgreSql+Streaming集群环境DBMaster10.8.12.207DBSlave110.8.12.208DBSlave210.8.12.209安装PostgreSql(此处省略)设置postgres用户可以登录passwdpostgressupostgres建立SSH信任连接(非必须)--DBMasterssh-keygenssh-copy-idpostgres@10.8.12.208ssh-copy-idpostgres@10.8.12.209--DBSlavessh-k
推荐度:
导读PostgreSql+Streaming集群环境DBMaster10.8.12.207DBSlave110.8.12.208DBSlave210.8.12.209安装PostgreSql(此处省略)设置postgres用户可以登录passwdpostgressupostgres建立SSH信任连接(非必须)--DBMasterssh-keygenssh-copy-idpostgres@10.8.12.208ssh-copy-idpostgres@10.8.12.209--DBSlavessh-k
PostgreSql + Streaming集群

环境

DB Master    10.8.12.207

DB Slave1        10.8.12.208

DB Slave2        10.8.12.209

安装PostgreSql(此处省略)

设置postgres用户可以登录

passwd postgres

su postgres

建立SSH信任连接(非必须)

--DB Master

ssh-keygen

ssh-copy-id postgres@10.8.12.208

ssh-copy-id postgres@10.8.12.209

--DB Slave

ssh-keygen

ssh-copy-id postgres@10.8.12.207

新建数据同步(replication)用户

su postgres

createuser repl -s

psql

alter role repl password 'repl'

 配置Master

新建archive目录

mkdir /var/lib/postgresql/archive

配置postgresql.conf

vim /etc/postgresql/9.1/main/postgresql.conf

修改以下配置项

listen_addresses = '*' 

#这个参数决定了有多少内容写入WAL,缺省是minimum,仅保证服务可以在crash或者immediate shutdown后重启。archive会多增加与WAL archive相关的内容,hot_standby会增加备机只读查询的支持信息

wal_level = hot_standby

 

#开启archive,然后定义文件备份命令

archive_mode = on

archive_command = 'cp -i %p /var/lib/postgresql/archive/%f  

#数据库会将已经完结的WAL写到archive里面去,具体写法见上面的command。如果traffic太低,那么长时间WAL就都不会写到archive里面,就类似所谓的备份风险。所以设置timeout是说如果到了这个时间WAL还没完结,也一样会写到archive里面去。但是streaming的方式下,由于内容都及时到达了备机,所以觉得没有必要设置太低的timeout。

archive_timeout=800

#设置备机访问的并发连接数,对streaming的方式建议开高一点以保证数据可以及时同步

max_wal_senders = 5

 

#设置主机上pg_xlog里面保留的最小段数量。每个段都是16M,在streaming的情况下,如果希望不太依赖文件archive,数量建议设置大一些,以保证某些情况下备机不会由于落后太多导致复制服务停止。(即保证log在被同步到备机前不会被主机替换和删除掉)

wal_keep_segments = 32
配置pg_hba.conf

vim /etc/postgresql/9.1/main/pg_hba.conf

修改以下配置项

#保证用户可以基于密码访问

host    all     all     10.8.12.0/24     md5

#设置replication的访问控制

host    replication     repl     10.8.12.208/32     trust

host    replication     repl     10.8.12.209/32     trust

 重启postgresql

/etc/init.d/postgresql restart

配置Slave 

新建archive目录

mkdir /var/lib/postgresql/archive

配置postgresql.conf

vim /etc/postgresql/9.1/main/postgresql.conf

修改以下配置项:

listen_addresses = '*' 

#开启hot standby

wal_level = hot_standby

hot_standby = on
配置pg_hba.conf

vim /etc/postgresql/9.1/main/pg_hba.conf

修改以下配置项

#保证用户可以基于密码访问

host    all     all     10.8.12.207/32     md5

#设置replication的访问控制

host    replication     repl     10.8.12.207/32     trust

新建recovery.conf

vim /etc/postgresql/9.1/main/recovery.conf 

内容如下:

restore_command = 'cp /var/lib/postgresql/archive/%f %p'   

archive_cleanup_command = '/usr/lib/postgresql/9.1/bin/pg_archivecleanup /var/lib/postgresql/archive/ %r' 

standby_mode = 'on' 

primary_conninfo = 'host=10.8.12.207 port=5432 user=repl password=repl' 

trigger_file = '/var/lib/postgresql/trigger'

做基线备份和streaming 同步

停止DB Slave服务

/etc/init.d/postgresql stop

在DB Master上开始基线备份

psql -c "select pg_start_backup('label',true)"

删除DB Salve上的数据

mv /var/lib/postgresql/9.1/main /var/lib/postgresql/9.1/main_bak

或者

rm -r /var/lib/postgresql/9.1/main

在DB Master上执行数据同步

rsync -a /var/lib/postgresql/9.1/main/ postgres@10.8.12.208:/var/lib/postgresql/9.1/main/ --exclude postmaster.pid

rsync -a /var/lib/postgresql/9.1/main/ postgres@10.8.12.209:/var/lib/postgresql/9.1/main/ --exclude postmaster.pid

第一次可以采用这种把目标目录全部清空的方式,以后应该可以采用仅删除server*的方式减少同步数据量。如果机器上无rsync服务,需安装(默认有)

DB Slave复制日志

rm /var/lib/postgresql/archive/*

mv /var/lib/postgresql/9.1/main/pg_xlog/* /var/lib/postgresql/archive/

DB Slave创建recovery.conf软链接

ln –s /etc/postgresql/9.1/main/recovery.conf /var/lib/postgresql/9.1/main/recovery.conf

启动DB Slave上的服务

/etc/init.d/postgresql start

DB Master上结束基线备份操作

psql -c "SELECT pg_stop_backup()"

文档

PostgreSql + Streaming数据同步

PostgreSql+Streaming集群环境DBMaster10.8.12.207DBSlave110.8.12.208DBSlave210.8.12.209安装PostgreSql(此处省略)设置postgres用户可以登录passwdpostgressupostgres建立SSH信任连接(非必须)--DBMasterssh-keygenssh-copy-idpostgres@10.8.12.208ssh-copy-idpostgres@10.8.12.209--DBSlavessh-k
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top