sys_upgrade使用
关键字:
Kingbase、升级、sys_upgrade、人大金仓
命令行参数
Short | Long | Description |
-b | --old-bindir=BINDIR | 旧的KingbaseES可执行文件目录 |
-B | --new-bindir-BINDIR | 新的KingbaseES可执行文件目录 |
-c | --check | 只检查集簇,不更改任何数据 |
-d | --old-datadir=DATADIR | 旧的集簇数据目录 |
-D | --new-datadir=DATADIR | 新的集簇数据目录 |
-j | --jobs | 同时使用的进程或线程数 |
-k | --link | 使用硬链接来代替将文件拷贝到新集簇 |
-o | --old-options | 直接传送旧kingbase命令的选项,多个选项可以追加在后面 |
-O | --new-options | 直接传送给新kingbase命令的选项,多个选项可以追加在后面 |
-p | --old-port=PORT | 旧的集簇端口号 |
-P | --new_port=PORT | 新的集簇端口号 |
-r | --retain | 在成功后保留SQL和日志文件 |
-s | --socketdir=DIR | 升级期间用于kingbase套接字的目录; 默认为当前工作目录; |
-U | --username=NAME | 集簇的安装用户名 |
-v | --verbose | 启动详细的内部日志 |
-V | --version | 显示版本信息,然后退出 |
-? | --help | 显示帮助,然后退出 |
--clone | 使用高效的文件拷贝 |
使用方法
升级的步骤是:
- 移动旧集簇(可选)
- 如果使用的是与版本相关的安装目录(例如/opt/KingbaseES/V8),就不需要移动旧的集簇。图形化的安装程序会使用版本相关的安装目录。
- 如果按照目录不是版本相关的,就有必要移动当前的KingbaseES安装目录,以免干扰新的KingbaseES安装。一旦当前的KingbaseES服务器被关闭,就可以安全地重命名旧KingbaseES安装目录。
- 对于源码安装,编译新版本
用兼容旧集簇的configure表级编译新的KingbaseES源码。在开始升级之前,sys_upgrade将检查sys_controldata来确保所有设置都是兼容的。
- 安装新的KingbaseES二进制文件
安装新服务器的二进制文件和支持文件。sys_upgrade会被包含在默认的安装中。对于源码安装,如果你希望把新服务器安装在一个自定义的位置,可以使用prefix变量:
make prefix=/opt/Kingbase/ES/V8.new install
- 初始化新的KingbaseES集簇
使用initdb初始化新集簇,这里也要使用与旧集簇兼容的initdb。许多预编译的安装程序会自动做这个步骤。这里没有必要启动新集簇。
- 安装扩展共享对象文件
- 许多扩展和自定义模块,无论是来自contrib还是其他来源,都使用共享对象文件(或DLL),例如kbcrypto.so,如果旧集簇使用它,则必须在新集簇中安装与新服务器二进制文件匹配的共享对象文件,通常通过操作系统命令
- 不要加载模式定义,例如,CREATE EXTENSION kbcrypto,因为它们将从旧集群中复制。如果扩展更新可用,sys_upgrade将报告此情况并创建一个可以稍后运行以更新它们的脚本。
- 调整认证
sys_upgrade将会多次连接到旧服务器和新服务器,因此需要在sys_hba.conf中把认证设置成peer或者使用一个~/.encpwd文件。
- 停止两个服务器
- 准备备用服务器升级
- 运行sys_upgrade
运行新服务器的sys_upgrade二进制文件,指定新旧集簇的数据和可执行文件(bin)目录。也可以指定用户和端口,以及是否想要用链接来取代默认的肤质行为对数据文件进行处理。链接模式不需要文件拷贝,升级会快很多,且将使用更少的磁盘空间,但是在升级后一旦启动新集簇,旧集簇就无法被访问。
- 升级流复制和日志传送备用服务器
如果使用链接模式并且有流复制备用服务器,可以这样快速升级:
-
-
- 在备用服务器上安装新的KingbaseES二进制文件
- 确保新的备用机数据目录不存在
- 安装扩展共享对象文件
-
在新备用机上安装和新的主集簇中相同的自定义共享对象文件
-
-
- 停止备用服务器
- 保存配置文件
- 运行rsync
-
在使用链接模式时,备用服务器可以使用rsync快速升级。为了实现这一点,在主服务器上一个高于新旧数据库集簇目录的目录中为每个备用服务器运行这个命令:
rsync --archive --delete --hard-links --size-only --no-inc-recursive old_dir new_dir remote_dir
-
-
- 配置流复制和日志传送备用服务器
-
- 恢复sys_hba.conf
- 启动新服务器
- 升级后处理
- 统计信息
- 删除旧集簇