Skip to main content
Version: v3&v6

达梦8数据库从内置转到外置

需要一次停机升级

前置约束

  1. 要求ONES版本不低于3.14.59
  2. 达梦8数据库SYSDBA用户密码
  3. 仅支持达梦8数据库

配置参数

配置项类型示例描述
is_use_independence_dm8booltrue是否使用外置达梦数据库,当前场景下值为"true"
dmdb_hoststring127.0.0.1外置达梦数据库的数据库访问地址
dmdb_portint5236外置达梦数据库的数据库访问端口
dmdb_passwordstring"DM5236Password"达梦数据库的SYSDBA用户的访问密码。如有特殊情况不能提供,会影响正常使用
wiz_editor_db_namestring"wizeditor"为知编辑器使用的数据库名,建议使用"wizeditor"。注意:值应当与wiz_editor_db_user相同
skip_table_createbooltrue为知编辑器使用的数据库是否跳过数据表创建,当前场景下值为true
wiz_editor_use_dbstringdm为知编辑器使用的数据库,支持mysql和dm,当前场景下值为dm
wiz_editor_db_userstring"wizeditor"为知编辑器使用的数据库用户名,建议使用"wizeditor"。注意:值应当与wiz_editor_db_name相同

操作步骤

准备外置数据库

安装达梦8数据库(如已安装可跳过)

参考资料:DM8 安装手册-Linux(Unix)下 DM 的安装与卸载

  1. 将授权key上传到安装达梦8数据库的服务器。根据经验,达梦数据库只有在安装时指定key,安装后只允许更新key。如果安装时没有指定key,后续将无法更新key。
  2. 按需编写setup.xml文件。如不清楚该如何配置,可以参考示例:
    <?xml version="1.0" encoding="UTF-8"?>  
    <DATABASE>
    <!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。
    -->
    <LANGUAGE>EN</LANGUAGE>
    <!--安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 -->
    <TIME_ZONE>+08:00</TIME_ZONE>
    <!-- key 文件路径 -->
    <KEY>{{key文件路径,根据实际情况替换。例如:/home/dmdba/install/dm.key}}</KEY>
    <!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户
    端。默认为 0。 -->
    <INSTALL_TYPE>0</INSTALL_TYPE>
    <!--安装路径,不允许为空。 -->
    <INSTALL_PATH>/home/dmdba/dmdbms</INSTALL_PATH>
    <!--是否初始化库,取值 Y/N、y/n,不允许为空。 -->
    <INIT_DB>N</INIT_DB>
    <!--是否创建数据库实例的服务,值 Y/N y/n,不允许为空,不初始化数据库将忽略此节点。
    非 root 用户不能创建数据库服务。 -->
    <CREATE_DB_SERVICE>N</CREATE_DB_SERVICE>
    <!--是否启动数据库,值 Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
    <STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
    </DATABASE>
  3. 这一步强烈建议在达梦售后人员指导下进行操作,前文配置文件请勿照抄。如有疑问可以联系达梦售后人员。

创建存储ONES数据的数据库实例

参考资料:DM8 dminit 使用手册

  1. 使用dminit工具创建数据库。dminit工具支持众多参数,ONES服务的正常运行,依赖于CASE_SENSITIVE=Y CHARSET=1 LENGTH_IN_CHAR=Y三个参数,这三个参数的值切勿更改。其他参数可以按实际情况调整。

    ./dminit PATH=~/dm/ \
    PAGE_SIZE=16 \
    CASE_SENSITIVE=Y CHARSET=1 LENGTH_IN_CHAR=Y \
    DB_NAME=ones (按实际情况调整) \
    LOG_PATH=~/dm/ones/onesdm.1.log \ (按实际情况调整)
    LOG_PATH=~/dm/ones/onesdm.2.log \ (按实际情况调整)
    SYSDBA_PWD={{dmdb_password}} \ (按实际情况调整)
    SYSAUDITOR_PWD={{dmdb_password}} INSTANCE_NAME=ones \ (按实际情况调整)
    PORT_NUM=5238 AUTO_OVERWRITE=0 (按实际情况调整)
  2. 当看到如下输出时,数据库创建成功。

  3. 这一步强烈建议在达梦售后人员指导下进行操作。本文档中缺少将达梦8设置为系统服务,并随机启动等步骤。该功能需要结合实际情况进行安装和配置。如有疑问可以联系达梦售后人员。

启动数据库服务

创建schema

  1. 使用disql工具连接到达梦8数据库
  2. 执行以下命令:
    # 此处的密码应当与SYSDBA用户一致,如有特殊情况不能设置一致,可能影响正常使用,请提前联系ONES技术支持
    create user "{{wiz_editor_db_user 或 wiz_editor_db_name}}" identified by "{{dmdb_password}}";

