专栏/培训园地/ 文章详情 /

主备部署(同步归档模式)

默默向上游 2024/01/09 1361 1 0
摘要

9b9592b1d86c5c6faa5e68380dfda29.png

1 部署规划

1703415527634.jpg

2 数据库软件安装

使用root用户挂载数据库软件的iso文件:

mkdir -p /dmiso
mount -o loop dm8_xxx.iso /dmiso

复制

使用dmdba用户安装软件:

su - dmdba
cd /dmiso
./DMInstall.bin -i

复制

选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,输入 N 跳过。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:

/home/dmdba/dmdbms/script/root/root_installer.sh

复制

3 配置同步主备

3.1 初始化实例

实例初始化执行以下命令:
主库:

dminit path=/dmdata page_size=32 extent_size=32   log_size=2048 db_name=dmdb instance_name=dw1

复制

备库:

dminit path=/dmdata page_size=32 extent_size=32   log_size=2048 db_name=dmdb instance_name=dw2

复制

3.2 脱机备份数据库

主库启动数据库出现system is ready后输入exit停止数据库:

dmserver /dmdata/dmdb/dm.ini

复制

进入dmrman执行全备:

dmrman use_ap=2

复制

backup database '/dmdata/dmdb/dm.ini' backupset '/hoe/dmdba/bakfull’;

复制

图片1.png

3.3 备份还原备库

将主库备份文件scp到备库,进入dmrman还原备库:

dmrman use_ap=2

复制

执行 restore:

restore database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

复制

完成后执行 recover:

recover  database '/dmdata/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';

复制

最后执行 recover update db_magic:

最后执行 recover update db_magic:

复制

图片2.png

3.4 修改dm.ini

主备节点一致:
vi /dmdata/dmdb/dm.ini

MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

复制

3.5 配置归档文件dmarch.ini

vi /dmdata/dmdb/dmarch.ini
主节点:

