1 实验说明
在主备库环境中,当主库发生故障之后短时间内无法修复,需要在备库对外提过业务支撑,但是备库和主库数据有一定的差异,在这情况之下我们可以通过将主库的归档日志拷贝到备库,应用主库的归档文件到最新的时间。
1.1 使用环境
主备节点 数据库版本
192.168.142.133 (主) 1-3-125-2023.12.21-212932-10000-ENT -10000
192.168.142.132 (备) 1-3-125-2023.12.21-212932-10000-ENT -10000
2 模拟试验
2.1 构造数据
正常将备机关闭,在主库中插入数据。
--确认备库服务停止
[dmdba@localhost bin]$ ps -ef | grep dms
dmdba 8598 4890 0 18:15 pts/1 00:00:00 grep --color=auto dms
[dmdba@localhost bin]$ ps -ef | grep dmw
dmdba 8602 4890 0 18:15 pts/1 00:00:00 grep --color=auto dmw
--主库创建表插入数据
create table "T1"
(
"C1" int PRIMARY KEY IDENTITY(1,1),
"C2" varchar2(50),
"C3" datetime(3),
"C4" float,
"C5" clob);
declare
i int;
begin
i := 1;
while i <= 6000
loop
insert into T1 (C2,C3,C4,C5) values(sys_guid(), SYSTIMESTAMP(3), i, DBMS_RANDOM.STRING('X',50));
if i%100=0 then
commit;
sleep(0.5);
end if;
i = i+1;
end loop;
commit;
end;
--执行完成以后关闭主库服务
2.2 归档应用
将主库的归档日志拷贝到备库进行重演操作
[dmdba@localhost arch]$ scp ARCHIVE_LOCAL_0x2C0CA4B8_EP0_2024-01-03_1* 192.168.142.132: /opt/dmdbms/data/DMDW/arch/132
2.2.1 启动备库
--启动守护进程
[dmdba@localhost bin]$ ./DmWatcherServiceWatcher start
--启动备库
open database GDW1.GRP1_RT_03
此操作需谨慎, 如果待执行实例是PRIMARY模式,请确认是否将其作为有效PRIMARY实例,是否继续执行(Y/N)?
y
[monitor] 2024-01-02 18:29:38: 检查守护进程GRP1_RT_03是否可以自动OPEN实例GRP1_RT_03
[monitor] 2024-01-02 18:29:39: 守护进程GRP1_RT_03不符合自动OPEN条件,允许执行此命令
[monitor] 2024-01-02 18:29:39: 开始OPEN实例(GRP1_RT_03)
[monitor] 2024-01-02 18:29:39: 通知守护进程GRP1_RT_03切换OPEN FORCE状态
[monitor] 2024-01-02 18:29:39: 守护进程(GRP1_RT_03)状态切换 [STARTUP-->OPEN FORCE]
[monitor] 2024-01-02 18:29:39: 切换守护进程GRP1_RT_03为OPEN FORCE状态成功
[monitor] 2024-01-02 18:29:39: 实例GRP1_RT_03开始执行SP_SET_GLOBAL_DW_STATUS(0, 8)语句
[monitor] 2024-01-02 18:29:39: 实例GRP1_RT_03执行SP_SET_GLOBAL_DW_STATUS(0, 8)语句成功
[monitor] 2024-01-02 18:29:39: 实例GRP1_RT_03开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2024-01-02 18:29:39: 实例GRP1_RT_03执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2024-01-02 18:29:39: 实例GRP1_RT_03开始执行SP_SET_GLOBAL_DW_STATUS(8, 0)语句
[monitor] 2024-01-02 18:29:39: 实例GRP1_RT_03执行SP_SET_GLOBAL_DW_STATUS(8, 0)语句成功
[monitor] 2024-01-02 18:29:39: 通知守护进程GRP1_RT_03切换OPEN状态
[monitor] 2024-01-02 18:29:39: 守护进程(GRP1_RT_03)状态切换 [OPEN FORCE-->OPEN]
[monitor] 2024-01-02 18:29:39: 切换守护进程GRP1_RT_03为OPEN状态成功
[monitor] 2024-01-02 18:29:39: 通知组(GDW1)的守护进程执行清理操作
[monitor] 2024-01-02 18:29:39: 清理守护进程(GRP1_RT_03)请求成功
[monitor] 2024-01-02 18:29:39: 实例(GRP1_RT_03)OPEN成功
2.2.2 应用归档日志
在备库中应用归档日志。
--确认magic
select * from v$rapply_lsn_info;
--执行归档重演
SP_APPLY_ARCH_UNTIL_LSN(0,'/opt/dmdbms/data/DMDW/arch/132',0,'','', 739026104);
--说明:
SP_APPLY_ARCH_UNTIL_LSN
定义:
SP_APPLY_ARCH_UNTIL_LSN(
n_path int,
arch_path varchar(4096),
n_ep int,
end_seqno varchar(512),
end_lsn varchar(512),
db_magic int
)
功能说明:
备库重演归档日志到指定日志包序号和LSN。
参数说明:
n_path:归档目录个数
arch_path:归档目录
n_ep:若源库为集群
end_seqno:各节点结束日志包序号
end_lsn:各节点结束LSN
db_magic: 表示待重演的归档日志的db_magic;
2.3 验证数据
登录备库验证归档重演完成,数据已经同步。
[dmdba@localhost bin]$ ./disql SYSDBA:5246
密码:
服务器[LOCALHOST:5246]:处于备库打开状态
登录使用时间 : 3.329(ms)
disql V8
SQL> select top 3 * from t1;
行号 C1 C2 C3 C4 C5
---------- ----------- -------------------------------- ----------------------- ------------------------- --------------------------------------------------
1 1 5ACAA8BC1F1EB21103AF2C81A6F1E254 2024-01-03 12:13:54.319 1.000000000000000E+00 L41L2J0B2R3IOX82NV1MMRIPMGTM9FO1S6DNARX80BPR2KHO5U
2 2 52D2A8BC1F1EB211BB9DF605D568954B 2024-01-03 12:13:54.319 2.000000000000000E+00 8QLY3XAGKGPXOIE0DT175L4GI6Q9N4SORDTD1BMVKB43QOQ5BV
3 3 84D3A8BC1F1EB211508B639B11EE8253 2024-01-03 12:13:54.319 3.000000000000000E+00 RRD0GLSUBB058IYEQG5Y29R7QOU12WALYMRC9K2WSQRHQ09KLO
已用时间: 1.490(毫秒). 执行号:301.
文章
阅读量
获赞