达梦数据库迁移数据目录

1情况说明

当遇到磁盘分区不够用的情况时,需要迁移数据文件到新的分区。以下记录数据目录迁移的全步骤。

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 475M     0  475M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M  7.7M  479M   2% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G   17G  407M  98% /
/dev/sda1               1014M  138M  877M  14% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/sdb1                 20G   45M   19G   1% /data
[dmdba@localhost bin]$ ps -ef|grep dmserver
dmdba      4950      1  0 01:26 pts/0    00:00:05 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdata/DAMENG/dm.ini -noconsole
dmdba      6625   4457  0 01:59 pts/0    00:00:00 grep --color=auto dmserver

为了验证迁移结果,现在数据库内创建新的表空间,用户,表数据等

-- 新建表空间
create tablespace "TEST" datafile '/home/dmdba/dmdata/DAMENG/TEST.DBF' size 128 autoextend on maxsize 67108863 CACHE = NORMAL;
-- 新建用户
create user "TEST" identified by "TEST@TEST123" default tablespace "TEST" default index tablespace "TEST";
-- 授权
grant "DBA","RESOURCE","PUBLIC","VTI" to "TEST";
-- 建测试表
create table TEST.TESTTABLE (A1 int,A2 varchar2(50));
-- 随便插入几条测试数据
insert into TEST.TESTTABLE(A1,A2) values (1,'第一条数据');
insert into TEST.TESTTABLE(A1,A2) values (2,'第二条数据');
insert into TEST.TESTTABLE(A1,A2) values (3,'第三条数据');
insert into TEST.TESTTABLE(A1,A2) values (4,'第四条数据');
insert into TEST.TESTTABLE(A1,A2) values (5,'第五条数据');
commit;
-- 查询表数据
SQL> select * from TEST.TESTTABLE;

LINEID     A1          A2        
---------- ----------- ----------
1          1           第一条数据
2          2           第二条数据
3          3           第三条数据
4          4           第四条数据
5          5           第五条数据

used time: 0.951(ms). Execute id is 18.
SQL>
-- 查询表空间路径
SQL> select file_id,file_name,tablespace_name from dba_data_files;

LINEID     FILE_ID     FILE_NAME                            TABLESPACE_NAME
---------- ----------- ------------------------------------ ---------------
1          0           /home/dmdba/dmdata/DAMENG/SYSTEM.DBF SYSTEM
2          0           /home/dmdba/dmdata/DAMENG/TEST.DBF   TEST
3          0           /home/dmdba/dmdata/DAMENG/MAIN.DBF   MAIN
4          0           /home/dmdba/dmdata/DAMENG/TEMP.DBF   TEMP
5          0           /home/dmdba/dmdata/DAMENG/ROLL.DBF   ROLL

2停止数据库

具体根据实际的服务名停数据库服务

[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER:                                [ OK ]

3脱机备份

RMAN> BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/home/dmdba/dmdata/dmbak/backupfull_20210905';
BACKUP DATABASE '/home/dmdba/dmdata/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/home/dmdba/dmdata/dmbak/backupfull_20210905';
file dm.key not found, use default license!
checking if the database under system path [/home/dmdba/dmdata/DAMENG] is running...[4].
checking if the database under system path [/home/dmdba/dmdata/DAMENG] is running...[3].
checking if the database under system path [/home/dmdba/dmdata/DAMENG] is running...[2].
checking if the database under system path [/home/dmdba/dmdata/DAMENG] is running...[1].
checking if the database under system path [/home/dmdba/dmdata/DAMENG] is running...[0].
checking if the database under system path [/home/dmdba/dmdata/DAMENG] is running, write dmrman info.
EP[0] max_lsn: 41345
BACKUP DATABASE [DAMENG],execute......
CMD CHECK LSN......
BACKUP DATABASE [DAMENG],collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 2 packages processed...
total 7 packages processed...
total 8 packages processed...
total 9 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/home/dmdba/dmdata/dmbak/backupfull_20210905] END, CODE [0]......
META GENERATING......
total 10 packages processed...
total 10 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 8029.512(ms)
RMAN> check backupset '/home/dmdba/dmdata/dmbak/backupfull_20210905'; 
check backupset '/home/dmdba/dmdata/dmbak/backupfull_20210905';
CMD END.CODE:[0]
check backupset successfully.
time used: 3.972(ms)
RMAN> 

4把dm.ctl文件转换成文本文件

[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@localhost bin]$ ./dmctlcvt TYPE=1 SRC=/home/dmdba/dmdata/DAMENG/dm.ctl DEST=/home/dmdba/dmdata/DAMENG/dmctl.txt
DMCTLCVT V7.6.1.74-Build(2020.10.22-128627)ENT 
convert ctl to txt success!
[dmdba@localhost bin]$ 

5修改dmctl.txt文件

将文件中存在原来路径的修改为新的存储路径,这里是将/home/dmdba/dmdata 改为/data

-- 修改后执行命令查看是否修改完全,防止遗漏
[dmdba@localhost bin]$ cat /home/dmdba/dmdata/DAMENG/dmctl.txt |grep /home/dmdba/dmdata
[dmdba@localhost bin]$ cat /home/dmdba/dmdata/DAMENG/dmctl.txt |grep /data
fil_path=/data/DAMENG/SYSTEM.DBF
fil_path=/data/DAMENG/ROLL.DBF
fil_path=/data/DAMENG/DAMENG01.log
fil_path=/data/DAMENG/DAMENG02.log
fil_path=/data/DAMENG/MAIN.DBF
fil_path=/data/DAMENG/TEST.DBF
htspath=/data/DAMENG/HMAIN

