原文:Postgresql replication with automatic failover[1]
作者:Bruno Queirós
介绍
PostgreSQL 被认为是世界上最先进的开源关系数据库之一,它已经进行了 30 年的积极开发,并且在可靠性和性能方面赢得了很高的声誉。
对于生产环境,您可能希望部署一种解决方案,即使该服务器关闭或数据库只是停止响应,也可以保证对数据库的访问,这是复制,高可用性和负载平衡之类的功能到位的时候。
Postgresql 允许辅助服务器(备用服务器
)从主服务器(主服务器
)复制数据,以便它成为主服务器(复制
)的忠实副本,这些数据库服务器可以 共同工作,以允许第二台服务器在主服务器发生故障时接管(高可用性
),甚至允许多台计算机提供相同的数据(负载平衡
)。
实施
我想部署一个简单的解决方案,该解决方案是免费的,并且如果我的主服务器出现问题,可以处理故障转移,所以我选择了复制以将数据维护在两个不同的数据库上,KeepAlived 可以执行运行状况检查,故障转移并还可以管理 虚拟 IP,因此我只使用相同的 IP,而与数据库的位置无关。
要求
- 具有 postgresql 和 keepalived 的服务器-主服务器(172.17.0.2)
- 具有 postgresql 和 keepalived 的服务器-备用(172.17.0.3)
- 在主服务器上设置复制
- 创建运行状况检查脚本,该脚本检查数据库是否正常,如果不正常,则将备用数据库提升为主数据库并迁移虚拟 IP
- 虚拟 IP(172.17.0.1)
- 将发出数据库请求的 IP(172.17.0.4)
主备安装配置
安装 PostgreSQL - 主
echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get install postgresql-12 -y