DM数据库迁移

Posted yangeoooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DM数据库迁移相关的知识,希望对你有一定的参考价值。

货分享|DM数据库迁移方法(物理迁移)

本章的测试环境:

①操作系统: Windows 10 (64位)、中标麒麟7.0 (64位)
②数据库版本:DM8

相关关键字:DM数据库迁移 物理迁移

DM数据库物理迁移

假设我们有一台数据库服务器A [Windows 10 (64位)],安装有DM8数据库(数据库名称为DAMENG,实例为DMSERVER,端口5236),现需要将服务器A中的DM数据库迁移到服务器B(中标麒麟Linux系统)中,所要迁移的源数据库实例安装在服务器A的D:\\dmdbms\\data目录。

01迁移前准备

①查询源服务器DM数据库版本
执行如下命令查询源数据库服务器A的数据库版本号:
select* from v$version;

②查询源数据库数据文件
执行如下命令查询源数据库服务器A的数据文件:
select tablespace_name, file_name, BYTES from dba_data_files;

③查询源数据库参数文件中路径地址
执行如下命令查询源数据库A配置文件dm.ini中带路径参数(这些参数在迁移到目标服务器B后要与目标数据库中数据文件路径一致):
select PARA_NAME, T.PARA_VALUE from v$dm_ini t where T.PARA_NAME like ‘%PATH%’;

④目标服务器安装数据库软件
在目标服务器B上安装相同版本的DM数据库软件,只需要安装数据库软件,不需要创建数据库实例,若目标服务器B上已有实例也没关系,可以迁移为不同实例,两个实例并存,互不影响。假设DM数据库安装在/dm文件夹下,安装步骤略。

02源服务器上数据文件

拷贝至目标服务器
使用DM服务查看器停止源数据库服务器A的数据库实例,停止数据库实例是为了保证数据库的一致性。

实例停止后,将源服务器A中D:\\dmdbms\\data\\DAMENG中数据库相关文件(配置文件、控制文件和数据文件)拷贝至目标服务器B的/dm/data/DAMENG中(此目录可按照实际需要指定,但要保证步骤3和4使用的是相同目录,若能保证源数据库服务器和目标服务器该文件路径相同则可以省去步骤3和4操作),文件参考如下截图:

数据文件是步骤1中查询出来的数据文件,配置文件包含.ini后缀的配置文件(如dm.ini、dmarch.ini、sqllog.ini等),控制文件为dm.ctl。

数据库的备份文件和归档日志可以不用拷贝,不影响迁移后的数据库的启动和运行,数据库会在新库上创建新的归档日志文件。

03修改目标数据库配置文件

若迁移的目标数据库文件路径与源数据库文件路径相同,则步骤3和4可忽略。比如,从Linux系统源服务器A的/dm/data/DAMENG目录迁移到目标服务器B的/dm/data/DAMENG目录,则不需要进行修改配置文件和控制文件的操作。直接跳至步骤5。

①修改数据库参数配置文件dm.ini
打开数据库参数配置文件dm.ini,修改PATH路径中源数据库目录“D:\\dmdbms\\data\\DAMENG\\”为目标数据库“/dm/data/DAMENG/”目录(注意Linux下路径是左斜杠),将修改后的dm.ini覆盖目标服务器B中该文件。

②修改归档配置文件dmarch.ini
打开归档配置文件dmarch.ini,修改归档路径配置参数ARCH_DEST为目标服务器地址“/dm/data/arch”,将修改后的dmarch.ini覆盖目标服务器B中该文件。

04修改目标数据库控制文件

若迁移的目标数据库文件路径与源数据库相同,则忽略此步骤。
DM数据库控制文件中包含了数据文件的路径,若迁移的目标数据文件路径与实际控制文件中不同,就需要修改控制文件中数据文件的位置,DM控制文件是二进制文件,无法直接编辑,需要使用dmctlcvt工具转换为文本文件后编辑。

①将控制文件dm.ctl转换为文本文件
在DM安装目录的bin目录下,执行dmctlcvt help可查看该命令的使用帮助。
D:\\dmdbms\\bin>dmctlcvt help
DMCTLCVT V8
格式:dmctlcvt.exe KEYWORD=value
注意:控制文件名称必须指定为dm.ctl、dmmpp.ctl

示例:

