数据库版本升级
注意:数据库版本升级需要根据业务现场进行实际规划,请联系 AntDB 交付人员协助。
本章以小版本升级为例说明数据库版本升级的主要流程。
准备工作
上传 tar 包
上传 tar 包到 adbmgr
所在主机的安装用户目录下。
解压缩 tar 包:
tar -zxvf antdb-t-ee-release-7.2.generic.*
查看集群状态
- 登录管理节点(adbmgr),执行如下的检查:
-- 查看集群各个节点的状态均为running
monitor all;
-- 查看各个主机上的agent状态均为running
monitor agent all;
-- 查看主备之间的流复制状态均为streaming
monitor ha;
- 登录到计算节点(GTMCOORD或者COORDINATOR),确认应用没有 session 连接到 AntDB :
select * from pg_stat_activity where state<>'idle'
查询结果为空即可。
如果确定即使有应用的连接也不影响,那可以忽略 session 检查的步骤。
升级操作
停止集群
登录管理节点(adbmgr),依次执行如下操作:
stop doctor; -- 停止doctor
stop all mode fast; --停止所有节点
stop agent all; --停止所有agent
停止adbmgr
在 adbmgr
所在主机上命令行操作:
mgr_ctl stop -D /home/antdb/data/mgr -m fast
注意: 如果有 adbmgr slave 存在,同样也要停止。
mgr_ctl stop -D /home/antdb/data/mgr_standby -m fast
备份 adbmgr 数据(可选)
注意:如果 antdb 交付人员告知此次版本替换需要初始化 adbmgr,则执行此步骤。
如果不需要初始化 adbmgr,则跳过此步骤。
在 adbmgr
所在主机上,在安装用户下(如 antdb 用户):
- 备份 adbmgr 中的配置数据:
mgr_dump -p 6432 -d antdb --mgr_table -f ~/mgr_table_0818.sql
- 备份 adbmgr 数据目录:
cp -r /home/antdb/data/mgr /home/antdb/data/mgr_0818 -- 备份整目录
du -sh /home/antdb/data/mgr* -- 查看备份目录和原始目录大小一致
注意替换为现场的实际目录。
备份 adbhome
在 adbmgr
所在主机上命令行操作:
echo $ADB_HOME
cp -r /home/antdb/app /home/antdb/app_1204
du -sh /home/antdb/app* -- 查看备份目录和原始目录大小一致
替换新版本
升级脚本使用安装部署包里的 antdb_upgrade.sh。该脚本有以下可执行选项。
[antdb@host227 antdb-t-ee-release-7.2.18.generic.aarch64]$ sh antdb_upgrade.sh --help
`antdb_upgrade.sh` Update AntDB with the new package.
Usage: sh antdb_upgrade.sh [OPTION]
Options:
-b, --backup Update antdb and backup before files.
-c, --config Database upgrade configuration file.
-h, --help Display this usage info and exit.
-V, --version Display this tool version info and exit.
说明:
其中指定-b会在升级前,备份二进制文件,如果步骤三已经手动备份过了,可以不用指定-b选项
-c 选项是必选选项,指定升级的配置文件
升级前,需要配置升级文件 (setup/common/upgrade_conf.ini)。配置信息与构建环境保持一致,各个字段信息参考该文件中的说明。
注意: 该配置文件最后的换行符不可全删掉(配置文件最后要有换行符)。
## upgrade_info 配置项说明:
##
## upgrade_type 分类:
## primary 表示只更新主节点,即当前机器节点
## all 表示更新所有节点
[upgrade_info]
upgrade_type = primary #分布式升级,选择primary只升级mgr节点,选择all升级所有节点
## host_info 配置说明:
##
## primary_node 格式:user,ssh_ip,ssh_port,antdb_app_path,antdb_data_path,antdb_ip,antdb_port
## user:数据库超级用户名,同时也应该是操作系统用户名 #集中式和分布式,这个都需要填写
## ssh_ip:数据库所在主机 SSH 服务地址 #针对集中式填写主机所在IP
## ssh_port:数据库所在主机 SSH 服务端口 #集中式和分布式,这个都需要填写
## antdb_app_path:数据库程序目录 #针对集中式,填写数据库程序目录
## antdb_data_path:数据库数据目录 #针对分布式的配置,填写分布式mgr节点的data目录
## antdb_ip:数据库监听的地址 #针对分布式的配置,填写分布式mgr节点的IP
## antdb_port:数据库监听的端口 #针对分布式的配置,填写分布式mgr节点的端口
##
## standby_node 格式:user,ssh_ip,ssh_port,antdb_app_path
## 各字段与 primary_node 含义相同。
##
## 注意:
## 1、standby_node 仅用于更新集中式高可用,其它情形下不需要此信息。
## 2、如果仅更新主节点,primary_node 中填写前4个字段即可。
## 3、如果更新分布式的所有节点,primary_node 中必须填写所有字段。
[host_info]
primary_node = antdb,10.1.206.227,22,/home/antdb/app,/home/antdb/data/mgr,10.1.206.227,1234
standby_node = antdb,10.1.206.228,22,/home/antdb/app
standby_node = antdb,10.1.206.229,22,/home/antdb/app
执行升级脚本:
sh antdb_upgrade.sh -c setup/common/upgrade_conf.ini
注:也可以指定 -b 参数,备份二进制文件,这里手动备份过,可以不指定此参数。
启动 adbmgr
在 adbmgr
所在主机上执行:
mgr_ctl start -D /home/antdb/data/mgr
发布二进制程序
连接到管理节点 ADBMGR,进入 adbmgr 操作界面,执行如下操作:
list host; --检查主机,配置正确
list node; -- 检查节点,配置正确
monitor agent all;--检查agent均为not running状态
开始部署二进制文件:
deploy all;
启动集群
连接到管理节点 ADBMGR,执行如下命令:
--启动所有主机上的agent进程
start agent all;
-- 启动所有节点
start all;
如果集群本身需要启动 doctor,则在这步启动 doctor,如果不需要,则忽略:
start doctor;
检查集群状态:
monitor all; -- 所有节点的状态应该均为 running
monitor hal; -- 检查节点流复制情况,状态应为streaming
检查集群版本:
select adb_version();
启动 adbmgr 备节点(可选)
存在 adbmgr 备机的情况下:
mgr_ctl start -D /home/antdb/data/mgr_standby