达梦利用归档恢复数据到指定时间
<h3>一、起因</h3>
<p>正式环境达梦数据库,表数据被误删除,且导致客户无法正常使用
在DM数据库中只要拥有连续的归档日志,就可以将数据库还原恢复到之前的任一时间点</p>
<h3>二、备份数据库</h3>
<p>首先停止数据库</p>
<pre><code>#root用户执行
systemctl stop DmServiceDMSERVER.service</code></pre>
<p>然后使用dmrman工具进行全库备份:</p>
<pre><code>su dmdba
cd /risen/soft/database/dmdbms/bin
#全库备份
./dmrman CTLSTMT=&quot;BACKUP DATABASE '/risen/soft/database/dmdba/data/DMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/risen/soft/database/dmdba/data/DMENG/bak/DB_DMENG_FULL_2022_02_24'&quot;</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d5feee6cb9e82725f00137a153ab5243" alt="" /></p>
<h3>三、还原数据库</h3>
<p>执行归档恢复前必须要先主执行全库还原
同样是使用dmrman工具,我们对数据库进行还原(恢复至昨日备份时刻):</p>
<pre><code>./dmrman CTLSTMT=&quot;RESTORE DATABASE '/risen/soft/database/dmdba/data/DMENG/dm.ini' FROM BACKUPSET '/risen/soft/database/dmdba/data/DMENG/bak/DB_DMENG_FULL_2022_02_23_23_30_15.bak'&quot;</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/201816b67db55d9bb5c224dcbb89cc66" alt="" /></p>
<h3>四、恢复数据库到指定时间</h3>
<p>使用dmrman工具,利用归档日志将数据库恢复到指定时间,即误删数据的前几分钟(例如11点05分删除数据,指定恢复时间设置为11点整):</p>
<pre><code>./dmrman CTLSTMT=&quot;RECOVER DATABASE '/risen/soft/database/dmdba/data/DMENG/dm.ini' with archivedir '/risen/soft/database/dmdba/data/DMENG/arch' until time '2022-02-24 11:00:00'&quot;</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/4fd996f55ee6d5b18d31f2c8afd4f193" alt="" /></p>
<h3>五、更新DB_MAGIC</h3>
<p>使用dmrman工具进行:</p>
<pre><code>./dmrman CTLSTMT=&quot;RECOVER DATABASE '/risen/soft/database/dmdba/data/DMENG/dm.ini' update db_magic&quot;</code></pre>
<p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/2366ed2d0fa987a3a05c3a92f8f7ff89" alt="" /></p>
<h3>六、启动数据库进行验证</h3>
<pre><code>#root用户执行
systemctl start DmServiceDMSERVER.service</code></pre>