热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

达梦数据库更换磁盘路径、空间不足问题处理

场景描述在一些场景下,可能是我们安装数据库时规划不够,或者数据增长量远超预期,我们有时候需要解决磁盘空间不足的问题,这个问题有下列处理方式:1.      如果是LVM进行管理的,

场景描述

在一些场景下,可能是我们安装数据库时规划不够,或者数据增长量远超预期,我们有时候需要解决磁盘空间不足的问题,这个问题有下列处理方式:

1.        如果是LVM 进行管理的,直接添加磁盘空间,把空间不足的对应卷进行扩容即可(这里不展开)

2.        如果是原先规划的磁盘空间确实用满了,我们可以通过为表空间在新挂载的容量扩充磁盘下,新建表空间文件即可(注意新路径的dmdba 权限,这里不展开)

3.        如果本身就是搞错了,需要把整个实例更换到另外一个目录下,我们应该如何进行操作。(这里重点介绍一下这个步骤)

处理方式

如果是需要整体更换路径,我们肯定是有停机窗口期的,我们“唯一”的方式,是通过脱机备份还原的方式进行数据库实例目录(数据文件目录)的整体更换。

 

 

首先,我们必须明确、牢牢记住,达梦数据库不允许用户直接操作数据文件:

 

不允许用户,通过任何操作系统自己的命令,操作任何文件。

 

相关操作,需要且只能通过数据库管理的方式进行操作(可以是执行sql 语句、或者是数据库自己提供的命令),比如表空间的移动等操作,数据库有提供自己的操作命令(可以参考SQL 手册,对象管理的相关章节)。

 

备注:除了安装目录下的log 下的文件,可以手动删除外,其他任何和数据库相关的文件,请禁止通过操作系统命令,进行任何处理!

 

只有这种情况,我们所有的操作才是安全的,才能够被保驾护航。

 

具体方法:

1.        停止数据库服务

2.        进行脱机备份

3.        在新目录下初始化数据库服务

4.        通过脱机备份,在新初始化的实例下恢复数据库

数据库环境

DM7                        

软件目录

/opt/dmdbms/bin

数据库原实例目录

/opt/dmdata

数据库实例目录调整目的

/dmbigdata

注意事项:

1.           所有操作,涉及到的目录,请确保 dmdba 均有权限

2.           备份命令详细语法,可以参考 help

3.           恢复完后,注意不要启动错了,请启动恢复后的数据库实例(即新的数据库实例)

 

[dmdba@localhost ~]# ps   -ef|grep dmserver

dmdba      1605  1485    8 03:30 pts/0    00:00:04   ./dmserver /opt/dmdata/DAMENG/dm.ini

dmdba      1713  1662    0 03:31 pts/1    00:00:00 grep   –color=auto dmserver

[dmdba @localhost ~]#

— 停掉数据库服务

— 进行脱机备份

[dmdba@localhost ~]#   cd  /opt/dmdbms/bin

[dmdba@localhost bin]#   ./dmbackup help

Format:  ./dmbackup  KEYWORD=value

Example: ./dmbackup    INI_PATH=/opt/dm7data/dameng/dm.ini NAME=test.bak

Imperative Argument: INI_PATH NAME

Keyword               explain(default value)

——————————————————————————–

INI_PATH            the path of   dmserver’s dm.ini file

BASE_BAK_DIR        the path   with increment backup Format (dir1,dir2,dir3,…)

NAME                backup name

TYPE                backup type (FULL, INCREMENT),   Default(FULL)

BAKFILE_PATH        the file   path of backup file

DESCRIBE            the   description of backup

MAXSIZE             the max   value capability of the single backup file Default(33MB~2048MB, default(2048))

ENCRYPT             encrypt   type (0, 1, 2), Default(0)

PASSWORD            encrypt key

ENCRYPT_NAME        encrypt   algorithm name

COMPRESS            compress   level(0-9), 0:no compress, 9:high compress, Default(1)

PARALLEL            parallel   mapping the file path

