Linux系统中postgresql双机热备(流复制)
来源:互联网 发布:读取身份证照片软件 编辑:程序博客网 时间:2024/05/17 08:37
环境:
宿主机系统:windows7
虚拟机:Oracle VMVirtualBox
Linux: ubuntukylin-14.04.1-amd64.iso
postgresql:9.3.12
虚拟主机2台
MASTER: 192.16.41.125
SLAVE: 192.16.41.121
数据存储位置
/var/lib/postgresql/9.3/main/
/var/lib/postgresql/9.3/main/
Step1:安装PG数据库
安装过程可参考:http://blog.csdn.net/lanonola/article/details/51376640
mater端安装,并初始化数据
slave端可以只装数据库,不初始化数据库
Step2:初始化master数据库
1.利用pgadmin工具,将tewoo_pj中的数据进行备份,tewoo_pj_back.backup
2.将备份好的tewoo_pj_back.backup文件,恢复到master库中。
Step3:创建流复制用户
master端执行: CREATE USER repuser replication LOGIN CONNECTION LIMIT 3ENCRYPTED PASSWORD 'repuser';
Step4:配置Master端的访问文件pg_hba.conf
cd /etc/postgresql/9.3/main
vim pg_hba.conf
增加一行:
host replication repuser 192.16.41.121/16 md5
Step5:配置MASTER端配置文件 postgresql.conf
cd /etc/postgresql/9.3/main
vim postgresql.conf
max_wal_senders = 1
wal_level = hot_standby
archive_mode = on
archive_command = 'cd ./'
hot_standby = on
wal_keep_segments = 64
注:max_wal_senders是Slave库的节点数,有多少个slave库就设多少,
wal_level是write ahead log参数值,设置流复制务必将此值更新成hot_standby
wal_keep_segments默认值是16,是PG_XLOG下的日志文件数相关参数
archive也可以选择关闭,归档是定时恢复用的,流复制不是必须的
Step6:主库备份(Master端)
6.1:开启文件备份,前提是wal_level参数值必须是archive或者hot_standby,前面已做
select pg_start_backup('Replition work');
6.2:拷贝master端/var/lib/postgresql/9.3/main/文件夹,并复制到Slave服务器上,排除pg_xlog内容,排除pg_xlog内容
打包
cd /var/lib/postgresql/9.3/
tar czvf main.tar.gz main--exclude=main/pg_xlog
备机端如果已经安装了postgres数据库,数据文件夹名称一样的话,可以先停掉备机数据库,改名数据文件夹名称
mv main /var/lib/postgresql/9.3/main.old
远程拷贝至slave端并在备机端解压
1.scp main.tar.gz root@192.16.41.126:/var /lib/postgresql/9.3
报错:ssh:connect to host 192.16.41.121 port 22 :Connection refused lostconnection
具体的解决方法见:http://blog.csdn.net/lanonola/article/details/51384956
2.tar xzvf main.tar.gz
6.3:上述步骤完成后,结束master端的备份
select pg_stop_backup(),current_timestamp;
Step7:修改Slave端配置信息
7.1:postgresql.conf文件
hot_standby = on
7.2:recovery.conf文件(注意该文件的存放位置),放在数据相关文件夹下,和postgresql.conf的位置不同
将usr/share/postgresql/9.3/recovery.conf.sample文件拷贝到
/var/lib/postgresql/9.3/main文件夹下,重命名为recovery.conf
新增以下内容:
standby_mode = 'on'
primary_conninfo ='host=192.16.41.125 port=5432 user=repuser password=repuserkeepalives_idle=60'
Step8:启动Slave库
正常启动备库,有异常可以看log
Step9:测试
On Master:
CREATE TABLE t
(
id integer NOTNULL,
name charactervarying(20),
CONSTRAINTt_pkey PRIMARY KEY (id)
)
INSERT INTO t(id, name)VALUES (1, 'xxxxxxxxx');
INSERT INTO t(id, name)VALUES (2, 'xxxxxxxxx');
On Slave:
select * from t;
update t set name = 'YYYYY' where id=1;
delete from t where id = 2;
ERROR: cannot execute UPDATE in a read-onlytransaction
ERROR: cannot execute DELETE in a read-onlytransaction
新增的数据已经传输过去,且slave端的会话为只读,不能进行update和delete操作。
遇到的问题:
备份完成后,slave库的服务无法启动:
原因:权限问题
解决方法:在建与postgresql有关的文件或者文件夹的时候,不要用root,要切换到postgres用户,否则会报权限不足。
- Linux系统中postgresql双机热备(流复制)
- postgresql双机热备(流复制)及主备切换
- postgresql双机热备(流复制)及主备切换
- Mysql双机热备(linux下)
- 在linux系统用heartbeat实现双机热备
- 【转】 Linux系统双机热备的方案
- linux 做双机热备
- linux mysql双机热备
- linux 双机热备 Heartbeat
- linux 做双机热备
- MySQL主从复制,双机热备实战
- 流复制实现standby数据库【双机热备】及异步、同步流复制测试
- postgresql双机热备、高可用方案(采用pacemaker+corosync实现)
- CentOS系统MySQL双机热备配置
- linux mysql双机备份、双机热备、高可用
- Unix 和 Linux 双机热备 概念
- linux下的heartbeat 双机热备
- Unix 和 Linux 双机热备 概念
- 839 - Not so Mobile
- redis学习笔记(17)---RDB持久化
- Arrays.Tostring
- 选择排序1到100
- HDU 2544 最短路(Dijkstra算法)
- Linux系统中postgresql双机热备(流复制)
- 用Android访问本地站点---(localhost,10.0.2.2)要区别
- Android学习--《数据的保存》
- 冒泡排序
- CY7C68013A Slave FIFO 相关的寄存器
- httpurlconnection_vegetables(httpurlconnection请求方式获取菜谱)
- vb25
- 防止CSRF攻击与protect_from_forgery
- 将PrefixHeader.pch添加到Xcode项目