1 归档查询
一般建议DMDSC集群中的节点,除了配置本地归档以外,再双向配置集群中所有其他节点的远程归档。
在DMDSC中,每个节点都可以进行事务操作,也就是说每个节点都会产生归档数据。
达梦数据库中表的备份不依赖归档数据,但对于表空间和数据库备份,在恢复时为了保证一致性,必须依赖归档文件。
在DMDSC中的每个节点都有事务日志,所以在DMDSC中,在备份节点上需要能够访问到所有节点的归档日志。远程归档就是解决这个问题的方法。
配置远程归档后可以将写入本地归档的REDO日志信息发送到远程节点的指定归档目录中。
注意,这里是在写入本地归档日志文件的同时,通过MAL系统将REDO日志发送给指定的数据库实例,没有先后顺序。
配置完成后就可以保证在任意一个节点的本地磁盘中都能够找到DMDSC所有节点产生的完整的归档日志文件。
达梦数据库在本地归档失败与远程归档失败时的处理策略是不同的:
(1)当本地归档失败,比如磁盘空间不足时,系统将会挂起。
(2)当远程归档失败时,远程归档将失效,不再发送REDO日志到指定数据库实例。当节点间网络恢复或者远程节点重启成功后,系统会自动检测并恢复远程归档,继续发送新写入的REDO日志,但不会主动补齐故障期间的REDO日志。此时需要手工从远程节点的本地归档复制缺失的归档到本地节点。
可通过查询以下视图获取归档配置以及归档状态等信息
sql
-- V$DM_ARCH_INI,关于归档的详尽信息
SQL> select ARCH_NAME,ARCH_TYPE,ARCH_DEST from V$DM_ARCH_INI;
行号 ARCH_NAME ARCH_TYPE ARCH_DEST
---------- --------------- --------- ----------------------
1 ARCHIVE_LOCAL1 LOCAL +DMARCH/ARCH/DSC0/arch
2 ARCHIVE_REMOTE1 REMOTE DSC1
3 ARCHIVE_LOCAL2 LOCAL /dmarch
-- V$ARCH_STATUS,关于归档的状态信息
SQL> select * from v$arch_status;
行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC
---------- --------- ---------------------- ----------- --------
1 LOCAL +DMARCH/ARCH/DSC0/arch VALID DSC0
2 REMOTE +DMARCH/ARCH/DSC1/arch VALID DSC1
3 LOCAL /dmarch VALID DSC0
2 关于DMARCH.INI文件配置
以两节点DMDSC集群为例,说明如何配置远程归档。
DSC0实例dmarch.ini文件配置:
bash
[dmdba@dsc01 DSC0]$ pwd
/dm/dmdbms/dsc_config/DSC0
[dmdba@dsc01 DSC0]$ cat dmarch.ini
ARCH_WAIT_APPLY = 0
-- 控制备库在接收到主库的归档日志后,是否需要等待重演(apply)完成后再响应主库。(Datawatch常用,1为事务一致模式,0为高性能模式立即响应主库归档日志)
ARCH_LOCAL_SHARE = 1
-- 指定 DMDSC 集群中的本地归档是否共享给远程节点作为远程归档(1共享,0不共享)。设置为1意味着本地归档日志不仅对本地节点可用,还可以被集群中的其他节点访问和使用。这在多节点集群环境中尤为重要,以确保所有节点都能访问到完整的归档日志。
ARCH_LOCAL_SHARE_CHECK = 0
-- 是否进行本地归档和远程归档路径的一致性校验(1校验,0不校验),设置为0表示不进行路径一致性校验。
-- 这意味着系统不会验证本地归档路径和远程归档路径是否一致,这在某些高级配置中可能是必要的,但通常建议保持一致性以避免潜在的问题。
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
-- 单位M,范围64M~2048M
ARCH_SPACE_LIMIT = 204800
-- 单位M,范围0或1024M~2147483647 M,0表示不限制当本地归档文件的总大小达到 204800 MB(200 GB)时,系统将自动删除最旧的归档日志文件以腾出空间。
ARCH_FLUSH_BUF_SIZE = 32
-- 归档合并刷盘缓存的大小,单位为 M。取值范围0~128M,设置为32MB,表示系统在进行归档日志刷盘操作时,会使用32 MB的缓存来优化性能。
-- 设置为0表示不使用归档合并刷盘缓存
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
-- 指定远程节点DSC1的本地归档日志文件存放路径。
-- +DMARCH/ARCH/DSC1/arch 是 ASM 文件系统的路径,表示DSC1节点的归档日志将存储在 ASM 磁盘组DMARCH的ARCH/DSC1/arch目录下。
-- 注意:此路径必须与DSC1节点上dmarch.ini文件中[ARCHIVE_LOCAL1]配置的ARCH_DEST路径完全一致,否则服务器启动时会校验失败
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32
DSC1实例dmarchi.ini文件配置:
bash
[dmdba@dsc02 DSC1]$ pwd
/dm/dmdbms/dsc_config/DSC1
[dmdba@dsc02 DSC1]$ cat dmarch.ini
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32
3 归档常见操作
3.1 手动生成归档
sql
-- 切换日志
SQL> alter system switch logfile;
操作已执行
已用时间: 22.456(毫秒). 执行号:0.
SQL> alter database archivelog current;
操作已执行
已用时间: 4.306(毫秒). 执行号:0.
3.2 修改归档存放路径
达梦数据库在已经开启归档模式的情况,无法在open状态下修改归档目录,OPEN状态下仅允许添加REALTIME、TIMELY、ASYNC、SYNC归档。
把数据库改成mount状态下可以在线添加归档日志路径(新增归档目标 ),但无法修改已有归档路径。
要修改数据库的归档路径,只能是手工修改dmarch.ini文件,然后重启实例生效。
sql
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.706(ms)
disql V8
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/data/arch, TYPE = local, FILE_SIZE = 256, SPACE_LIMIT = 0';
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/data/arch, TYPE = local, FILE_SIZE = 256, SPACE_LIMIT = 0';
第1 行附近出现错误[-980]:OPEN状态下仅允许添加REALTIME、TIMELY、ASYNC、SYNC归档.
已用时间: 0.609(毫秒). 执行号:0.
SQL> alter database mount;
操作已执行
已用时间: 25.041(毫秒). 执行号:0.
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/dmarch, TYPE = local, FILE_SIZE = 256, SPACE_LIMIT = 0';
操作已执行
已用时间: 22.074(毫秒). 执行号:0.
[dmdba@dsc01 arch1]$ pwd
/dm8/dmarch/arch1
SQL> ALTER DATABASE modify ARCHIVELOG 'TYPE=local,DEST=/dm8/dmarch/arch1,FILE_SIZE = 512, SPACE_LIMIT = 10240';
ALTER DATABASE modify ARCHIVELOG 'TYPE=local,DEST=/dm8/dmarch/arch1,FILE_SIZE = 512, SPACE_LIMIT = 10240';
第1 行附近出现错误[-953]:归档目标不存在.
已用时间: 1.695(毫秒). 执行号:0.
SQL> ALTER DATABASE DELETE ARCHIVELOG 'DEST = /dm8/dmarch/arch1, TYPE = local';
ALTER DATABASE DELETE ARCHIVELOG 'DEST = /dm8/dmarch/arch1, TYPE = local';
第1 行附近出现错误[-953]:归档目标不存在.
已用时间: 2.410(毫秒). 执行号:0.
通过修改dmarch.ini文件调整归档存放路径
bash
-- 两个节点停止集群服务
systemctl stop DmCSSServiceCSS.service
-- 两个节点创建新归档存放目录
[dmdba@dsc01 dmarch01]$ pwd
/dm8/dmarch01
[dmdba@dsc02 dmarch02]$ pwd
/dm8/dmarch02
-- 修改dmarch.ini
-- 节点1
[dmdba@dsc01 DSC0]$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch01
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 32
ARCH_HANG_FLAG = 1
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = /dm8/dmarch02
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 32
-- 节点2
[dmdba@dsc02 DSC1]$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch02
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 32
ARCH_HANG_FLAG = 1
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = /dm8/dmarch01
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 32
-- 启动集群
-- 查询归档状态
SQL> select * from v$arch_status;
行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC
---------- --------- ------------- ----------- --------
1 LOCAL /dm8/dmarch01 VALID DSC0
2 REMOTE /dm8/dmarch02 VALID DSC1
SQL> select * from v$arch_status;
行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC
---------- --------- ------------- ----------- --------
1 LOCAL /dm8/dmarch02 VALID DSC1
2 REMOTE /dm8/dmarch01 VALID DSC0
已用时间: 2.550(毫秒). 执行号:1.