[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL 
ARCH_DEST     = /dmdata/arch    
ARCH_FILE_SIZE    = 2048 
ARCH_SPACE_LIMIT  = 102400
[ARCHIVE_SYNC] 
ARCH_TYPE = SYNC 
ARCH_DEST = dw2
ARCH_RECOVER_TIME = 1 

复制

备节点:

[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL 
ARCH_DEST     = /dmdata/arch    
ARCH_FILE_SIZE    = 2048 
ARCH_SPACE_LIMIT  = 102400 

复制

3.6 置MAL系统配置文件dmmal.ini

主备节点一致:
vi /dmdata/dmdb/dmmal.ini

MAL_CHECK_INTERVAL   = 5  
MAL_CONN_FAIL_INTERVAL  = 15  
[MAL_INST1]
  MAL_INST_NAME = dw1 
  MAL_HOST     = 192.168.231.133  
  MAL_PORT     = 7336
  MAL_INST_HOST   = 192.168.231.133  
  MAL_INST_PORT   = 5236 
  MAL_DW_PORT  = 7436 
  MAL_INST_DW_PORT = 7536
[MAL_INST2]
  MAL_INST_NAME = dw2 
  MAL_HOST      = 192.168.231.135 
  MAL_PORT          = 7336 
  MAL_INST_HOST         = 192.168.231.135
  MAL_INST_PORT         = 5236
  MAL_DW_PORT  = 7436 
  MAL_INST_DW_PORT = 7536

复制

3.7 配置守护进程配置文件dmwatcher.ini

主备节点一致:
vi /dmdata/dmdb/dmwatcher.ini

[GRP_SN] 
DW_TYPE    = LOCAL  
DW_MODE    = MANUAL 
DW_ERROR_TIME     = 30 
INST_RECOVER_TIME  = 60      
INST_ERROR_TIME   = 20 
INST_OGUID         = 453331
INST_INI           = /dmdata/dmdb/dm.ini
INST_AUTO_RESTART  = 1  
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/dmserver 

复制

主备启动到mount:

dmserver /dmdata/dmdb/dm.ini mount

复制

主库执行:

disql SYSDBA/SYSDBA@localhost:5236
sp_set_oguid(453331);
alter database primary;

复制

备库执行:

disql SYSDBA/SYSDBA@localhost:5236
sp_set_oguid(453331);
alter database standby;

复制

主备启动守护进程:

dmwatcher /dmdata/dmdb/dmwatcher.ini

复制

3.8 配置监视器配置文件dmmonitor.ini

vi /dmdata/dmdb/dmmonitor.ini

MON_DW_CONFIRM    = 0   
MON_LOG_PATH    = /home/dmdba/dmdbms/log  
MON_LOG_INTERVAL  = 60 
MON_LOG_FILE_SIZE   = 200
MON_LOG_SPACE_LIMIT  = 1024  
[GRP_SN] 
 MON_INST_OGUID    = 453331 
 MON_DW_IP     = 192.168.253.133:7436
 MON_DW_IP     = 192.168.253.135:7436

复制

登录监视器查看状态

dmmonitor /dmdata/dmdb/dmmonitor.ini

复制

图片3.png
登录主库创建T1表测试:

CREATE TABLE T1 AS SELECT * FROM DBA_USERS;

复制

登录备库查看T1表是否生成:
图片4.png

3.9 注册服务

使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/dmdb/dmwatcher.ini

复制

注册数据库实例服务(主备库都执行):

./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/dmdb/dm.ini

复制

启动数据库实例(主备库都执行):

DmServicedw start

复制

启动守护进程(主备库都执行):

DmWatcherServicedw start

复制

4 主备延迟测试

同步归档(Sync)在主库归档日志刷盘后,通过 MAL 系统将 Redo 日志发送到备库。同步备库的 Redo 日志重演过程与实时归档等其他类型的归档完全一致。同步归档的执行流程为:主库在归档日志刷盘后,将 Redo 日志发送到备库,备库收到Redo 日志(RLOG_PKG)后,将其加入日志重演任务系统,并马上响应主库,不需要等待Redo 日志重演结束后再响应主库。

4.1 模拟测试数据

--模拟主库写入100w数据查看备库延迟情况
create table t1(a int,b varchar2(100));
declare 
begin
for i in 1..1000000 loop
insert into t1 values(i,to_char(sysdate));
end loop;
commit;
end;
/

复制

4.2检查备库同步情况

备库数据情况备库数据成功写入,用户无感知:
图片1.png

查看监视器状态:
图片2.png

5 故障模拟

同步备库的守护进程也需要配置为 LOCAL 类型,因此同步备库不支持主备库切换、备库接管等操作。若有将同步备库切换为主库的需要,可以手动执行 sql语句将其切换为 PRIMARY 模式,但此时数据守护系统并不能保证该操作的正确性,需要由用户自身确保操作正确。

5.1备库故障

模拟主库在持续写入数据,持续时间5分钟:
图片3.png

图片4.png
主库写入时kill掉备库守护和数据库进程:
图片5.png
查看备库归档,状态已并更为invalid:
图片6.png
查看压测运行结果,成功率100%:
图片7.png
查看响应时间平稳无明显波动:
图片8.png
备库恢复服务后查看监视器状态,归档状态async_send,待归档同步后变更为valid:
图片9.png

5.2主库故障

由于同步归档LOCAL 类型,因此同步备库不支持主备库切换,需通过sql手动建备库变更为主库。
模拟主库故障,kill掉守护和数据库服务:
图片10.png
查看监视器状态,主库实例为error状态:
图片11.png
通过sql将备库切换为主库:
1)停止备库守护服务

DmWatcherServicedw  stop

复制

2)执行命令将备库转换为PRIMARY模式

SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);
ALTER DATABASE MOUNT;
ALTER DATABASE PRIMARY;
ALTER DATABASE OPEN FORCE;

复制

图片12.png

5.3集群恢复

如需恢复原主备集群需重新备份恢复,参考《配置同步主备》

6 对比实时主备异同

13.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服