自动故障转移版本功能
实现以下功能
根据服务器配置,初始化时自动配置数据库参数
主实例故障时从实例自动提升为主
原主实例恢复后自动切换为从实例并自动配置同步信息
有多个从实例时自动切换同步模式
可配置同步异步复制模式
可配置实例权重
可手动提升切换主从实例
名词解释
监视节点:监视所有数据库节点运行状态,故障时自动执行切换
编组:多个实例位于同一编组时,自动维护切换主从关系
主节点:编组内第一个数据库节点为主节点,但随着故障发生会自动切换为从节点
从节点:编组内第二个及以上安装的节点为从节点,但随着故障发生会自动切换为主节点
安装
建议优先使用Aiops运维系统在web页面操作,更加方便容易. 以下列出部分操作指令.
准备
添加普通用户unvdb
切换到普通用户unvdb
准备安装目录 /data/udb/
解压安装包到 /data/udb/soft 目录
配置环境变量 export LD_LIBRARY_PATH=/data/udb/soft/lib PATH=$PATH:/data/udb/soft/bin
在所有节点上准备好数据及环境变量
安装监视节点
创建监控节点
ud_autoctl create monitor --uddata /data/udb/data --udport 5677 --hostname 192.168.2.32 --skip-pg-hba --no-ssl --run
修改hba.conf
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all "udautofailover_monitor" 0.0.0.0/0 trust
host replication "udautofailover_replicator" 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
host all all 0.0.0.0/0 md5
配置同步认证
ud_sql --登录数据库
alter user autoctl_node password '同步密码'; -- 设置同步密码
注册服务
vi /etc/systemd/system/unvdb5677.service
[Unit]
Description = unvdb5677 Service
After=network-online.target
Wants=network-online.target
[Service]
WorkingDirectory = /data/udb/soft/bin
Environment = 'PGDATA=/data/udb/data'
Environment = 'PGPASSWORD=同步密码'
Environment = 'LD_LIBRARY_PATH=/data/udb/soft/lib:$LD_LIBRARY_PATH'
Environment = 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/data/udb/soft/bin'
User = unvdb
ExecStart = /data/udb/soft/bin/ud_autoctl run
Restart = always
StartLimitBurst = 0
ExecReload = /data/udb/soft/bin/ud_autoctl reload
#Type=forking
TimeoutSec=30
#PrivateTmp=true
[Install]
WantedBy = multi-user.target
启动监视节点
systemctl daemon-reload && systemctl start unvdb5677
查看状态
export PGPASSWORD=同步密码
ud_autoctl show uri
添加编组 同一编组内的多个数据库实例自动维护主从关系 不同编组之间的数据库实例互不影响
ud_autoctl create formation --pgdata /data/udb/data --kind pgsql --formation dev
#创建编组dev
安装数据库主节点
安装主节点
export PGPASSWORD=同步密码
ud_autoctl create unvdb --uddata /data/udb/data --pgport 5678 --hostname 192.168.2.31 --name database1 --formation dev --skip-pg-hba --no-ssl --monitor 'postgres://autoctl_node@监视节点ip:监视节点端口/ud_auto_failover?sslmode=prefer' --run
修改hba.conf
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all "udautofailover_monitor" 0.0.0.0/0 trust
host replication "udautofailover_replicator" 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
host all all 0.0.0.0/0 md5
#配置同步认证,只需要在第一个数据库节点执行一次即可
ud_autoctl config set replication.password 同步密码 --uddata /data/udb/data
注册服务
vi /etc/systemd/system/unvdb5678.service
[Unit]
Description = unvdb5678 Service
After=network-online.target
Wants=network-online.target
[Service]
WorkingDirectory = /data/udb/soft/bin
Environment = 'PGDATA=/data/udb/data'
Environment = 'LD_LIBRARY_PATH=/data/udb/soft/lib:$LD_LIBRARY_PATH'
Environment = 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/data/udb/soft/bin'
User = unvdb
ExecStart = /data/udb/soft/bin/ud_autoctl run
Restart = always
StartLimitBurst = 0
ExecReload = /data/udb/soft/bin/ud_autoctl reload
#Type=forking
TimeoutSec=30
#PrivateTmp=true
[Install]
WantedBy = multi-user.target
启动主节点
systemctl daemon-reload && systemctl start unvdb5678
安装更多数据库节点
命令同安装数据库主节点相同,当编组内拥有主节点时会自动配置为从节点
管理维护
查看
ud_autoctl show state --uddata /data/udb/data/ --formation dev
显示编组内节点信息ud_autoctl show uri --formation dev --uddata /data/udb/data/
显示编组实例连接信息ud_autoctl show settings --formation dev
显示编组配置信息ud_autoctl show systemd
显示注册服务文件信息
编组管理
ud_autoctl create formation --uddata /data/udb/data/ --kind pgsql --formation dev
创建编组ud_autoctl drop formation --formation aa --uddata /data/udb/data/
删除编组ud_autoctl get formation settings --formation dev
获取编组配置信息ud_autoctl set formation number-sync-standbys 0 --formation dev
设置编组同步复制数量,至少要有N+1个从节点。默认是从节点数量减1,当从节点由多个个变为1个时,不会自动切换为异步复制。手动设置为0,可以转换为异步复制。
节点管理
ud_autoctl set node replication-quorum false --name 节点名称 --formation dev
将节点配置为异步复制,但仍参与故障转移ud_autoctl set node candidate-priority 99 --formation dev --name 节点名称
配置节点权重为99,将会优先选中做为主节点。设置为0时永远不会被选为主节点ud_autoctl drop node --destroy --formation dev
将节点从编组中移除
其它
监视节点是否要高可用 监视节点用于监视其它数据库节点状态,当发生故障时自动切换主从配置。 当监视节点故障时,不会影响数据库节点的运行。但故障转移功能将失效。所以监视节点目前不需要配置高可用。 建议监视节点故障后及时恢复