达梦数据库如何变更数据文件目录

达梦数据库如何变更数据文件目录

在实际的生产环境中会遇到数据文件目录需要变更的情况,下面我来讲解下如何变更数据库目录从/data 转移到/data2
建议在操作之前先进行一个全备或者确定有近期完整的有效备份,防止操作失误无法进行后退。

方法一:针对数据量不大的情况下,可以使用重新初始化一个新的数据库实例在需要迁移的目录上,将数据通过dts、模式导出导入、dmrman备份恢复的方式恢复到新的数据库实例当中;这里我就不做过多赘述。可以从达梦云适配中心参考对应的指导文档。

链接: 达梦云适配中心.

方法二:对于数据量比较大,迁移数据时间超过预期的停机时间,我们可以变更数据文件目录到指定的目录下。

操作系统版本: Red Hat Enterprise Linux Server release 6.9 (Santiago)
数据库版本:DM V8

2.1 把data1目录下的数据转换到data2目录下
在这里插入图片描述
2.2 将数据拷贝至data2目录下,注意权限的问题。

[root@RH6 data1]# cp -r /data1/OADB/ /data2/
[root@RH6 data1]# ls -l /data*
/data1:
total 20
drwx------. 2 dmdba dinstall 16384 Apr  2 02:30 lost+found
drwxr-xr-x. 6 dmdba dinstall  4096 Apr  2 02:41 OADB

/data2:
total 20
drwx------. 2 root root 16384 Apr  2 02:31 lost+found
drwxr-xr-x. 6 root root  4096 Apr  2 02:44 OADB
[root@RH6 data1]# chown dmdba:dinstall /data2/ -R
[dmdba@RH6 bin]$ ls -l /data*
/data1:
total 20
drwx------. 2 dmdba dinstall 16384 Apr  2 02:30 lost+found
drwxr-xr-x. 6 dmdba dinstall  4096 Apr  2 02:41 OADB

/data2:
total 20
drwx------. 2 dmdba dinstall 16384 Apr  2 02:31 lost+found
drwxr-xr-x. 6 dmdba dinstall  4096 Apr  2 02:50 OADB
[dmdba@RH6 bin]$ 

2.3 替换配置文件中原来data1的目录名称更换为data2

[root@RH6 data1]# 
[dmdba@RH6 OADB]$ sed -i "s/data1/data2/g" dm.ini^C
[dmdba@RH6 OADB]$ cat dm.ini|grep PATH
		CTL_PATH                        = /data1/OADB/dm.ctl                   #ctl file path
		CTL_BAK_PATH                    = /data1/OADB/ctl_bak                 #dm.ctl backup path
		SYSTEM_PATH                     = /data1/OADB                                 #system path
		CONFIG_PATH                     = /data1/OADB                                 #config path
		TEMP_PATH                       = /data1/OADB                                 #temporary file path
		BAK_PATH                        = /data1/OADB/bak                         #backup file path
		DFS_PATH                        =                                                     #path of db_file in dfs
		REDOS_FILE_PATH_POLICY          = 0                     #Data files' path policy when standby instance applies CREATE TABLESPACE redo log. 0:use the same file name under system path, 1:use the same file path under the system path
		UNIX_SOCKET_PATHNAME            =                #Unix socket pathname.
		TRACE_PATH                      =                       #System trace path name
[dmdba@RH6 OADB]$ sed -i "s/data1/data2/g" dm.ini
[dmdba@RH6 OADB]$ cat dm.ini|grep PATH
		CTL_PATH                        = /data2/OADB/dm.ctl                   #ctl file path
		CTL_BAK_PATH                    = /data2/OADB/ctl_bak                 #dm.ctl backup path
		SYSTEM_PATH                     = /data2/OADB                                 #system path
		CONFIG_PATH                     = /data2/OADB                                 #config path
		TEMP_PATH                       = /data2/OADB                                 #temporary file path
		BAK_PATH                        = /data2/OADB/bak                         #backup file path
		DFS_PATH                        =                                                     #path of db_file in dfs
		REDOS_FILE_PATH_POLICY          = 0                     #Data files' path policy when standby instance applies CREATE TABLESPACE redo log. 0:use the same file name under system path, 1:use the same file path under the system path
		UNIX_SOCKET_PATHNAME            =                #Unix socket pathname.
		TRACE_PATH                      =                       #System trace path name
[dmdba@RH6 OADB]$

2.4 使用dmctlcvt转换控制文件,将控制文件中的路径也一并替换掉

[dmdba@RH6 bin]$ ./dmctlcvt help
DMCTLCVT V8
version: 03134283890-20220304-158322-10045

