栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

DM8达梦数据库数据文件整体迁移方式

DM8达梦数据库数据文件整体迁移方式

目录

一、前要

二、模拟环境准备:

三、名词定义

3.1 达梦数据库逻辑架构

3.2 达梦数据库物理存储架构

 3.3 表空间和数据文件

3.4 重做日志(redo)

3.5 控制文件(dm.ctl)

3.6 参数文件(dm.ini)

3.7 dminit工具

3.8 dmmdf工具

3.9 PERMANENT_MAGIC 和 DB_MAGIC数据库魔数

四、故障库文件备份及参数查看

4.1 故障库数据文件查看

4.2 查看故障库初始化信息

4.3 查看dm.ini中实例名

五、恢复过程

5.1 按照故障库初始化信息,重新创建数据库

5.2 修改新库文件名

5.3 修改故障库控制文件

5.3.1 转换控制文件格式

5.3.2 修改控制文件内容

 5.3.3 转回控制文件格式

5.4 查看故障库db_magic(红色字体)

5.5修改故障库参数文件

5.5.1 DM数据库控制文件的位置是在dm.ini 文件中指定:

5.5.2 修改dm.ini中控制文件位置

5.6 修改故障库文件名

5.7 启动数据库

六、验证数据库

6.1使用DM管理工具登录数据库

 6.2验证数据库实例和DB_MAGIC

​ 6.3使用DM管理工具开启归档

七、如何进入安全模式(救援模式)

7.1 windows进入安全模式

 7.2 linux进入救援模式

 7.3麒麟系统进入救援模式

八、总结

8.1 迁移的总体步骤

8.2 数据库备份的重要性


一、前要

        本文讲解的是达梦数据库在无备份,未开启归档模式情况的恢复方式。例如在生产环境中的操作系统崩溃,导致系统无法正常启动,数据库无法启动和登录,但磁盘未损坏,能在安全模式下拷贝出达梦数据库相关文件,包含数据文件、控制文件和参数文件等.在生产环境中很少遇到此种极端情况,但达梦数据库依然可以通过整体迁移数据文件、重建控制文件和更改DB_MAGIC等方式进行恢复。

二、模拟环境准备:

环境准备

操作系统

达梦数据库版本

实例安装路径

说明

1损坏的数据库

Windows

DM Database Server 64 V8

D:DM8dmdbmsdataDAMENG

除了此路径下的相关文件,其他均丢失

2新环境

Linux Red hat 6

DM Database Server 64 V8

/dm8/data/DAMENG

初始化新库,无损

       可以看到,在没有归档,且没有备份的情况下,若要保证数据库能够正常恢复,操作系统的不同并不影响恢复,但恢复的前提要保证初始化新库的数据库版本、实例名、数据库名、各种参数必须和故障库设置完全一样。

三、名词定义

3.1 达梦数据库逻辑架构

       进行数据库的恢复,首先要了解dm数据库的逻辑架构和物理架构。DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。通过这种细分,可以使得 DM 数据库能够更加高效地控制磁盘空间的利用率。如下图显示了这些数据结构之间的关系。

       可以看出,在 DM8 中存储的层次结构如下:

1. 数据库由一个或多个表空间组成;

2. 每个表空间由一个或多个数据文件组成;

3. 每个数据文件由一个或多个簇组成;

4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;

5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;

6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。

3.2 达梦数据库物理存储架构

       DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等,如图所示。

 3.3 表空间和数据文件

       在 DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。在创建 DM 数据库时,会自动创建 5 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN表空间、TEMP 表空间和 HMAIN 表空间。

1. SYSTEM 表空间存放了有关 DM 数据库的字典信息,用户不能在 SYSTEM 表空间创建表和索引。

2. ROLL 表空间完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。

3. MAIN 表空间在初始化库的时候,就会自动创建一个大小为 128M 的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。

4. TEMP 表空间完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP表空间。

5. HMAIN 表空间属于 HTS 表空间,完全由 DM 数据库自动维护,用户无需干涉。当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。

        每一个用户都有一个默认的表空间。对于 SYS、SYSSSO、SYSAUDITOR 系统用户,默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。

3.4 重做日志(redo)

       REDO 日志,记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。

       数据库中INSERT、DELETe、UPDATE 等DML操作以及CREATE TABLE等DDL操作最终都会转化为对某些数据文件、某些数据页的修改。

       DM8默认的两个联机重做日志:DAMENG01.log,DAMENG02.log

3.5 控制文件(dm.ctl)

       每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:

(1)数据库名称;

(2)数据库服务器模式;

