第四周技术博客

本文详细介绍了DM数据库的备份与还原过程,包括联机备份、脱机备份、完全备份和增量备份等策略,以及逻辑和物理还原。同时,讨论了归档日志的重要性,归档技术的本地和远程归档。此外,还阐述了数据库的运维监控,如CPU、内存、磁盘、IO、网络资源和系统时间的监控,以及实例状态、会话、线程和SQL的监控。最后提到了DM数据库授权文件的替换和升级方法。
摘要由CSDN通过智能技术生成

第四周技术博客

一. 备份还原

1.简介

备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。

还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN。恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM 数据库自动进行回滚。备份、还原与恢复的关系如图。
在这里插入图片描述

逻辑还原是逻辑备份的逆过程,逻辑还原就是使用 dimp 工具,把 dexp 导出的备份数据重新导入到目标数据库。物理还原是物理备份的逆过程,物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。

2.分类

数据库处于运行状态、并正常提供数据库服务情况下进行的备份操作,我们称为联机备份。数据库处于关闭状态时进行的备份操作,被称为脱机备份。

完全备份和增量备份是数据库备份的最常用策略数据库完全备份中包含了指定库的全部有效数据页,为了保证数据安全应该对数据库定期执行完全备份,一般规则是数据库经过频繁修改后最好执行一次完全备份。增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。备份策略要根据可接受的最小恢复时间进行制定。例如,每周执行一次完全备份,每天执行一次增量备份,那么恢复时要重做的归档就不会超过一天。

按照备份集中的数据是否满足一致性,可以将备份划分为一致性备份和非一致性备份。不指定 WITHOUT LOG 选项的备份生成的备份集就是一致性备份。一致性备份的备份集包含了完整的数据文件内容和 REDO 日志信息;利用一个一致性备份集就可以将数据库恢复到备份时状态。非一致性备份的备份集只包含数据文件相关内容,没有 REDO 日志信息,利用非一致性备份集还原的数据库,无法直接启动,必须借助归档日志进行恢复之后才可以启动。

3.备份还原过程

针对不同的备份对象,一个完整的备份还原过程包含的步骤不同。

  • 库备份与还原包括:备份—还原—恢复。此处恢复又细分为恢复一致性、更新DB_MAGIC 两步;
  • 表空间备份与还原包括:备份—还原—恢复。此处恢复只包括恢复一致性这一步;
  • 表备份与还原包括:备份—还原。
    在这里插入图片描述
4.归档技术

备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障,备份还原相关的归档有本地归档和远程归档两种。

REDO 日志本地归档(LOCAL),就是将 REDO 日志写入到本地归档日志文件的过程。配置本地归档情况下,REDO 日志刷盘线程将 REDO 日志写入联机 REDO 日志文件后,对应的 RLOG_PKG 由专门的归档线程负责写入本地归档日志文件中。

远程归档(REMOTE ARCHIVE)就是将归档目录配置在远程节点上,远程归档专门用于 DMDSC 环境中。

5.实际操作
1.准备

DM 数据库可以运行在归档模式或非归档模式下。如果是归档模式,联机日志文件中的内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。联机备份数据库必须要配置归档。脱机备份数据库可配置归档也可以不配置。

备份表空间属于联机备份,必须配置归档。备份表虽然是联机完全备份,但不需要配置归档。因为表在还原之后不需要再进行恢复操作,用不到归档日志。备份归档日志必须配置归档。

执行数据库备份,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行数据库备份。

2.使用联机执行SQL语句进行备份还原

DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。

通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库:

BACKUP DATABASE BACKUPSET ‘db_bak_01’;

语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录,默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置,则使用 SYSTEM_PATH 下的 bak目录。

BACKUPSET 为可选参数。如果该参数仅指定备份集名称即指定为相对路径,备份集会生成到默认的备份路径下。如果仅指定该关键字,不指定目标备份集目录,那么将会在默认备份路径下自动生成备份集

系统为每个备份指定一个备份名,它可作为识别备份的一种方式。备份时用户可以采用系统生成的备份名也可以指定属于自己的备份名。如果不显式地指定备份名,系统会默认为备份创建一个备份名。备份名的格式为:DB_库名_备份类型_备份时间,DB 表示备份为数据库备份,备份类型表示该备份为完全备份还是增量备份,数据库名为当前连接数据库的名称,备份时间为开始执行备份的系统时间。

创建备份集,备份名设置为“WEEKLY_FULL_BAK”。

BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET ‘/home/dm_bak/db_bak_3_02’;

MAXPIECESIZE 参数用于控制单个备份片的大小,单位为 MB,最小为 128MB,32位系统最大可设置为 2GB,64 位系统最大可设置为 128GB。当介质管理器对单个文件的大小有限制或者需要备份的数据文件很大时就可以使用这个参数。

