越秀资本2023年基础设施采购项目lszldb RAC虚拟机数据库存储迁移方案
明确lszldb RAC虚拟机数据库存储迁移需求
- 将现有的EMC Unity400存储替换为UnityXT480存储(采用RDM磁盘)
- 采用asm rebalance技术进行在线迁移。
准备工作
如无特别说明, 默认使用grid用户执行.
grid用户执行标示为 $
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磁盘
- 在存储中划分对应的LUN同时分配给lszldb RAC虚拟机数据库所在的物理服务器.
- 分配RDM设备至对应的虚拟机.
参考现有RDM磁盘配置和VMware DOC
查看并确认新挂载的磁盘状态
$ lsblk
Login in as root user
- 可结合dmesg命令输出确认新增加的磁盘信息
# dmesg
- 列出所有磁盘WWID/disk.UUID
# 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)}
- 在udev文件中增加新存储的磁盘信息.
# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
使udev规则生效
# udevadm control --reload-rules
- RHEL/CentOS6
# udevadm trigger --type=devices --action=change
- 确认asm_disk
$ 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数据库存储迁移步骤
备份相关数据
- 执行备份
- 备份归档
执行备份
使用nbu或备份软件执行全备或增备.
备份归档
建议手动再备份一下asm磁盘组中的归档日志至本地.
创建本地备份目录, 确保该目录空间足够.
# mkdir /backup/$(date +%F)
# chown grid:oinstall /backup/$(date +%F)
- ASM copy archivelog FROM ASM to LOCAL
$ 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技术的实现, 理论上没有风险.
但仍然针对相关场景进行说明, 如下:
- 如果asm磁盘添加失败, 则asm磁盘组不会有任何影响.
- 如果asm磁盘添加成功, 则asm磁盘组会新增对应的成员盘, 数据同步过程中性能受到一定影响.
- 如果drop 旧存储的asm磁盘失败, 则旧的asm磁盘仍然存在asm磁盘组之中, ASM磁盘数据不会受到影响.
- 如果drop 旧存储的asm磁盘成功, 则旧的asm磁盘将从asm磁盘组中删除, 数据将自动同步至所有其它磁盘(包括旧存储和新存储磁盘),不会影响数据库运行.
- 所有旧存储中的asm磁盘drop完成, 数据全部平衡至新的asm磁盘中, 数据同步过程中性能受到一定影响.
- 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