(3)OGUID 唯一标识;

(4)数据库服务器版本;

(5)数据文件版本;

(6)数据库的启动次数;

(7)数据库最近一次启动时间;

(8)表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;

(9)控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改;

3.6 参数文件(dm.ini)

       每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项。

3.7 dminit工具

       dminit 是 DM 数据库初始化工具。在安装 DM 的过程中,用户可以选择是否创建初始数据库。如果当时没有创建,那么在安装完成之后,可以利用创建数据库工具 dminit 来创建。

       系统管理员可以利用 dminit 工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感、以及是否使用 UNICODE 等,创建出满足用户需要的数据库。该工具位于安装目录的/bin 目录下。

3.8 dmmdf工具

       达梦数据库的dmmdf 工具可以对DM相关的文件的属性进行修改。 从dmmdf的帮助可以看出,支持的修改的文件类型有:dbf、rlog、original bak、bakset meta、bakset bkp、bakset,根据文件的不同,可修改的属性也有所不同,最主要的就是修改db_magic。如图所示。

3.9 PERMANENT_MAGIC 和 DB_MAGIC数据库魔数

       创建数据库时生成 PERMANENT_MAGIC 和 DB_MAGIC 值,其中 PERMANENT_MAGIC 一经生成永远不会改变(DDL_CLONE 还原库的 PMNT_MAGIC 除外)。DB_MAGIC 称为数据库魔数,同样可以用来表示某一个数据库,但 DB_MAGIC是可以变化的,每经过一次还原、恢复操作后,DB_MAGIC 就会产生变化,用来区分备份源库和还原目标库。

四、故障库文件备份及参数查看

4.1 故障库数据文件查看

       将故障库存放位置,即D:DM8dmdbmsdataDAMENG文件夹进行备份,并传输至准备好的新环境中,故障库的数据文件内容如图所示。

4.2 查看故障库初始化信息

在达梦数据库进行首次初始化后,会在实例文件夹下生产初始化日志,如:dminitXXXXX.log

查看历史信息内容,如图所示:

 可以看到数据库初始化信息如下:

版本:V8

db path:存放位置为:D:DM8dmdbmsdataDAMENG

db name:数据库名:DAMENG

AUTO_OVERWRITE:是否覆盖所有同名文件(0) 0:不覆盖

Page size:页大小:8K

Extent size:簇大小:16K

TIME_ZONE、 设置时区(+08:00)

Charset::字符集:GB18030(0)

大小写敏感:敏感(1)

其他信息均为默认

4.3 查看dm.ini中实例名

[root@localhost ~]# su - dmdba

[dmdba@localhost ~]$ cd /dm8/data/DAMENG_old

[dmdba@localhost DAMENG1]$ more dm.ini

如图所示

五、恢复过程

5.1 按照故障库初始化信息,重新创建数据库

[dmdba@localhost ~]$ cd /dm8/bin

[dmdba@localhost bin]$ ./dminit help

initdb V8

db version: 0x7000c

file dm.key not found, use default license!

License will expire on 2022-03-26

格式: ./dminit     KEYWORD=value

例程: ./dminit     PATH=/public/dmdb/dmData PAGE_SIZE=16

关键字                     说明(默认值)

--------------------------------------------------------------------------------

INI_FILE                   初始化文件dm.ini存放的路径

PATH                       初始数据库存放的路径

CTL_PATH                   控制文件路径

LOG_PATH                   日志文件路径

EXTENT_SIZE                数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页

PAGE_SIZE                  数据页大小(8),可选值:4, 8, 16, 32,单位:K

LOG_SIZE                   日志文件大小(256),单位为:M,范围为:64M ~ 2G

CASE_SENSITIVE             大小敏感(Y),可选值:Y/N,1/0

CHARSET/UNICODE_FLAG       字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]

SEC_PRIV_MODE              权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[eval]

LENGTH_IN_CHAR             VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0

SYSDBA_PWD                 设置SYSDBA密码(SYSDBA)

SYSAUDITOR_PWD             设置SYSAUDITOR密码(SYSAUDITOR)

DB_NAME                    数据库名(DAMENG)

INSTANCE_NAME              实例名(DMSERVER)

PORT_NUM                   监听端口号(5236)

BUFFER                     系统缓存大小(100),单位M

TIME_ZONE                  设置时区(+08:00)

PAGE_CHECK                 页检查模式(0),可选值:0/1/2

EXTERNAL_CIPHER_NAME       设置默认加密算法

EXTERNAL_HASH_NAME         设置默认HASH算法

EXTERNAL_CRYPTO_NAME       设置根密钥加密引擎