例: 创建备份限制备份片大小为 300MB。

BACKUP DATABASE BACKUPSET ‘/home/dm_bak/db_bak_3_05’ MAXPIECESIZE 300;

同备份数据库一样,执行表空间备份数据库实例也必须运行在归档模式下,启动 DIsql 输入以下语句即可备份表空间:

BACKUP TABLESPACE MAIN BACKUPSET ‘ts_bak_01’;

与备份数据库与表空间不同,备份表不需要服务器配置归档,DIsql 中输入以下即可备份用户表:

BACKUP TABLE TAB_01 BACKUPSET ‘tab_bak_01’;

在 DIsql 工具中使用 BACKUP 语句可以备份归档日志。归档备份的前提:一,归档文件的 db_magic、permanent_magic 值和库的 db_magic、permanent_magic 值必须一样;二,服务器必须配置归档;三,归档日志必须连续。DIsql 中输入以下即可备份归档:

BACKUP ARCHIVE LOG ALL BACKUPSET ‘arch_bak_01’;

执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。还原表数据:

RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPSET ‘/home/dm_bak/tab_bak_for_res_01’;

3.使用脱机工具 DMRMAN 进行备份还原
简介

DMRMAN(DM RECOVERY MANAGER)是DM的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作。仅会使用通过关键字DATABASE指定的目标库的本地归档配置信息,不会对本地归档配置文件中其他类型归档配置信息进行校验。

DMRMAN 工具支持控制台输入命令、命令行设置参数两种操作方式。DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。

配置

使用 CONFIGURE 命令就可显示 DMRMAN 配置项的当前值。

使用 CONFIGURE DEFAULT … CLEAR 命令可恢复任意一个配置项到默认值。

DMRMAN 备份还原命令中不支持设置跟踪日志文件,只能用 CONFIGURE 命令配置,默认配置不记录跟踪日志。

RMAN> CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log ’ TRACE LEVEL 2;

备份集搜索目录用于增量备份还原中搜索基备份。如果不指定备份集搜集目录只会在库的默认备份目录和当前备份执行备份集目录的上级目录下搜索备份集。配置备份集搜索目录步骤如下:

RMAN> CONFIGURE DEFAULT BACKUPDIR;

RMAN> CONFIGURE DEFAULT BACKUPDIR ‘/home/dm_bak1’,’/home/dm_bak2’;

归档日志搜索目录用于增量备份还原中搜索归档日志。配置归档日志搜索目录步骤如下:

RMAN> CONFIGURE DEFAULT ARCHIVEDIR;

RMAN> CONFIGURE DEFAULT ARCHIVEDIR ‘/home/dm_arch1’,’/home/dm_arch2’;

数据备份

在 DMRMAN 工具中使用 BACKUP 命令可以备份整个数据库。使用 DMRMAN 脱机备份数据库需要关闭数据库实例。

RMAN> BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’;

备份命令如果仅指定了必选参数如“BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’”,那么 DMRMAN 会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数,语法与使用 DIsql 联机备份类似。

管理备份

DMRMAN 中使用 SHOW 命令可以查看备份集的信息,若指定具体备份集目录,则会生成相应的备份集链表信息。

SHOW BACKUPSET…命令用于查看单个备份集信息。

SHOW BACKUPSETS…命令用于批量显示指定搜索目录下的备份集信息。如需要查看的多个备份集不在同一个目录下,可通过 WITH BACKUPDIR 参数指定多个备份集搜索目录,同时查看所有的备份集。

如果指定的备份搜索目录下包含不同数据库的备份集,而我们只想查看某个特定数据库的所有备份集信息,此时可以使用 SHOW BACKUPSETS … USE DB_MAGIC …命令实现。具体操作如下:

RMAN> BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’ BACKUPSET’/home/dm_bak/db_bak_for_show_db_magic_01’;

RMAN> BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG2/dm.ini’ BACKUPSET’/home/dm_bak/ db_bak_for_show_db_magic_02’;

RMAN> SHOW BACKUPSET’/home/dm_bak/db_bak_for_show_db_magic_01’;

RMAN> SHOW BACKUPSETS WITH BACKUPDIR ‘/home/dm_bak’ USE DB_MAGIC 1447060265;

SHOW BACKUPSET … INFO … 命令可以显示部分备份集信息,例如 SHOW BACKUPSET…INFO META 命令可以查看备份集的元数据信息。

DMRMAN 可以将显示的备份集信息输出到文件,目前支持的格式包括 TXT 和 XML,默认为 TXT 文件格式。使用 SHOW BACKUPSETS…TO ‘file_path’ FORMAT XML 命令可将备份信息以 XML 格式显示并输出到文件,如下所示:

