找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1986

积分

0

好友

266

主题
发表于 2 小时前 | 查看: 4| 回复: 0

为提升数据库的安全性、稳定性与性能,修复已知问题以匹配业务发展的需求,定期对数据库进行版本升级是必不可少的工作。本文将基于达梦8数据库,详细介绍在数据守护集群(以一主一备为例)环境下的完整升级流程,涵盖从准备、升级到验证的全方位操作。

升级前准备工作

充分的准备工作是升级成功的关键,主要涉及数据备份、当前环境确认以及升级包获取。

1. 登录数据库并进行完整备份

在开始任何升级操作前,首要任务是执行数据库全量备份。假设你已配置好免密登录和环境变量(例如设置了 alias ds="disql -L /:5236 as sysdba"),可以快速执行备份命令。

ds
backup database backupset '/dmbak/fullbak20260304' compressed;

终端执行数据库备份命令截图

提示:配置环境变量和别名可以极大简化日常运维操作。例如,将常用路径设置为别名,能快速切换目录或执行特定命令。

2. 校验备份集的完整性

备份完成后,务必使用 dmrman 工具检查备份文件是否完整可用,这是保证备份有效性的关键一步。

dmrman
check backupset '/dmbak/fullbak20260304';

使用dmrman校验备份集完整性

3. 记录当前数据库版本

明确升级前的基线版本,便于升级后对照验证。

select * from v$version;

查询升级前的数据库版本信息

4. 安装升级镜像并获取bin目录

升级的本质是替换数据库安装目录下的 bin 可执行文件。首先需要从新版ISO镜像中提取出 bin 目录。

  1. 创建升级目录 (root用户执行)
    mkdir -p /dm_update
    chown dmdba:dinstall -R /dm_update
  2. 挂载新版ISO镜像包 (root用户执行)
    mount dm8_20250910_x86_kylin10_sp1_64.iso /mnt

    挂载达梦数据库ISO镜像文件

  3. 执行镜像安装 (切换至dmdba用户执行)
    进入挂载点,以交互模式安装到准备好的升级目录。

    cd /mnt
    ./DMInstall.bin -i

    安装过程中,请根据提示选择语言(如简体中文)、时区(中国标准时间)和安装类型(典型安装),并将安装路径指定为 /dm_update

    安装成功后,控制台会提示执行root脚本,此时无需执行,因为我们仅需 bin 目录。

  4. 打包bin目录
    安装完成后,进入升级目录,将 bin 文件夹打包。
    cd /dm_update
    tar -czvf dm_update.tar.gz bin/

    至此,我们得到了核心升级包 dm_update.tar.gz

5. 提取并保存函数索引创建语句

如果你的数据库中存在函数索引,必须提前获取其创建脚本,因为在升级过程中函数索引可能失效,需在升级后重建。

ds
select
        'create index "'
        ||t1.index_name
        ||'" on '
        ||t1.owner
        ||'.'
        || t1.table_name
        ||'('
        ||FBI_DEF(t2.id)
        ||');'
FROM
        ALL_INDEXES t1,
        sysobjects t2
where
        t1.index_name=t2.name
        and t1.INDEX_TYPE='FUNCTION-BASED NORMAL';

查询并获取函数索引的创建语句
请将查询结果妥善保存到一个SQL脚本文件中,以备后续使用。

升级达梦数据库

本阶段将按照“备库 -> 监视器 -> 主库”的顺序进行滚动升级,以最大程度保证集群的高可用性。

1. 分发升级包

使用 dmdba 用户,将 dm_update.tar.gz 复制到主库、备库和监视器服务器的达梦安装目录(例如 /dm)。

cp -rp dm_update.tar.gz /dm

2. 升级备库

  1. 登录备库服务器,进入安装目录并备份原 bin 目录。
    cd /dm
    cp -r bin bin_bak2026
  2. 依次停止相关服务
    /dm/bin/DmWatcherServiceGRP1 stop
    /dm/bin/DmServiceDAMENG stop  # 请替换为实际的服务名
    /dm/bin/DmAPService stop

    关键检查:停止数据库后,务必查看日志文件(如 /dm/log/dm_DAMENG_202603.log),确认最后有 DM Database Server shutdown successfully 字样,表示数据库已正常停止。

  3. 执行版本升级:删除旧目录,解压新包,并恢复原有的服务控制脚本。
    cd /dm
    rm -rf bin/
    tar -zxvf dm_update.tar.gz
    cd bin_bak2026/
    cp DmServiceDAMENG ../bin/  # 将备份的旧服务脚本拷贝回新bin目录

3. 升级监视器

如果部署了多个监视器,需对每一台执行此操作。

  1. 登录监视器服务器,停止监视器服务。
    cd /dm/bin
    ./DmMonitorService stop
  2. 备份并升级,步骤与备库类似。
    cd /dm
    cp -r bin bin_bak2026
    rm -rf bin/
    tar -zxvf dm_update.tar.gz
    cd bin_bak2026/
    cp DmServiceDAMENG ../bin/  # 同样恢复服务脚本

4. 升级主库

在升级主库前,必须检查purge系统,建议purge值在10万以下,以防事务堆积影响升级。

Select * from v$purge;

确认无误后,登录主库服务器,执行与备库完全相同的停止、备份、替换操作(步骤2.1至2.3)。

5. 启动服务并恢复集群

按照 备库 -> 主库 -> 监视器 的顺序启动服务,恢复数据守护集群。

  1. 启动备库服务
    cd /dm/bin
    ./DmServiceDAMENG start
    ./DmWatcherServiceGRP1 start
  2. 启动主库服务
    cd /dm/bin
    ./DmServiceDAMENG start
    ./DmWatcherServiceGRP1 start
  3. 启动监视器服务
    cd /dm/bin
    ./DmMonitorService start

升级后的验证检查工作

升级完成后,必须进行系统性的验证,确保数据库集群运行正常且版本升级成功。

1. 检查数据守护集群状态

使用命令行监视器连接到集群,查看主备库状态、守护进程等信息是否正常。

cd /dm/bin
./dmmonitor /dmdata/DAMENG/dmmonitor.ini

进入监视器界面后,输入 show 命令,仔细核对各项信息。

2. 确认数据库版本

登录数据库,验证版本号是否已更新为目标版本。

ds
select * from v$version;

验证升级后的数据库版本信息

3. 重建函数索引(如需要)

如果之前提取了函数索引创建语句,现在需要先删除旧的函数索引,再使用保存的语句重建。

  1. 生成删除语句
    select
            'drop index '
            ||t1.owner
            ||'."'
            ||t1.index_name
            ||'";'
    FROM
            ALL_INDEXES t1,
            sysobjects t2
    where
            t1.index_name=t2.name
        and t1.INDEX_TYPE='FUNCTION-BASED NORMAL';

    执行生成的 drop index 语句。

  2. 执行重建:运行在准备阶段保存下来的 create index 语句。

完成以上所有步骤后,你的达梦8数据库数据守护集群就已成功升级到新版本。整个流程涉及众多细节,建议在测试环境充分演练后再于生产环境操作,并确保每一个备份步骤都执行到位。如果在升级过程中遇到具体问题,也可以在云栈社区的相关技术板块与更多同行交流探讨。




上一篇:新手SRC实战:四个“朴实无华”的漏洞如何带来2700元赏金
下一篇:剖析Linux内核七大核心设计:VFS、CFS、内存管理、RCU与eBPF实战解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-5 19:13 , Processed in 0.506208 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表