越秀资本2023年基础设施采购项目lszldb RAC虚拟机数据库存储迁移方案

明确lszldb RAC虚拟机数据库存储迁移需求

  1. 将现有的EMC Unity400存储替换为UnityXT480存储(采用RDM磁盘)
  2. 采用asm rebalance技术进行在线迁移。

准备工作

如无特别说明, 默认使用grid用户执行.

  1. grid用户执行标示为 $

  2. root用户执行标示为 #

查看ASM磁盘组信息

[grid@lszldb1 ~] asmcmd lsdg

查看ASM 磁盘空间使用情况

$ asmcmd lsdsk -k

$ sqlplus / as sysasm

SQL> set linesize 300
column path format a50
column NAME format a15;
select GROUP_NUMBER,DISK_NUMBER,HEADER_STATUS,MODE_STATUS,MOUNT_STATUS,STATE,total_mb,free_mb,NAME,PATH from v$asm_disk;

$ crsctl query css votedisk

给lszldb数据库虚拟化分配共享RDM磁盘

  1. 在存储中划分对应的LUN同时分配给lszldb RAC虚拟机数据库所在的物理服务器.
  2. 分配RDM设备至对应的虚拟机.

参考现有RDM磁盘配置和VMware DOC

https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.storage.doc/GUID-B3522FF1-76FF-419D-8DB6-F15BFD4DF12A.html

查看并确认新挂载的磁盘状态

$ lsblk

Login in as root user

# dmesg

# for DISK in `find /dev/ -name "sd*" | sort`; do WWID=`/sbin/scsi_id --whitelisted --replace-whitespace --device=$DISK`; \
echo $DISK " WWID/disk.UUID is " $WWID; done | sort

记录新增加的6块磁盘WWID/disk.UUID

修改udev oracle磁盘规则

# cp /etc/udev/rules.d/99-oracle-asmdevices.rules{,.bk-$(date +%F)}

# vi /etc/udev/rules.d/99-oracle-asmdevices.rules

使udev规则生效

# udevadm control --reload-rules

# udevadm trigger --type=devices --action=change

$ sqlplus / as sysasm

SQL> select GROUP_NUMBER,DISK_NUMBER,HEADER_STATUS,MODE_STATUS,MOUNT_STATUS,STATE,total_mb,free_mb,NAME,PATH from v$asm_disk;

$ tail -f .../diag/asm/+asm/+ASM/trace/alert.log

正式加入前创建磁盘组测试(可选)

为新oracleasm磁盘创建测试磁盘组以确认磁盘是可以正常使用

测试完成之后, 删除该测试磁盘组, 再执行加入现有磁盘组的操作

lszldb数据库存储迁移步骤

备份相关数据

  1. 执行备份
  2. 备份归档

执行备份

使用nbu或备份软件执行全备或增备.

备份归档

建议手动再备份一下asm磁盘组中的归档日志至本地.

创建本地备份目录, 确保该目录空间足够.

# mkdir /backup/$(date +%F)

# chown grid:oinstall /backup/$(date +%F)

$ for i in $(asmcmd ls DATA/LSZLDB/ARCHIVELOG/); do
  asmcmd cp +DATA/LSZLDB/ARCHIVELOG/$i /backup/2023-12-30
done

将磁盘asm-ncrs01-asm-ncrs03加入到OCR磁盘组

$ sqplus / as sysasm

alter diskgroup OCR add disk '/dev/asm-ncrs01','/dev/asm-ncrs02','/dev/asm-ncrs03' rebalance power 6;

或者通过以下命令依次添加(建议一起添加).

alter diskgroup OCR add disk '/dev/asm-ncrs01' rebalance power 6;
alter diskgroup OCR add disk '/dev/asm-ncrs02' rebalance power 6;
alter diskgroup OCR add disk '/dev/asm-ncrs03' rebalance power 6;

查看rebalance情况和日志

$ asmcmd -p lsop

$ sqlplus / as sysasm

SQL> select * from gv$asm_operation;