dmctlcvt.exe TYPE=1 SRC=d:\\data\\dameng\\dm.ctl DEST=d:\\data\\dameng\\dmctl.txt
dmctlcvt.exe TYPE=2 SRC=d:\\data\\dameng\\dmctl.txt DEST=d:\\data\\dameng\\dm.ctl

执行如下命令,将源服务器A的控制文件转换为文本文件:

dmctlcvt type=1 src=…/data/DAMENG/dm.ctl dest=…/data/DAMENG/dmctl.txt

执行成功,生成文件dmctl.txt。

D:\\dmdbms\\bin>dmctlcvt type =1 src=…/data/DAMENG/dm.ctl dest=…/data/DAMENG/dmctl.txt
DMCTLCVT V8
convert ctl to txt success!

②修改路径为目标服务器的指定路径
修改dmctl.txt文件内容,将数据文件的路径fil_path参数由源数据库文件路径“D:\\dmdbms\\data\\DAMENG\\”修改为目标服务器B的数据库文件路径“/dm/data/DAMENG/”,注意Linux下路径是左斜杠。

③将修改后的文本文件转换为目标控制文件
执行如下命令,将修改后的文本文件dmctl.txt转换为新的控制文件dmnew.ctl:
dmctlcvt type=2 src=…/data/DAMENG/dmctl.txt dest=…/data/DAMENG/dmnew.ctl
执行成功,生成控制文件dmnew.ctl。

D:\\dmdbms\\bin>dmctlcvt type =2 src=…/data/DAMENG/dmctl.txt dest=…/data/DAMENG/dmnew.ctl
DMCTLCVT V8
convert txt to ctl success!

将生成的控制文件dmnew.ctl复制到目标服务器B上,重命名替换之前的dm.ctl文件。

05目标服务器注册数据库服务
并启动数据库
配置文件和控制文件修改完成之后,登录目标服务器B,进入数据库安装目录/dm/bin下,用DM数据库安装用户执行dbca.sh,打开数据库配置助手图形化界面,选择注册数据库服务(也可以使用root用户执行/dm/script/root下dm_service_installer.sh脚本注册数据库服务)。

在打开的注册数据库服务页面,点击【浏览】,选择我们修改后的dm.ini文件,系统会自动读取数据库名、实例名、端口号、数据库目录信息。如下图所示,点击【完成】。

注意:如果目标服务器5236端口被占用,也可以修改端口,使用其他端口注册服务。

如果是非root用户的安装DM数据库,界面会提醒使用root用户运行如下脚本,按照界面提醒,使用root用户手工执行脚本,完成数据库实例服务注册和启动达梦数据库实例。

mv/dm/bin/DmServiceDMSERVER.service
/usr/lib/systemd/system/DmServiceDMSERVER.service
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service

启动中提示报错,查看日志信息,根据错误提醒发现是buffer参数过大导致(因为原windows机器内存较大,迁移到新Linux服务器是虚拟机内存较少,导致内存不足),错误信息如下:

[dmdba@localhostlog]$ more DmServiceDMSERVER.log
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-45-19.11.21-116030-ENT startup…
Can not create buffer pools, out of memory!

修改dm.ini中buffer值,适当改小,修改完成后重新启动数据库(启动中可能会有警告提醒控制文件ctl_bak路径不存在,这个可忽略,数据库启动后会自动创建该路径)。

systemctl start DmServiceDMSERVER.service

至此,数据库物理迁移动作完成,数据库启动正常。

在迁移中,注意保证配置文件和控制文件的目录正确,如果控制文件中数据文件的路径参与实际文件不符,数据库启动时并提示数据文件找不到的错误,根据错误重新修改控制文件中的数据文件路径参数,重新启动数据库即可。

最后总结一下,DM数据库的主要物理文件包含参数配置文件、控制文件、数据文件三部分,DM数据库启动时,先根据dm.ini等参数文件打开控制文件dm.ctl,启动数据库到MOUNT状态,再根据控制文件找到数据文件,并打开数据库(open状态)。理解了达梦体系结构更方便于理解本章的操作。

此方法受限于所迁移的服务器需是相同数据库版本(可以是不同平台),并且拷贝数据文件时需要关闭源数据库。一般情况下,迁移数据库优先使用备份还原,dexp和dimp,或使用DM数据迁移工具完成,这些都可以在源数据库正常工作情况下执行。

以上是关于DM数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

DM数据库迁移

DM数据库迁移

联机增量迁移DM数据库

联机增量迁移DM数据库

联机增量迁移DM数据库

联机增量迁移DM数据库