由于公司最近用PG较多,高可用架构也做了很多尝试,最终决定使用pg_auto_failover作为公司PG高可用选择
pg_auto_failover简介
pg_auto_failover是PostgreSQL的扩展,用于监视和管理 Postgres 群集的故障转移。
一般架构是由一个monitor + 一套主备的pgsql ,如果只部署一套那么用的是3台服务器,如果是 N套,那么就是 2N+1台服务器(利用编排减少服务器数量)。
本身自带故障转移:postgres://pg1:5432,pg2:5432/postgres?target_session_attrs=read-write&sslmode=prefer
下载最新版本(~*~):
下载postgresql 16: https://www.postgresql.org/ftp/source/下载pg_auto_failover: https://github.com/hapostgres/pg_auto_failover安装过程:
perl-ExtUtils-Embed.noarch \
所有节点都操作
修改/etc/hosts -- root user
chown postgres:postgres -R /data/echo "postgres ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoerstar -xvf postgresql-16.1.tar.gz export PGDATA=/data/pgdata export PGHOME=/usr/pgsql-16export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/pgsql-16/bin./configure --enable-rpath --prefix=/usr/pgsql-16 --includedir=/usr/pgsql-16/include --mandir=/usr/pgsql-16/share/man --datadir=/usr/pgsql-16/share --libdir=/usr/pgsql-16/lib --with-icu --with-perl --with-python --with-tcl --with-tclconfig=/usr/lib64 --with-openssl --with-pam --with-gssapi --with-includes=/usr/include --with-libraries=/usr/lib64 --enable-nls --enable-dtrace --with-libxml --with-libxslt --with-ldap --with-selinux --with-systemd --with-system-tzdata=/usr/share/zoneinfo --sysconfdir=/etc/sysconfig/pgsql --docdir=/usr/pgsql-16/doc --htmldir=/usr/pgsql-16/doc/htmlmake world && make installcd postgresql-16.1/contribtar -xvf pg_auto_failover-2.1.tar.gz export PGDATA=/data/pgdata export PGHOME=/usr/pgsql-16export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/pgsql-16/bin
nohup pg_autoctl create monitor \
postgres://autoctl_node@pg1:5432/pg_auto_failover?sslmode=require--- 需要创建一个目录 手动安装 (避坑:第一遍错误后,添加了次操作)
mkdir /backup && chown postgres:postgres /backup/
pg_autoctl create postgres \--monitor 'postgres://autoctl_node@pg1:5432/pg_auto_failover?sslmode=require' \pg_autoctl -q show systemd --pgdata /data/pgdata > paf.servicesudo mv paf.service /usr/lib/systemd/system/paf.servicesudo systemctl enable paf.service ------------------以上第一套pg_auto_failover已经完成-------------------
------------------以下为第二套pg_auto_failover-------------------
(安装步骤同第一次安装,只不过需要添加一个formation)-----------第二个编排 如果本地多套paf架构的postgresql pg_autoctl create formation --formation new --kind pgsql
pg_autoctl create postgres \--monitor 'postgres://autoctl_node@pg1:5432/pg_auto_failover?sslmode=require' \pg_autoctl create postgres \--monitor 'postgres://autoctl_node@pg1:5432/pg_auto_failover?sslmode=require' \
------OK 至此已经完成了,2N+1