6更新控制文件

可删除原来的dm.ctl文件或者移除。将修改完的文件文件恢复成新的控制文件

[dmdba@localhost bin]$ mv /home/dmdba/dmdata/DAMENG/dm.ctl  /home/dmdba/dmdata/DAMENG/dm.ctl_bak
[dmdba@localhost bin]$ ./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdata/DAMENG/dmctl.txt DEST=/home/dmdba/dmdata/DAMENG/dm.ctl
DMCTLCVT V7.6.1.74-Build(2020.10.22-128627)ENT 
convert txt to ctl success!

7修改配置文件

修改dm.ini文件,将配置文件中涉及原路径的参数也修改为新的路径。这里是将/home/dmdba/dmdata 改为/data

[dmdba@localhost bin]$ cat /home/dmdba/dmdata/DAMENG/dm.ini |grep /home/dmdba/dmdata
		CTL_PATH                        = /home/dmdba/dmdata/DAMENG/dm.ctl     #ctl file path
		CTL_BAK_PATH                    = /home/dmdba/dmdata/DAMENG/ctl_bak    #dm.ctl backup path
		SYSTEM_PATH                     = /home/dmdba/dmdata/DAMENG            #system path
		CONFIG_PATH                     = /home/dmdba/dmdata/DAMENG            #config path
		TEMP_PATH                       = /home/dmdba/dmdata/DAMENG            #temporary file path
		BAK_PATH                        = /home/dmdba/dmdata/DAMENG/bak        #backup file path
[dmdba@localhost bin]$ vi /home/dmdba/dmdata/DAMENG/dm.ini
[dmdba@localhost bin]$ cat /home/dmdba/dmdata/DAMENG/dm.ini |grep /home/dmdba/dmdata
[dmdba@localhost bin]$ cat /home/dmdba/dmdata/DAMENG/dm.ini |grep /data
		CTL_PATH                        = /data/DAMENG/dm.ctl     #ctl file path
		CTL_BAK_PATH                    = /data/DAMENG/ctl_bak    #dm.ctl backup path
		SYSTEM_PATH                     = /data/DAMENG            #system path
		CONFIG_PATH                     = /data/DAMENG            #config path
		TEMP_PATH                       = /data/DAMENG            #temporary file path
		BAK_PATH                        = /data/DAMENG/bak        #backup file path
[dmdba@localhost bin]$ 

8复制目录到新的路径下

修改完后将原路径下的整个文件复制到新的目录下,注意权限问题

 cp -r /home/dmdba/dmdata/DAMENG /data/.

9修改服务启动脚本

可以重新注册服务,也可以修改服务启动脚本

[dmdba@localhost ~]$ vi /home/dmdba/dmdbms/bin/DmServiceDMSERVER
-- 将INI_PATH参数路径改成现在的路径
[dmdba@localhost ~]$ cat /home/dmdba/dmdbms/bin/DmServiceDMSERVER |grep /data
INI_PATH="/data/DAMENG/dm.ini" 

10重启数据库,验证数据

[dmdba@localhost bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER:                                [ OK ]
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 26.322(ms)
disql V7.6.1.74-Build(2020.10.22-128627)ENT 
SQL> select * from TEST.TESTTABLE;

LINEID     A1          A2        
---------- ----------- ----------
1          1           第一条数据
2          2           第二条数据
3          3           第三条数据
4          4           第四条数据
5          5           第五条数据

used time: 8.621(ms). Execute id is 3.
SQL> select file_id,file_name,tablespace_name from dba_data_files;

LINEID     FILE_ID     FILE_NAME               TABLESPACE_NAME
---------- ----------- ----------------------- ---------------
1          0           /data/DAMENG/SYSTEM.DBF SYSTEM
2          0           /data/DAMENG/TEST.DBF   TEST
3          0           /data/DAMENG/MAIN.DBF   MAIN
4          0           /data/DAMENG/TEMP.DBF   TEMP
5          0           /data/DAMENG/ROLL.DBF   ROLL

used time: 84.452(ms). Execute id is 4.

达梦技术社区:https://eco.dameng.com

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库是一种支持大规模数据存储和处理的数据库管理系统。要将MySQL数据库迁移数据库,我们需要以下步骤: 1.备份MySQL数据库:首先,我们需要使用MySQL提供的备份工具对数据库进行备份,以确保数据的完整性和安全性。 2.安装数据库:在目标服务器上安装数据库,并确保数据库可以正常工作。根据操作系统的要求进行安装,一般包括下载安装文件、运行安装程序和配置数据库参数。 3.转换数据:使用数据库提供的数据迁移工具(如dmt2dmd)将MySQL数据库中的数据转换为数据库所需的格式。这个工具可以将MySQL的表、视图、索引、触发器等对象转换为数据库可以识别的格式,保持数据的一致性。 4.迁移数据:将转换后的数据导入到数据库中。使用提供的数据导入工具(如dmloader)将数据文件导入到数据库中,确保数据的完整性和一致性。 5.测试和验证:迁移完成后,对数据库进行测试和验证,以确保迁移过程没有出现问题,并且数据可以正常访问和操作。在此过程中,可以检查数据的完整性、查询性能和应用程序的稳定性。 6.切换应用程序:在确认数据库工作正常后,可以通过更新应用程序的数据库连接信息,将应用程序指向数据库。在切换之前,可以先进行一段时间的并行测试,确保应用程序在新的数据库上运行正常。 通过以上步骤,我们可以成功地将MySQL数据库迁移数据库迁移过程需要仔细规划和执行,以确保数据的完整性和一致性,并减少应用程序的停机时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值