RMAN> BACKUP DATABASE ‘/opt/dmdbms/data/DAMENG/dm.ini’ BACKUPSET’/home/dm_bak1/db_bak_for_xml_01’;

RMAN> SHOW BACKUPSET’/home/dm_bak1/db_bak_for_xml_01’ TO ‘/home/dm_info/bkp_info.txt’ FORMAT XML;

DMRMAN 中使用 REMOVE 命令删除备份集,可删除单个备份集,也可批量删除备份集。使用 REMOVE BACKUPSET … 命令可删除特定备份集,每次只能删除一个备份集。若删除备份集已经被引用为其他备份集的基备份且未指定 CASCADE,则报错。

数据库还原

使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。通过 RESTORE 命令还原后的数据库不可用,需进一步执行 RECOVER 命令,将数据库恢复到备份结束时的状态。

数据库备份集分为联机和脱机两种类型。通常情况下,用户会在联机状态下备份数据库,因此下面以联机数据库备份为例说明使用 DMRMAN 如何执行数据库还原操作。

1.联机备份数据库,保证数据库运行在归档模式及 OPEN 状态;

BACKUP DATABASE BACKUPSET ‘/home/dm_bak/db_full_bak_for_restore’;

2.准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示:

./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE

3.校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;

RMAN> CHECK BACKUPSET ‘/home/dm_bak/db_full_bak_for_restore’;

4.还原数据库。

RMAN> RESTORE DATABASE ‘/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini’ FROM BACKUPSET ‘/home/dm_bak/db_full_bak_for_restore’;

如果还原后,不需要重做日志,数据就已经处于一致性状态了(例如正常关闭库的脱机备份还原),则可以跳过这一步,直接进入数据库更新阶段。数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO日志;从归档恢复,即重做归档中的 REDO 日志。

数据库更新是指更新数据库的 DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER 命令完成。

RECOVER DATABASE ‘<ini_path>’ UPDATE DB_MAGIC;

4.使用 MANAGER工具进行联机备份还原

MANAGER 工具的对象导航树中的备份节点提供了联机备份还原相关的各项操作。

二.运维

1.数据库运维监控
1.CPU使用率监控

CPU 使用率指设备中的运行程序占用的 CPU 资源,表示所使用的设备在某个时间点运行程序的情况。使用率越高,说明设备在这个时间点所占用 CPU 资源越多,反之则较少。top 命令可以帮助查看数据库服务器运行概况,记录 CPU 使用信息。

top 命令显示结果分为两部分:

  • 统计信息,前五行显示系统整体的统计信息
  • 进程信息,统计信息下方类似表格区域显示的是各个进程的详细信息
2.内存使用率监控

内存使用率为当前使用的内存和全部内存的比值。调用操作系统 free -m 命令,free 命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。显示结果为物理内存Mem和交换分区Swap的详细信息。

3.磁盘空间监控

磁盘空间监控分为本地磁盘空间监控和共享存储磁盘空间监控。使用命令 df -h 可检查本地磁盘使用情况。共享存储磁盘空间监控常用于达梦数据库共享存储集群(DSC),可通过达梦自带的工具 dmasmtool 进行检查,命令如下:

cd $DM_HOME/bin ./dmasmtool /xxxx/dmdcr.ini

ASM>lsdg

4.IO监控

IO 监控可通过两种方法实现:调用操作系统 iostat -xmd 命令或使用 nmon 工具。使用 iostat -xmd 命令,执行结果如下图:
在这里插入图片描述

  1. 如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈。
  2. 如果 %idle 值高,表示 CPU 较空闲。
  3. 如果 %idle 值高但系统响应慢时,可能是 CPU 等待分配内存,应加大内存容量。
  4. 如果 %idle 值持续低于 10,表明 CPU 处理能力相对较低,系统中最需要解决的资源是 CPU。

执行 ./nmon 进入,按 d 即可实时显示磁盘 IO 情况。

5.网络资源监控

使用 ethtool 命令可以查看指定网口对应的网络传输速率。

6.系统时间监控

使用命令 date 查看服务器节点时间是否与当前时间符合。若时间不一致,可用 root 用户执行如下命令临时修改服务器时间。

7.实例状态监控

会话监控主要监控数据库中的活动会话,总会话以及其占最大连接数( max_sessions )的百分比。可以通过以下两种方式查询会话数。

方法一:SQL 方法查询会话数

–查询当前所有会话数 select count(*) from v$sessions;

–查看当前数据库中活动会话 select count(*) from v$sessions where state=‘ACTIVE’;

–查看当前非活动会话 select count(*) from v$sessions where state=‘IDLE’;

