kong的postgre数据库挂了后的处理
首先,kong的postgreSql 数据库挂了,并不会立刻影响kong的运行。
但在kong的 /usr/local/kong/logs/error.log中有不停地报错:
2018/11/11 16:40:05 [error] 14931#0: *4252478 [lua] postgres.lua:221: [postgres] could not cleanup TTLs: connection refused, context: ngx.timer
说明kong无法刷新缓存。
这是只要不重启kong,该kong仍然可以使用。
如果不想对外界访问有任何影响,可以在操作前,先将要操作的kong从负载均衡器上取消掉。一台一台来修复。
在任意一台可以访问到的机器上安装postgre,或用postgre的docker。
参见https://www.jianshu.com/p/5f31ccf9ecb3
可以新建一个kong数据库,也详见上一步的连接。
修改kong的配置文件,/etc/kong/kong.conf:
pg_host = 172.xx.xxx.xxx # The PostgreSQL host to connect to.
pg_port = 5435 # The port to connect to.
pg_user = postgres # The username to authenticate if required.
pg_password = aaxxx # The password to authenticate if required.
pg_database = postgres # The database name to connect to.
pg_ssl = off
pg_ssl_verify = off
把host ip,port,user, password, database都改为最新建立的。
运行 kong migrations up -c /etc/kong/kong.conf
然后重启kong
kong restart
这时新建的kong数据库都是空的。要在konga中restore 以前的备份到这个kong中:
konga中选择这个坏了的kong,并点击ACTIVATE
image.png
然后选择SNAPSHOTS,在最新的或要恢复的备份上点击DETAILS
image.png在下一个页面上点击RESTORE,勾选所有对象后点击IMPORT OBJECTS即可
image.png
这样,这个kong又满血复活。