postgresql 主库从库设置
1、以主库服务器1.2.3.4 从库 5.6.7.8 为例。安装最新版的postgresql(本篇略过,需要可以写一个)。
2、第一步是修改防火墙,两个服务器可以通信,或者设置白名单之类的。防火墙在iptables设置。端口默认5432(postgresql.conf可修改,重启后生效)。
3、第二步先创建一个REPLICATION账户。
sudo -u postgres psql -c "CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'thepassword';"
4、第三步修改postgresql.conf
listen_address = "*" 这个地方一定不要默认!!填写*或者外网ip都可以!!不然之后服务器不通信!!防火墙没问题,白名单没问题为什么不通信 就因为端口只是在本地 127.0.0.1下面!!!血淋淋的教训!!!
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 8
wal_keep_segments = 8
5、第四步 国内外网站都没有写的!!!!!
打开ssl!!!!
ssl=on
然后配置server.key!!!!!!
参考 http://www.postgresql.org/docs/8.1/static/ssl-tcp.html
openssl req -new -text -out server.req
openssl rsa -in privkey.pem -out server.key
openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod og-rwx server.key
6、第五步 设置pg_hba.conf
hostssl replication replicator 5.6.7.8 md5
hostssl!!!!!!不是host !!!!!
7、第六步 设置从库
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 8
wal_keep_segments = 8
hot_standby = on
8、第七步
在从库上 虽然我不知为什么!!!但要删了从库的pgsql数据
sudo -u postgres rm -rf /var/lib/pgsql/9.4/data(目录可能不对,忘记了 有的系统是/data 有的系统是 / main 都一样 删删删!!!)
然后把主库的设置copy一份覆盖到从库上,虽然我不知道为什么,但是很高级的样子!!!!
sudo -u postgres pg_basebackup -h 1.2.3.4 -D /var/lib/pgsql/9.4/data -U replicator -v -P
但这时候出现了个问题 被覆盖后从库的postgresql.conf里面的配置之前改得被覆盖了!!!!所以我觉得第六步应该放到第七步后面,但不知道为什么国外网站介绍的把这一步放在修改配置后面了 所以出现了一个大坑!!!!
再去配置一遍从库的postgresql.conf 把 hot_standby=on 设置一下!!!!
9、然后再在从库创建一个recovery.conf的文件
sudo -u postgres bash -c "cat > /var/lib/pgsql/9.4/data/recovery.conf <<- _EOF1_
standby_mode = 'on'
primary_conninfo = 'host=1.2.3.4 port=5432 user=replicator password=thepassword sslmode=require'
trigger_file = '/tmp/postgresql.trigger'
_EOF1_
"
10、最后重启两边服务器 居然没问题了!!!!三四天的心血奉献给大家~