外置数据库连通性验证

  1. 登录ONES服务器,进入当前运行中实例的安装目录

    cd /data/ones/pkg/ones-example-3.14.xxxxx
  2. 进入ONES容器

    ./onesconfigure e
  3. 进入达梦8工具目录

    cd /home/dmdba/dmdbms/bin
  4. 使用disql工具验证外置达梦8数据库连通性

    # {{wiz_editor_db_user}}和{{dmdb_password}},是在准备外置数据库阶段设置的
    ./disql {{wiz_editor_db_user}}/{{dmdb_password}}@{{dmdb_host}}:{{dmdb_port}}

    如果看到以下输出,则代表ONES容器可以正常访问外置数据库。可以开始下一步,可能网络未连通或者账号密码有误,请根据错误提示进行排查:

导出内置数据库数据

  1. 登录ONES服务器,进入当前运行中实例的安装目录

    cd /data/ones/pkg/ones-example-3.14.xxxxx
  2. 进入ONES容器

    ./onesconfigure e
  3. 进入达梦8工具目录

    cd /home/dmdba/dmdbms/bin
  4. 停止ONES对外服务

    supervisorctl stop openresty

    查看openresty服务状态,确保服务已经停止

  5. 导出内置达梦8数据库数据

    ./dexp USERID=SYSDBA/52XzrfAo7DS7@127.0.0.1:5236 FILE=ones.dmp SCHEMAS=WIZEDITOR FEEDBACK=100 LOG=exp_ones.log

    导出过程的日志可以在终端即时查看,也会打印到当前目录下的exp_ones.log文件中。 当在日志末尾看到如下输出时,导出完成。
    注意:如红框所示,最后一行应该是"without warning"

    参考资料:DM8 dexp 逻辑导出手册

将内置数据库数据导入到外置

这一步骤可以在ONES容器中执行,也可以在外置数据库服务器中执行,需要先将数据文件拷贝到外置数据库服务器上。

  1. 登录ONES服务器,进入当前运行中实例的安装目录

    cd /data/ones/pkg/ones-example-3.14.xxxxx
  2. 进入ONES容器

    ./onesconfigure e
  3. 进入达梦8工具目录

    cd /home/dmdba/dmdbms/bin
  4. 将从内置数据库导出的数据,导入到外置达梦8数据库中

    ./dimp SYSDBA/{{dmdb_password}}@{{dmdb_host}}:{{dmdb_port}} FILE=ones.dmp LOG=ones_import.log SCHEMAS={{wiz_editor_db_user}}

    导出过程的日志可以在终端即时查看,也会打印到当前目录下的ones_import.log文件中。 当在日志末尾看到如下输出时,导出完成。
    注意:如红框所示,最后一行应该是"without warning"

    参考资料:DM8 dimp 逻辑导入手册

  5. 此时ONES数据库中的数据已经成功导入到外部数据库中。

  6. 验证

    1. 使用disql连接到外置达梦8数据库
    ./disql {{wiz_editor_db_user}}/{{dmdb_password}}@{{dmdb_host}}:{{dmdb_port}}
    1. 查看数据是否和内置数据库中一致

ONES服务升级变配

  1. 登录ONES服务器,进入当前运行中实例的安装目录

    cd /data/ones/pkg/ones-example-3.14.xxxxx
  2. 修改工作目录下的config.json。在config.json中添加如下配置:

    "wiz_editor_use_db": "dm",
    "wiz_editor_db_user": {{wiz_editor_db_user}},
    "wiz_editor_db_name": {{wiz_editor_db_name}},
    "is_use_independence_dm8": true,
    "skip_table_create": true,
    "dmdb_host": {{dmdb_host}},
    "dmdb_port": {{dmdb_port}},
    "dmdb_password": {{dmdb_password}}
  3. 结合私有部署升级步骤中进行升级

  4. 升级完成后,进入ONES容器。使用supervisorctl status查看进程列表,将不再有"dmdb"的进程存在。

FAQ

Q: 在安全版数据库中,使用 disql 或是 客户端登录时,显示:

stat private key fail [-70070]: Init SSL context error 或者 [-70070]:初始化 SSL 环境失败 

要如何解决?

A: 检查初始化参数 ENABLE_ENCRYPT 是否设为 1,如果为 1,说明所有的通信都已经 SSL 加密了,同时任何用户连接数据库都需要 SSL 证书。安全版中默认开启了 SSL 加密。可以执行以下语句将其关闭:

sp_set_para_value(2,'ENABLE_ENCRYPT',0);