格式: ./dmctlcvt KEYWORD=value
注意: 控制文件名称必须指定为dm.ctl、dmmpp.ctl、dss.ctl

关键字              说明
--------------------------------------------------------------------------------
TYPE                1 转换控制文件为文本文件(源文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
                    2 转换文本文件为控制文件(目标文件路径中控制文件名称必须是dm.ctl或dmmpp.ctl或dss.ctl)
SRC                 源文件路径
DEST                目标文件路径
DCR_INI             dmdcr.ini文件路径
DFS_INI             dmdfs.ini文件路径
HELP                打印帮助信息

示例:
./dmctlcvt TYPE=1 SRC=/opt/dmdbms/data/dameng/dm.ctl DEST=/opt/dmdbms/data/dameng/dmctl.txt
./dmctlcvt TYPE=2 SRC=/opt/dmdbms/data/dameng/dmctl.txt DEST=/opt/dmdbms/data/dameng/dm.ctl
[dmdba@RH6 bin]$ 
[dmdba@RH6 bin]$ 
[dmdba@RH6 bin]$ ./dmctlcvt type=1 src=/data2/OADB/dm.ctl dest=/home/dmdba/OAini.txt
DMCTLCVT V8
convert ctl to txt success!
[dmdba@RH6 bin]$ cat /home/dmdba/OAini.txt |grep data1
fil_path=/data1/OADB/SYSTEM.DBF
fil_path=/data1/OADB/ROLL.DBF
fil_path=/data1/OADB/OADB01.log
fil_path=/data1/OADB/OADB02.log
fil_path=/data1/OADB/MAIN.DBF
huge_path=/data1/OADB/HMAIN
[dmdba@RH6 bin]$ sed -i "s/data1/data2/g" /home/dmdba/OAini.txt 
[dmdba@RH6 bin]$ cat /home/dmdba/OAini.txt |grep data1
[dmdba@RH6 bin]$ cat /home/dmdba/OAini.txt |grep data2
fil_path=/data2/OADB/SYSTEM.DBF
fil_path=/data2/OADB/ROLL.DBF
fil_path=/data2/OADB/OADB01.log
fil_path=/data2/OADB/OADB02.log
fil_path=/data2/OADB/MAIN.DBF
huge_path=/data2/OADB/HMAIN
[dmdba@RH6 bin]$ ./dmctlcvt type=2 src=/home/dmdba/OAini.txt dest=/data2/OADB/dm.ctl 
DMCTLCVT V8
convert txt to ctl success!

2.5 替换掉之后启动新目录下的数据库实例

[dmdba@RH6 bin]$ 
[dmdba@RH6 bin]$ 
[dmdba@RH6 bin]$ 
[dmdba@RH6 bin]$ ./dmserver /data2/OADB/dm.ini 
file dm.key not found, use default license!
version info: develop
..........
iid page's trxid[5010]
NEXT TRX ID = 6012.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.

到这里目录更换完成,新的数据库目录下启动数据库正常!同样的如果数据文件创建错了,需要重新进行调整文件路径的话,也可以使用dmctlcvt来进行处理。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
达梦数据库数据目录是指存储数据库实例数据的文件夹。在达梦数据库中,数据目录包含了数据库的各种文件,如表空间文件、日志文件、索引文件等。数据目录的结构和内容对于数据库的正常运行和数据的安全性非常重要。 一般情况下,达梦数据库数据目录包括以下几个主要文件夹: 1. 数据库实例目录:该目录数据库实例的根目录,通常以实例名命名。在该目录下,可以找到与该实例相关的各种配置文件和日志文件。 2. 表空间目录:表空间是数据库中存储数据的逻辑结构,每个表空间对应一个或多个数据文件。表空间目录存储了这些数据文件,以及与表空间相关的其他文件,如索引文件、临时文件等。 3. 日志目录:日志是数据库中记录事务操作的重要组成部分,包括事务日志和归档日志。日志目录存储了这些日志文件,用于数据库的恢复和故障恢复。 4. 系统目录:系统目录包含了数据库系统相关的文件,如系统表空间、系统索引等。这些文件对于数据库的正常运行和管理非常重要。 5. 其他目录:除了上述主要目录外,还可能存在其他一些目录,如备份目录、临时文件目录等。这些目录用于数据库的备份和恢复、临时数据的存储等。 总的来说,达梦数据库数据目录数据库实例的核心组成部分,包含了数据库的各种文件和数据结构。正确管理和维护数据目录对于数据库的正常运行和数据的安全性至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值