达梦8数据库从内置转到外置
需要一次停机升级
前置约束
- 要求ONES版本不低于3.14.59
- 达梦8数据库SYSDBA用户密码
- 仅支持达梦8数据库
配置参数
配置项 | 类型 | 示例 | 描述 |
---|---|---|---|
is_use_independence_dm8 | bool | true | 是否使用外置达梦数据库,当前场景下值为"true" |
dmdb_host | string | 127.0.0.1 | 外置达梦数据库的数据库访问地址 |
dmdb_port | int | 5236 | 外置达梦数据库的数据库访问端口 |
dmdb_password | string | "DM5236Password" | 达梦数据库的SYSDBA用户的访问密码。如有特殊情况不能提供,会影响正常使用 |
wiz_editor_db_name | string | "wizeditor" | 为知编辑器使用的数据库名,建议使用"wizeditor"。注意:值应当与wiz_editor_db_user相同 |
skip_table_create | bool | true | 为知编辑器使用的数据库是否跳过数据表创建,当前场景下值为true |
wiz_editor_use_db | string | dm | 为知编辑器使用的数据库,支持mysql和dm,当前场景下值为dm |
wiz_editor_db_user | string | "wizeditor" | 为知编辑器使用的数据库用户名,建议使用"wizeditor"。注意:值应当与wiz_editor_db_name相同 |
操作步骤
准备外置数据库
安装达梦8数据库(如已安装可跳过)
- 将授权key上传到安装达梦8数据库的服务器。根据经验,达梦数据库只有在安装时指定key,安装后只允许更新key。如果安装时没有指定key,后续将无法更新key。
- 按需编写
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> - 这一步强烈建议在达梦售后人员指导下进行操作,前文配置文件请勿照抄。如有疑问可以联系达梦售后人员。
创建存储ONES数据的数据库实例
参考资料:DM8 dminit 使用手册
使用
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 (按实际情况调整)当看到如下输出时,数据库创建成功。
这一步强烈建议在达梦售后人员指导下进行操作。本文档中缺少将达梦8设置为系统服务,并随机启动等步骤。该功能需要结合实际情况进行安装和配置。如有疑问可以联系达梦售后人员。
启动数据库服务
创建schema
- 使用disql工具连接到达梦8数据库
- 执行以下命令:
# 此处的密码应当与SYSDBA用户一致,如有特殊情况不能设置一致,可能影响正常使用,请提前联系ONES技术支持
create user "{{wiz_editor_db_user 或 wiz_editor_db_name}}" identified by "{{dmdb_password}}";
外置数据库连通性验证
登录ONES服务器,进入当前运行中实例的安装目录
cd /data/ones/pkg/ones-example-3.14.xxxxx
进入ONES容器
./onesconfigure e
进入达梦8工具目录
cd /home/dmdba/dmdbms/bin
使用
disql
工具验证外置达梦8数据库连通性# {{wiz_editor_db_user}}和{{dmdb_password}},是在准备外置数据库阶段设置的
./disql {{wiz_editor_db_user}}/{{dmdb_password}}@{{dmdb_host}}:{{dmdb_port}}如果看到以下输出,则代表ONES容器可以正常访问外置数据库。可以开始下一步,可能网络未连通或者账号密码有误,请根据错误提示进行排查:
导出内置数据库数据
登录ONES服务器,进入当前运行中实例的安装目录
cd /data/ones/pkg/ones-example-3.14.xxxxx
进入ONES容器
./onesconfigure e
进入达梦8工具目录
cd /home/dmdba/dmdbms/bin
停止ONES对外服务
supervisorctl stop openresty
查看
openresty
服务状态,确保服务已经停止导出内置达梦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容器中执行,也可以在外置数据库服务器中执行,需要先将数据文件拷贝到外置数据库服务器上。
登录ONES服务器,进入当前运行中实例的安装目录
cd /data/ones/pkg/ones-example-3.14.xxxxx
进入ONES容器
./onesconfigure e
进入达梦8工具目录
cd /home/dmdba/dmdbms/bin
将从内置数据库导出的数据,导入到外置达梦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 逻辑导入手册
此时ONES数据库中的数据已经成功导入到外部数据库中。
验证
- 使用disql连接到外置达梦8数据库
./disql {{wiz_editor_db_user}}/{{dmdb_password}}@{{dmdb_host}}:{{dmdb_port}}
- 查看数据是否和内置数据库中一致
ONES服务升级变配
登录ONES服务器,进入当前运行中实例的安装目录
cd /data/ones/pkg/ones-example-3.14.xxxxx
修改工作目录下的
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}}结合私有部署升级步骤中进行升级
升级完成后,进入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);