实时主备环境
主机名 | 信息备注 | 对外IP | 心跳IP |
DM01 | 主库 | 192.168.3.63 | 10.10.1.63 |
DM02 | 从库 | 192.168.3.64 | 10.10.1.64 |
DM | 监视器 | 192.168.3.76 | 10.10.1.76 |
实时主备集群测试环境信息
登录主库(DM01)
创建测试环境
--创建测试表空间
CREATE tablespace TEST datafile '/home/dmdata/DMDB01/test01.dbf' size 128 autoextend ON NEXT 4 maxsize 10240; |
(DM01)备份当前表空间环境
BACKUP TABLESPACE test BACKUPSET '/backup/ts_bak_for_arch'; |
(DM01)创建表测试数据
CREATE TABLE test_student ( id bigint identity, name varchar(20), birthday date, math int, english int, science int )STORAGE (ON TEST); |
(DM01)创建测试数据
insert into test_student select dbms_random.string('1',trunc(dbms_random.value(3,8))), current_date()-365*20+dbms_random.value(-365,365), trunc(dbms_random.value(40,100)), trunc(dbms_random.value(40,100)), trunc(dbms_random.value(40,100)) from dual connect by level <=100000; commit; |
(DM01)确认当前测试数据信息
SQL> select count(*) from test_student; 行号 COUNT(*) ---------- -------------------- 1 100000 |
(DM01)登录主节点插入部分数据后退出,然后删除该节点下所有归档日志;
清空主库归档
rm -rf * --删除主库上所有的归档 |
(DM01)清掉主库进程和守护进程
Kill 掉dmwatcher和dmserver进程 |
(DM01)将之前备份的归档日志恢复主库,以删除测试数据以便恢复测试
RESTORE DATABASE '/home/dmdata/DMDB01/dm.ini' TABLESPACE test FROM BACKUPSET '/backup/ts_bak_for_arch'; |
测试主库环境搭建完成
DM02
进入备库归档日志目录/home/dmarch将其复制到主库上
scp -rp * 192.168.3.63:/home/dmarch/ |
(DM01)使用备库归档进行恢复。由于主节点下所有归档已被删除,无法恢复到最新状态,此时需要借助备库存在的归档进行恢复。
dmrman
REPAIR ARCHIVELOG DATABASE '/home/dmdata/DMDB01/dm.ini'; RECOVER DATABASE '/home/dmdata/DMDB01/dm.ini' WITH ARCHIVEDIR '/home/dmarch'; |
(DM01)恢复完成后,直接启动主库数据库
./dmserver /home/dmdata/DMDB01/dm.ini mount |
(DM01)启动数据守护进程
./dmwatcher /dbdata/dmdata/DMDB01/dmwatcher.ini |
主机数据库服务看是否能启动,启动成功
(DM)监视器进程的原因原主机已经被切换为了备机。这个时候我们来将dm01机器禁掉,这时监视器开启高可用切换
(DM)Show查看当前集群状态,发现DM02已经下线,DM01上线提升主库
连接主库后确认数据是否已修复,查看表内数据情况,如果有正常数据,说明表空间数据恢复成功。
(DM01)
DM当前集群状态
这个案例。如果主库损坏。想尽一切办法去追平数据。因此在备份是联机热备。如果想追平表内的数据,只有去利用归档。而主节点的归档全部丢失,可以认为是主节点完全的损坏,而备节点暂时接管了全部业务,未了尽快的恢复集群,我们就需要用到备节点中的归档来取追平数据,再将主节点切换上线
社区地址:https://eco.dameng.com