RLOG_ENC_FLAG              设置日志文件是否加密(N),可选值:Y/N,1/0

USBKEY_PIN                 设置USBKEY PIN

PAGE_ENC_SLICE_SIZE        设置页加密分片大小,可选值:0、512、4096,单位:Byte

ENCRYPT_NAME               设置全库加密算法

BLANK_PAD_MODE             设置空格填充模式(0),可选值:0/1

SYSTEM_MIRROR_PATH         SYSTEM数据文件镜像路径

MAIN_MIRROR_PATH           MAIN数据文件镜像

ROLL_MIRROR_PATH           回滚文件镜像路径

MAL_FLAG                   初始化时设置dm.ini中的MAL_INI(0)

ARCH_FLAG                  初始化时设置dm.ini中的ARCH_INI(0)

MPP_FLAG                   Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)

ConTROL                    初始化配置文件(配置文件格式见系统管理员手册)

AUTO_OVERWRITE             是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖

USE_NEW_HASH               是否使用改进的字符类型HASH算法(1)

ELOG_PATH                  指定初始化过程中生成的日志文件所在路径

AP_PORT_NUM                ECS模式下AP协同工作的监听端口

DFS_FLAG                   初始化时设置dm.ini中的DFS_INI(0)

DFS_PATH                   启用dfs时指定数据文件的缺省路径

DFS_HOST                   指定连接分布式系统DFS的服务地址(localhost)

DFS_PORT                   指定连接分布式系统DFS的服务端口号(3332)

DFS_COPY_NUM               指定分布式系统的副本数(3)

DFS_DB_NAME                指定分布式系统的中数据库名(默认与DB_NAME一致)

SHARE_FLAG                 指定分布式系统中该数据库的共享属性(0)

REGION_MODE                指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略

HUGE_WITH_DELTA            是否仅支持创建事务型HUGE表(1) 1:是 0:否

RLOG_GEN_FOR_HUGE          是否生成HUGE表REDO日志(0) 1:是 0:否

PSEG_MGR_FLAG              是否仅使用管理段记录事务信息(0) 1:是 0:否

HELP                       打印帮助信息

[dmdba@localhost bin]$ ./dminit path=/dm8/data/ db_name=DAMENG instance_name=DCATEST1 page_size=8 extent_size=16 charset=0 case_sensitive=1

initdb V8

db version: 0x7000c

file dm.key not found, use default license!

License will expire on 2022-03-26

Normal of FAST

Normal of DEFAULT

Normal of RECYCLE

Normal of KEEP

Normal of ROLL

 log file path: /dm8/data/DAMENG/DAMENG01.log

 log file path: /dm8/data/DAMENG/DAMENG02.log

write to dir [/dm8/data/DAMENG].

create dm database success. 2021-10-12 18:11:58

[dmdba@localhost bin]$

5.2 修改新库文件名

[dmdba@localhost data]$ cd /dm8/data/

[dmdba@localhost data]$ mv DAMENG/ DAMENG_new

[dmdba@localhost data]$

5.3 修改故障库控制文件

5.3.1 转换控制文件格式

[dmdba@localhost bin]$ cd /dm8/bin

[dmdba@localhost bin]$  ./dmctlcvt type=1 src=/dm8/data/DAMENG_old/dm.ctl dest=/dm8/dmctl.txt

DMCTLCVT V8

convert ctl to txt success!

5.3.2 修改控制文件内容

       查看控制文件中fil_path内容:

[dmdba@localhost opt]$ more dmctl.txt|grep fil_path

 

      修改dmctl.txt中文件存放位置,并验证查看

[dmdba@localhost opt]$ vi dmctl.txt

[dmdba@localhost opt]$ more dmctl.txt|grep fil_path

 5.3.3 转回控制文件格式

       修改控制文件中数据文件的对应位置,就可以重新生成控制文件。基本上涉及路径的修改,都可以采用这种重建控制文件。

[dmdba@localhost dm8]$ cd bin

[dmdba@localhost bin]$ ./dmctlcvt type=2 src=/dm8/dmctl.txt dest=/dm8/data/DAMENG_old/dm.ctl

DMCTLCVT V8

convert txt to ctl success!

[dmdba@localhost bin]$

5.4 查看故障库db_magic(红色字体)

[dmdba@localhost bin]$  ./dmmdf TYPE=1 FILE=/dm8/data/DAMENG_old/SYSTEM.DBF

dmmdf V8

**********************************************************

1 db_magic=913104458

2 next_trxid=25051

3 pemnt_magic=1354359236