SHOW_BAK_INFO       the   directory of backup Format (dir1,dir2,dir3,…)

HELP                output help   info

 [dmdba@localhost bin]# ./dmbackup  ini_path=/opt/dmdata/DAMENG/dm.ini   name=test.bak

backup V7.6.0.138-Build(2019.02.20-103049)ENT

file dm.key not found, use default license!

ndct db load finished

start backup tablespace: SYSTEM.

start backup file: /opt/dmdata/DAMENG/SYSTEM.DBF, pages: 2688

end backup file: /opt/dmdata/DAMENG/SYSTEM.DBF

end backup tablespace: SYSTEM.

 

start backup tablespace: ROLL.

start backup file: /opt/dmdata/DAMENG/ROLL.DBF, pages: 0

end backup file: /opt/dmdata/DAMENG/ROLL.DBF

end backup tablespace: ROLL.

 

start backup tablespace: MAIN.

start backup file: /opt/dmdata/DAMENG/MAIN.DBF, pages: 0

end backup file: /opt/dmdata/DAMENG/MAIN.DBF

end backup tablespace: MAIN.

 

backup fun end time used: 1064.291(ms)

backup successfully!

backup time used: 7244.440(ms)

— 在新路径下初始化数据库

[dmdba@localhost bin]#   ./dminit path=/dmbigdata

initdb V7.6.0.138-Build(2019.02.20-103049)ENT

db version: 0x7000a

file dm.key not found, use default license!

License will expire on 2020-02-20

 

 log file path:   /dmbigdata/DAMENG/DAMENG01.log

 

 

 log file path:   /dmbigdata/DAMENG/DAMENG02.log

 

write to dir [/dmbigdata/DAMENG].

create dm database success. 2019-10-18 03:34:42

— 在新路径下恢复数据库(因为数据库恢复必须恢复到一个已经存在数据库上)

[dmdba@localhost bin]#   ./dmrestore  help

Format: DMRESTORE    KEYWORD=value or KEYWORD=(value1,value2,…,valueN)

 

Eg: DMRESTORE    INI_PATH=/opt/dm7data/dameng/dm.ini FILE=/opt/dm7data/backup/test.bak

 

Imperative Argument: FILE

 

Keyword               explain(default value)

——————————————————————————–

INI_PATH            the path of   the dmserver’s dm.ini file

FILE                backup file

MAPPED_FIL          the path of mapped file, when   res_type assign 4.

TIME                the   timestamp of be going to recover

ARCHIVE_DIR         the   directory at backup, Format (dir1,dir2,dir3,…)

BACKUP_DIR          the stored   path of backup file, be used to search backup file, Format   (dir1,dir2,dir3,…)

DATAFIL_PATH        the file   path at the recovery, Format (id1,path1,id2,path2,id3,path3,…)

MIRROR_PATH         the mirror   file path at the recovery, Format (id1,path1,id2,path2,id3,path3,…)

PARALLEL_DIR        the full   path of parallel mapping file

RES_TYPE            restore   type(0,1,2,3,4), 0: bakfil restore, 1: bakfil show, 2: archfil restore, 3:   step increment restore, 4:output mapped file default(0)

END_LSN             restore to   end_lsn

LOG                 restore   output log file

DUMMY               quiet mode,   {(Y)es,(N)o} default:No

PASSWORD            restore   with password

ENCRYPT_NAME        restore   decrypt with encrypt name

HELP                output help   info

— 这里的 file ,就是备份生成的文件

[root@localhost bin]#   ./dmrestore    ini_path=/dmbigdata/DAMENG/dm.ini   file=/opt/dmdata/DAMENG/bak/DB_DAMENG_20191018033424000722.bak

restore V7.6.0.138-Build(2019.02.20-103049)ENT

file dm.key not found, use default license!

 

backup sig:            BA

backup tool version:   12595

backup db name:        DAMENG

backup db magic:         339279924

backup pemnt magic:      -222693460

backup name:           test.bak

backup type:           full

backup level:          offline

backup range:          database

backup description:   

compressed level:      0

encrypt_type:          0