$ tail -f path-to-asm/alert.log

然后在DATA中加入asm-ndata01-asm-ndata03磁盘

alter diskgroup DATA add disk '/dev/asm-ndata01','/dev/asm-ndata02','/dev/asm-ndata03' rebalance power 9;

查看rebalance情况与日志对比

$ asmcmd -p lsop

$ sqlplus / as sysasm

SQL> select * from gv$asm_operation;

$ tail -f path-to-asm-diag/alert.log

备注:

确认所有磁盘rebalance完成后,再进行下一步删盘操作;

尽量在业务不繁忙的情况下操作;

逐次剔除旧存储对应的asm disk

DROP OCR MEMBER

sqlplus -s '/ as sysasm' << "EOF"
alter diskgroup OCR drop disk OCR_0000 rebalance power 3;
EOF

sqlplus -s '/ as sysasm' << "EOF"
alter diskgroup OCR drop disk OCR_0001 rebalance power 3;
EOF

sqlplus -s '/ as sysasm' << "EOF"
alter diskgroup OCR drop disk OCR_0002 rebalance power 3;
EOF

DROP DATA MEMBER

sqlplus -s '/ as sysasm' << "EOF"
alter diskgroup DATA drop disk DATA_0000 rebalance power 9;
EOF

sqlplus -s '/ as sysasm' << "EOF"
alter diskgroup DATA drop disk DATA_0001 rebalance power 9;
EOF

sqlplus -s '/ as sysasm' << "EOF"
alter diskgroup DATA drop disk DATA_0002 rebalance power 9;
EOF

查看rebalance情况与asm日志

$ asmcmd -p lsop

$ sqlplus / as sysasm

SQL> select * from gv$asm_operation;

$ tail -f path-to-asm-diag/alert.log

检查数据库和asm状态

$ crsctl status resource -t

$ asmcmd lsdg

$ sqlplus as sysasm

SQL> set linesize 300
column path format a50
column NAME format a15;
select GROUP_NUMBER,DISK_NUMBER,HEADER_STATUS,MODE_STATUS,MOUNT_STATUS,STATE,total_mb,free_mb,NAME,PATH from v$asm_disk;

确认无误之后,执行下一步.

依次回收该RAC数据库虚拟机上的磁盘

先验证一个磁盘回收, 如无异常, 回收所有旧存储的磁盘.

最后建议是重启验证一下, 如果可能的话.

风险说明

本操作为oracle asm磁盘rebalance技术的实现, 理论上没有风险.

但仍然针对相关场景进行说明, 如下:

  1. 如果asm磁盘添加失败, 则asm磁盘组不会有任何影响.
  2. 如果asm磁盘添加成功, 则asm磁盘组会新增对应的成员盘, 数据同步过程中性能受到一定影响.
  3. 如果drop 旧存储的asm磁盘失败, 则旧的asm磁盘仍然存在asm磁盘组之中, ASM磁盘数据不会受到影响.
  4. 如果drop 旧存储的asm磁盘成功, 则旧的asm磁盘将从asm磁盘组中删除, 数据将自动同步至所有其它磁盘(包括旧存储和新存储磁盘),不会影响数据库运行.
  5. 所有旧存储中的asm磁盘drop完成, 数据全部平衡至新的asm磁盘中, 数据同步过程中性能受到一定影响.
  6. Oracle 软件版本bug等其它因素, 数据库异常,

    这种情况发生概率极低(PS:11.2.0.4虚拟机RAC环境中目前未遇到此类问题) 假设有异常, 则考虑启用容灾数据库. 同时执行数据库环境恢复操作.

回退说明

除非Oracle软件或RHEL/CentOS Linux系统bug, asm磁盘组添加和删除磁盘成员的操作, 无论成功或失败, 都将自动完成, 不存在回退.

References

https://docs.oracle.com/cd/E29505_01/server.1111/e10897/asm.htm

work/yuexiu-finance_lszldbRAC-Migrate (last edited 2023-12-30 05:09:49 by localhost)