**********************************************************

Please input which parameter you want to change(1-3), q to quit:

5.5修改故障库参数文件

5.5.1 DM数据库控制文件的位置是在dm.ini 文件中指定:

[dmdba@localhost DAMENG]$ more dm.ini|grep CTL

                CTL_PATH                        = D:DM8dmdbmsdataDAMENGdm.ctl     #ctl file path

                CTL_BAK_PATH                    = D:DM8dmdbmsdataDAMENGctl_bak    #dm.ctl backup path

                CTL_BAK_NUM                     = 10                       #backup number of dm.ctl, allowed to keep one more backup file besides specified number.

                DSC_N_CTLS                      = 10000                 #Number Of LBS/GBS ctls

[dmdba@localhost DAMENG]$

5.5.2 修改dm.ini中控制文件位置

[dmdba@localhost bin]$ vi /dm8/data/DAMENG_old/dm.ini

5.6 修改故障库文件名

[dmdba@localhost DAMENG_old]$ cd /dm8/data/

[dmdba@localhost data]$ ls

DAMENG_new  DAMENG_old  DMSERVER_bak.tar  TEST1

[dmdba@localhost data]$ mv DAMENG_old/ DAMENG

[dmdba@localhost data]$

5.7 启动数据库

[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini

file dm.key not found, use default license!

version info: develop

DM Database Server x64 V8 1-1-190-21.03.26-137190-ENT  startup...

Normal of FAST

Normal of DEFAULT

Normal of RECYCLE

Normal of KEEP

Normal of ROLL

Database mode = 0, oguid = 0

License will expire on 2022-03-26

file lsn: 0

ndct db load finished

ndct fill fast pool finished

iid page's trxid[26052]

NEXT TRX ID = 26053

pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!

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.

六、验证数据库

6.1使用DM管理工具登录数据库

       登陆时使用的sysdba用户为故障库密码

 6.2验证数据库实例和DB_MAGIC

select db_magic from v$rlog;

select instance_name from v$instance;

 6.3使用DM管理工具开启归档

    选中数据库,右键管理服务器,选择系统管理,并修改成配置状态并转换:

      选择归档配置,修改为归档模式,并添加归档日志文件:

     重新选择系统管理,并修改数据库状态为打开:

 6.4使用DM管理对数据库进行一次全量备份

     选择备份-->库备份,右键新建备份

七、如何进入安全模式(救援模式)

7.1 windows进入安全模式

       开机按F8键,在重启或者电脑开机的时候,在进入Windows系统启动画面之前按下F8键,会出现系统多操作启动菜单了,有三个版本的安全模式可以选择,视自己需要选择,回车就直接进入安全模式了。

 7.2 linux进入救援模式

       开机启动的时候按F2修改bios首先用CD启动:

       重启后进入Menu,选择Rescue installed system,回车

       启动救援模式中,会弹出多个对话框进行选择,语言默认使用en,键盘使用默认的us,挂载选项直接Continue,后面就一直OK,最后选择shell,然后就进入了救援模式

输入clear,把屏幕清空,输入ls /mnt/sysimage

看到的就是你的原来系统的文件:

 7.3麒麟系统进入救援模式

1.插入系统镜像,重启服务器;

2.进入安装界面,选择“Troubleshooting”

3.选择“Rescue a Kylin system”

4.选择“Continue”,按1

5.然后输入chroot /mnt/sysimage 切换到原linux系统,切换后前缀会变为bash ,然后就可以修改root密码或配置文件了

 6.此时可以进行文件的拷贝(u盘需要格式化为ext或xfs格式,否则无法挂载)

八、总结

8.1 迁移的总体步骤

       达梦数据库的数据文件整体迁移过程主要分成六个步骤:

1.查询当前信息;

2.按照故障库信息重建实例服务,并重命名;

3.物理移动整个故障库数据库文件夹;

4.修改DM.INI 参数文件中有关路径的参数;

5.重建控制文件(修改数据文件路径);

6.起库验证。

8.2 数据库备份的重要性

       经过上述的所有恢复过程,虽然数据库可以得到恢复,但数据库无备份、无归档是数据库运维中的大忌。数据备份是DBA的生命线,唯一一件会使DBA在梦中惊醒的事情就是:没有备份。在进行了数据备份之后,要定期检查备份成功与否,以及备份的完整性。

       在DM管理工具中,已经在章节六中说明了备份的方式,同时可以利用工具进行备份的验证,选中相应备份->右键备份校验,并显示备份校验成功,如下图:

 更多资讯请上达梦技术社区了解: https://eco.dameng.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号