encrypt_id:            2052

rac node:              0

page check:            0

rlog encrypt:          0

external cipher id:    0

external hash id:      0

length in char:        0

use new hash:          1

backup time:             2019-10-18 03:34:24

page size:             8 KB

extent size:           16

case sensitive:        1

log page size:         512 B

charset:               0

data version:          0x7000A

sys version:             V7.1.6.138-Build(2019.02.20-103049)ENT

enable policy:         0

mpp_timestamp:         0

crc_check:             TRUE

parallel type:         0

parallel info len:     0

backup db fil num:     3

archive flag:          0

after backup LSN:      39863

 

$bak_seq |$file_path                                          |$size(K)       |$used(K)      

          1|/opt/dmdata/DAMENG/bak/DB_DAMENG_20191018033424000722.bak|       32768.00|        5366.00

 

$file_seq |$type|$ts_name         |$state    |$size(K)  |$seq_in_bak    |$off_in_bak(B) |$len_in_bak(B)   |$file_path                                          |$mirror_path                                     

         1|DBF  |SYSTEM         |ONLINE    |       21504|              1|          22528|          5152768|/opt/dmdata/DAMENG/SYSTEM.DBF                     |                                                   

         2|DBF  |ROLL           |ONLINE    |      131072|              1|        5175296|         311296|/opt/dmdata/DAMENG/ROLL.DBF                       |                                                   

         3|DBF  |MAIN           |ONLINE    |      131072|              1|        5486592|             8192|/opt/dmdata/DAMENG/MAIN.DBF                       |                                                  

n   这里需要输入 y 或者 Y

Continue?[Y/N]: y

restore bak_file:   /opt/dmdata/DAMENG/bak/DB_DAMENG_20191018033424000722.bak …

start restore database…

start restore file: /dmbigdata/DAMENG/SYSTEM.DBF(SYSTEM), pages: 629

end restore file: /dmbigdata/DAMENG/SYSTEM.DBF(SYSTEM)

start restore file: /dmbigdata/DAMENG/ROLL.DBF(ROLL), pages: 38

end restore file: /dmbigdata/DAMENG/ROLL.DBF(ROLL)

start restore file: /dmbigdata/DAMENG/MAIN.DBF(MAIN), pages: 1

end restore file: /dmbigdata/DAMENG/MAIN.DBF(MAIN)

end restore database data files.

 

Apply archive log LSN from 39864 to 39863, time used:0.000s.

restore finished, code = 0!

 

restore successfully!

restore time used: 2166.080(ms)

[dmdba@localhost bin]#

— 在启动数据库,即完成了替换

[dmdba@localhost bin]# ps   -ef|grep dmserver

dmdba      1781  1485    0 03:35 pts/0    00:00:00   ./dmserver /dmbigdata/DAMENG/dm.ini

dmdba      1840  1662    0 03:39 pts/1    00:00:00 grep   –color=auto dmserver

[dmdba@localhost bin]#

 

其他说明

–           数据库能够提供直接更换整个文件夹目录的方式,来进行路径迁移?

支持,但是操作比较复杂,且需要更替二进制文件,如果操作错误,会导致实例无法启动个,极不安全。且数据库在linux 或者windwos 的数据文件,本身是能够通用的。

我们只需要记住,进行这个步骤很危险,且需要调整的不仅仅是dm.ini 中间的路径!

–           本身,数据库自己也提供了alter 的语法类更改表空间数据文件路径(注意:同以块设备下会更快,如果是跨块设备,和mv 命令耗时相当)

 

14.2.4 修改数据文件的路径
 
可以修改用户表空间中已存在数据文件的路径,待修改的数据文件所在表空间必须处于脱机状态并且只可修改用户创建的表空间中文件的路径。如修改 bookshop 表空间中文件

 

book.dbf 的路径为 e:\ book.dbf


 
ALTER   TABLESPACE bookshop RENAME DATAFILE ‘d:\book.dbf’ TO ‘e:\book.dbf’;

 


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
author-avatar
望奇迹般地神话
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有