–结束会话 sp_close_session(sess_id);

方法二:操作系统命令查询会话数

–基于端口为 5236 的会话数查询

lsof -i:5236|grep dmserver|wc -l

netstat -nat|awk ‘{print $4}’|grep 5236|wc -l

查看当前活动会话时,若当前活动会话连接数量太大,则说明数据库当前可能存在以下异常情况:

  1. 当前业务繁忙,业务量太大;
  2. 当前系统中存在慢 SQL;
  3. 应用的重连机制存在缺陷。

查看当前非活动会话时,若当前非活动会话连接数量太大,说明数据库可能存在以下情况:

  1. 系统当前处于会话空闲期;
  2. 连接池会话上线设置过高;
  3. 应用释放连接机制存在异常。
8.线程监控

监控当前系统中活动线程的信息。

SELECT * FROM V$THREADS;

监控当前正在等待的线程信息。

SELECT * FROM V$LATCHES;

9.SQL监控

SQL 监控主要包括慢 SQL 及阻塞、死锁、有事务未提交的表等。

通过以下语句检查当前数据库中包含的慢 SQL 及阻塞语句: SELECT
DS.SESS_ID “被阻塞的会话ID”,
DS.SQL_TEXT “被阻塞的SQL”,
DS.TRX_ID “被阻塞的事务ID”,
(CASE L.LTYPE WHEN ‘OBJECT’ THEN ‘对象锁’ WHEN ‘TID’ THEN ‘事务锁’ END CASE ) “被阻塞的锁类型”,
DS.CREATE_TIME “开始阻塞时间”,
SS.SESS_ID “占用锁的会话ID”,
SS.SQL_TEXT “占用锁的SQL”,
SS.CLNT_IP “占用锁的IP”,
L.TID “占用锁的事务ID”
FROM
V L O C K L L E F T J O I N V LOCK L LEFT JOIN V LOCKLLEFTJOINVSESSIONS DS
ON
DS.TRX_ID = L.TRX_ID
LEFT JOIN V$SESSIONS SS
ON
SS.TRX_ID = L.TID
WHERE
L.BLOCKED = 1

查询死锁历史事务信息 select
dh.trx_id ,
sh.sess_id,
wm_concat(top_sql_text)
from
V D E A D L O C K H I S T O R Y d h , V DEADLOCK_HISTORY dh, V DEADLOCKHISTORYdh,VSQL_HISTORY sh
where
dh.trx_id =sh.trx_id
and dh.sess_id=sh.sess_id
group by
dh.trx_id, sh.sess_id;

有事务未提交的表查询 SELECT b.object_name, c.sess_id, a.*
FROM v l o c k a , d b a o b j e c t s b , v lock a, dba_objects b, v locka,dbaobjectsb,vsessions c
WHERE a.table_id = b.object_id AND ltype = ‘OBJECT’ AND a.trx_id = c.trx_id;

10.内存资源监控

内存资源监控主要监控 DM 数据库所占内存情况。DM 数据库使用的内存大致等于 BUFFER(系统缓冲区) + MPOOL(共享内存池),在进行内存资源监控时,一般需关注 v b u f f e r p o o l 和 v bufferpool 和 v bufferpoolvmem_pool 相关信息。

3.替换或升级key授权文件

DM 替换key授权文件的方式,有两种方式:

  • 将key放入$DM_HOME/bin后,重启数据库
  • 在线替换:将key放入$DM_HOME/bin后,调用相关函数,无需重启,对集群环境更友好

key文件的在线升级步骤:

1.备份原有授权文件

cd $DM_HOME/bin
ls dm.key #查看数据库临时授权文件
mv dm.key dmbak.key #将临时授权文件名修改(不建议直接删除)

2.更换正式授权文件

cp 正式授权licnse文件路径 $DM_HOME/bin/dm.key #拷贝正式授权license文件到达梦数据库安装目录/bin目录下dm.key中
ll dm.key #查看文件的属主,如果属主是root进行以下操作。
chown -R dmdba:dinstall dm.key #修改文件属主

3.用SYSDBA登录数据库,执行生效命令

./disql SYSDBA/SYSDBA #disql登录SYSDBA用户
SP_LOAD_LIC_INFO(); #使新的license已生效
select * from v$license; #查看license信息

.key中
ll dm.key #查看文件的属主,如果属主是root进行以下操作。
chown -R dmdba:dinstall dm.key #修改文件属主

3.用SYSDBA登录数据库,执行生效命令

./disql SYSDBA/SYSDBA #disql登录SYSDBA用户
SP_LOAD_LIC_INFO(); #使新的license已生效
select * from v$license; #查看license信息

达梦社区地址:https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值