达梦数据库有很多备份和恢复的方式,但是有时候是需要冷迁移的。比如一个环境,就1台服务器,达梦数据文件的目录没有空间了,系统也没有做LVM
就是需要将数据文件、控制文件、重做日志文件移动到新的目录下。下面就简单演示一下。
1.环境介绍
系统 | cents OS7.8 |
数据库文件路径 | /dm/dmdata |
新的数据库文件路径 | /dm/dmdata01 |
2.复制数据库
利用cp命令,复制原数据库到新的目录
3.控制文件转换为文本文件
达梦数据库启动是dm.ini 找 dm.ctl.而dm.ctl里面记录了数据文件的路径,所以要修改控制文件,但是二进制文件需要转换成文本后,才能修改,所以需要这个步骤。
dmctlcvt工具将其控制文件为文本文件的,这个在bin目录下面
./dmctlcvt TYPE=1 SRC=/dm/dmdata01/prod/dm.ctl DEST=/tmp/dmctl.txt |
修改控制文件的文本主要替换 file path及htspath等涉及路径的配置,更改为对应新的路径。命令如下:
大家注意一下 tbs_prod01.dbf 和 tbs_prod_idx01.dbf 由于自己失误,创建到其他路径,这里就不要修改这个2个路径了
[dmdba@dm1 bin]$ [dmdba@dm1 bin]$ ./dmctlcvt TYPE=1 SRC=/dm/dmdata01/prod/dm.ctl DEST=/tmp/dmctl.txt DMCTLCVT V8 convert ctl to txt success! [dmdba@dm1 bin]$ [dmdba@dm1 bin]$ [dmdba@dm1 bin]$ [dmdba@dm1 bin]$ cat /tmp/dmctl.txt |grep -v "mirror_path"|grep -v "^#"|grep path fil_path=/dm/dmdata/prod/SYSTEM.DBF fil_path=/dm/dmdata/prod/ROLL.DBF fil_path=/dm/dmdata/prod/prod01.log fil_path=/dm/dmdata/prod/prod02.log fil_path=/dm/dmdata/prod/MAIN.DBF fil_path=/dm/dmdbms/data/PROD/tbs_prod01.dbf fil_path=/dm/dmdbms/data/PROD/tbs_prod_idx01.dbf htspath=/dm/dmdata/prod/HMAIN [dmdba@dm1 bin]$ [dmdba@dm1 bin]$ |
修改后查看新路径
[dmdba@dm1 bin]$ [dmdba@dm1 bin]$ cat /tmp/dmctl.txt |grep -v "mirror_path"|grep -v "^#"|grep path fil_path=/dm/dmdata01/prod/SYSTEM.DBF fil_path=/dm/dmdata01/prod/ROLL.DBF fil_path=/dm/dmdata01/prod/prod01.log fil_path=/dm/dmdata01/prod/prod02.log fil_path=/dm/dmdata01/prod/MAIN.DBF fil_path=/dm/dmdbms/data/PROD/tbs_prod01.dbf fil_path=/dm/dmdbms/data/PROD/tbs_prod_idx01.dbf htspath=/dm/dmdata01/prod/HMAIN [dmdba@dm1 bin]$ [dmdba@dm1 bin]$ |
4. 控制文件转换成二进制
5.更新dm.ini 里面的控制文件路径
6.测试启动
启动就先不要用之前注册的服务了,那个服务的路径还没有修改呢
可以看到数据已经成功启动
7.验证数据文件的路径
8.修改注册文件
如果懒得修改,删除了重新注册也行
到此为止,迁移完