postgresql 主库从库设置

2025-10-25 17:52:11

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、最后重启两边服务器  居然没问题了!!!!三四天的心血奉献给大家~

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