避免删库跑路事件,对数据库一定要有敬畏之心,尤其在线系统。类似的问题,我们可以通过进行严格的在线系统管控来避免。但是,构建完善的数据库架构方案才是当务之急。
本文我们将通过使用达梦数据守护集群的异步同步功能,演示如何在遇到误误操作数据后的快速恢复功能。您可能认为仅仅针对发生概率极低的误操作而构建一套系统,毕竟是要购买额外的硬件和软件来搭建系统,这个代价有些高啊!其实,这个异步数据库是可以承担一部分实时性要求不高的只读访问的,可以分担主库的一部分压力,这样算下来还是很经济实用的。
对于数据体量大的系统,比如达到了10TB以上,在需要进行数据库中部分表的还原时,如果利用数据库备份和归档还原到指定时间点,整体耗时是比较长的。达梦数据库数据守护集群支持异步备库,同步间隔时间可以通过定时器进行配置,最小的同步间隔时间为1分钟。利用异步备库的同步延时功能,比如,每天的0点进行一次数据同步,如果需要将某张数据表的数据恢复到当天的某个时刻,我们通过手动同步命令,将异步备机同步到指定的时刻。最后,通过逻辑备份还原的方式,将异步备库数据同步到主库,完成数据的恢复。
同时,对于一些报表类业务,可以部署在异步备库,分担一部分主库的访问压力。而对于同步的延时,可以根据系统的实际需求进行调整。当然,如果我们发现需要恢复数据时,异步备机正好完成了上次的同步,异步备库的数据已经同步到恢复时间点之后了,那就无法实现数据的恢复了。所以,同步的间隔一定要根据实际使用需求合理设定。
集群的搭建在此不做过多的介绍,大家可以参考。此处给大家列出相关的配置文件。
1.主库的dm.ini
需要修改如下相关参数:
INSTANCE_NAME = DM1
MAL_INI = 1
ARCH_INI = 1
TIMER_INI = 1
2. 主库的dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST = 192.168.244.128
MAL_PORT = 61141
MAL_INST_HOST = 192.168.137.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.244.129
MAL_PORT = 61142
MAL_INST_HOST = 192.168.137.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3.主库的dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dm/dmdbms/data/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 4096
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC
ARCH_DEST = DM2
ARCH_TIMER_NAME = RT_TIMER
ARCH_SEND_DELAY = 1
其中,ARCHIVE_ASYNC为配置的异步归档,需要增加ARCH_SEND_DELAY延时发送归档参数,否则无法进行手动的归档追加同步。
4.主库的dmtimer.ini
[RT_TIMER]
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 00:00:00
END_TIME = 00:00:00
DURING_START_DATE = 2016-02-11 17:36:09
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
IS_VALID=1
RT_TIMER为定时器名称,和dmarch.ini中的ARCH_TIMER_NAME保持一致。上述的配置是每天的0点钟触发主库发送归档日志到异步备库。
5.主库的dmwatcher.ini
[GRP1]
DW_TYPE = LOCAL
DW_MODE = MANUAL
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dm/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserver
需要注意DW_TYPE为LOCAL。
1. 异步备库的dm.ini
INSTANCE_NAME = DM2
MAL_INI = 1
ARCH_INI = 1
2.异步备库dmmal.ini和主库相同
3.异步备库的dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dm/dmdbms/data/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 4096
4.异步备库dmwatcher.ini
[GRP1]
DW_TYPE = LOCAL
DW_MODE = MANUAL
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dm/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserver
测试场景比较简单,仅用于验证手动同步功能。
主库进行操作:
备库查询:
手动触发同步,同步到2021-12-1 09:00:00,通过dmmonitor连接集群后进行操作:
SET DATABASE DM2 UNTIL TIME ‘2021-12-1 09:00:00’
参考:
达梦数据守护与读写分离手册.pdf
文章
阅读量
获赞