1集群原始情况
1.1环境说明
主机名 | 主备状态 | 内网 | 外网 | 数据库目录 | 实例名 | 端口号 |
---|---|---|---|---|---|---|
db0 | 主库 | 192.168.153.11 | 192.168.204.11 | /dmdbms | DSC0 | 5237 |
db1 | 主库 | 192.168.153.12 | 192.168.204.12 | /dmdbms | DSC1 | 5237 |
db2 | 备库 | 192.168.153.13 | 192.168.204.13 | /dmdbms | DSC_DW | 5237 |
1.2DSC监控
监视器文件dmcssm.ini配置在主机db0数据库bin目录下。
[dmdba@db0 ~]$ cd /dmdbms/bin
[dmdba@db0 bin]$ ./dmcssm dmcssm.ini
show
1.3主备监控
监视器文件dmmonitor.ini配置在主机db2数据库bin目录下。
[dmdba@db2 ~]$ cd /dmdbms/bin
[dmdba@db2 bin]$ ./dmmonitor dmmonitor.ini
show
2测试1-重搭备机
准备新的异步备机,将DSC集群重新备份还原后,首先启动DSC即主库的CSS、ASM、DSC、DW服务,然后再进行新异步备机的配置,最后观察新异步备机是否可以加入集群。
2.1备机db2作为主备集群监视器
2.1.1备机db2关闭守护进程
[dmdba@db2 bin]$ ./DmWatcherService stop
2.1.2目前守护集群状态
[dmdba@db2 bin]$ ./dmmonitor dmmonitor.ini
show
2.2准备新异步备机
2.2.1备机db3环境说明
主机名 | 主备状态 | 内网 | 外网 | 数据库目录 | 实例名 | 端口号 |
---|---|---|---|---|---|---|
db3 | 备库 | 192.168.153.14 | 192.168.204.14 | /dmdbms | DSC_DW2 | 5237 |
2.2.2安装DM8
安装过程略,初始化参数需与DSC集群保持一致。
[dmdba@db3 bin]$ ./dminit path=/dmdata db_name=DAMENG instance_name=DSC_DW2 port_num=5237 mal_port=11246
2.2.3数据库实例后台脚本
准备后台服务,方便后续操作。DmService存放在数据库bin目录下的service_template里,将其拷贝到bin目录下再进行路径修改即可。
[dmdba@db3 bin]$ cp /dmdbms/bin/service_template/DmService /dmdbms/bin
[dmdba@db3 bin]$ vi /dmdbms/bin/DmService
##将DM_HOME修改成/dmdbms/;将INI_PATH修改成/dmdata/DAMENG/dm.ini
2.3DSC重新备份还原
2.3.1DSC数据库服务关闭
DSC0节点:./DmService stop
DSC1节点:./DmService stop
2.3.2DMDSC集群做备份
在数据库服务关闭后,使用dmrman工具对DMDSC集群做备份,在其中一个节点执行即可。备份前注意开启DmAP服务。
–备份
[dmdba@db0 bin]$ ./DmAPService start
[dmdba@db0 bin]$ ./dmrman use_ap=2 dcr_ini=/dmdbms/config/dmdcr.ini
RMAN> BACKUP DATABASE '/dmdbms/dmdata/dsc0_config/dm.ini' FULL BACKUPSET '/backup/db_full_bak_for_DSC01'
–备份检验
RMAN> check BACKUPSET '/backup/db_full_bak_for_DSC01'
–把备份拷贝到异步备机db3上
[dmdba@db0 bin]$ scp -r -p 22 /backup/db_full_bak_for_DSC01 192.168.204.14:/dmbak
2.3.3异步备机db3进行脱机还原
1)关闭数据库服务,开启DmAP服务:
[dmdba@db3 bin]$ ./DmService stop
[dmdba@db3 bin]$ ./DmAPService start
2)脱机还原:
–开启dmrman
[dmdba@db3 bin]$ ./dmrman USE_AP=2
–使用 DMDSC 库的备份集还原恢复到异步备库
RMAN> RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/db_full_bak_for_DSC01';
RMAN>RECOVER DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmbak/db_full_bak_for_DSC01';
RMAN>RECOVER DATABASE '/dmdata/DAMENG/dm.ini' update db_magic;
2.4启动主库的服务(css、asm、dsc、dw)
由于上述步骤集群只关闭DmService,因此现在只开启DmService,再去查看集群状态。
2.4.1开启主库DSC
[dmdba@db0 bin]$ ./DmService start
[dmdba@db1 bin]$ ./DmService start
2.4.2DSC集群状态
进到数据库bin目录下:
[dmdba@db0 bin]$ ./dmcssm dmcssm.ini
show
2.4.3守护集群状态
进到数据库bin目录下:
[dmdba@db2 bin]$ ./dmmonitor dmmonitor.ini
show
2.5配置异步备库
2.5.1配置dm.ini
DSC0/DSC1在原有基础上不做修改;
INSTANCE_NAME = DSC_DW2
PORT_NUM = 5237 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
TIMER_INI = 1
2.5.2配置dmmal.ini
在 DMDSC 集群的 dmmal.ini 文件基础上,增加备库 DSC_DW2 的配置项,将原DSC_DW 的配置项注释。所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例dm.ini 中指定的 CONFIG_PATH 目录下。
1)dmmal.ini内容如下:
[dmdba@db0 bin]$ cat /dmdbms/dmdata/dsc0_config/dmmal.ini
MAL_CHECK_INTERVAL = 30
MAL_CONN_FAIL_INTERVAL = 10
[MAL_INST0]
MAL_INST_NAME = DSC0
MAL_HOST = 192.168.153.11
MAL_PORT = 11246
MAL_INST_HOST = 192.168.204.11
MAL_INST_PORT = 5237
MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306
[MAL_INST1]
MAL_INST_NAME = DSC1
MAL_HOST = 192.168.153.12
MAL_PORT = 11246
MAL_INST_HOST = 192.168.204.12
MAL_INST_PORT = 5237
MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306
#[MAL_INST2]
#MAL_INST_NAME = DSC_DW
#MAL_HOST = 192.168.153.13
#MAL_PORT = 11246
#MAL_INST_HOST = 192.168.204.13
#MAL_INST_PORT = 5237
#MAL_DW_PORT = 11296
#MAL_INST_DW_PORT = 11306
[MAL_INST2]
MAL_INST_NAME = DSC_DW2
MAL_HOST = 192.168.153.14
MAL_PORT = 11246
MAL_INST_HOST = 192.168.204.14
MAL_INST_PORT = 5237
MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306
2)拷贝到各节点:
[dmdba@db0 bin]$ scp /dmdbms/dmdata/dsc0_config/dmmal.ini 192.168.204.12:/dmdbms/dmdata/dsc1_config/
[dmdba@db0 bin]$ scp /dmdbms/dmdata/dsc0_config/dmmal.ini 192.168.204.14:/dmdata/DAMENG/
2.5.3配置dmarch.ini
配置DSC_DW2的同时再次编辑各个DSC节点的dmarch.ini,将文件中[ARCHIVE_ASYNC]部分的ARCH_DEST = DSC_DW注释,增加ARCH_DEST = DSC_DW2;
1)DSC0节点
[dmdba@db0 bin]$ cat /dmdbms/dmdata/dsc0_config/dmarch.ini
ARCH_LOCAL_SHARE=1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/DSC0/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMARCH/DSC1/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC
#ARCH_DEST = DSC_DW
ARCH_DEST = DSC_DW2
ARCH_TIMER_NAME = RT_TIMER
2)DSC1节点
[dmdba@db1 bin]$ cat /dmdbms/dmdata/dsc1_config/dmarch.ini
ARCH_LOCAL_SHARE=1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/DSC1/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMARCH/DSC0/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 40960
[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC
#ARCH_DEST = DSC_DW
ARCH_DEST = DSC_DW2
ARCH_TIMER_NAME = RT_TIMER
3)DSC_DW2节点
[dmdba@db3 bin]$ cat /dmdata/DAMENG/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
2.5.4配置dmwatcher.ini
DSC0/DSC1在原有基础上不做修改;
[dmdba@db3 bin]$ cat /dmdata/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = LOCAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dmdata/DAMENG/dm.ini
INST_OGUID = 453331
INST_STARTUP_CMD = /dmdbms/bin/dmserver
INST_AUTO_RESTART = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
2.5.5配置dmmonitor.ini
由于把原备机db2作为监视机器,故将db2中的dmmonitor.ini中的IP替换即可;
[dmdba@db2 bin]$ cat dmmonitor.ini
MON_LOG_PATH = /dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0
[GRP1]
MON_INST_OGUID = 453331
#MON_DW_IP = 192.168.153.11:11296/192.168.153.12:11296
MON_DW_IP = 192.168.153.33:11296/192.168.153.12:11296
MON_DW_IP = 192.168.153.14:11296
#MON_DW_IP = 192.168.153.13:11296
2.6启动异步备库
修改DmService后台启动脚本,以mount状态启动
[dmdba@db3 bin]$ vi DmService
把START_MODE=open改为START_MODE=mount
启动异步备库库数据库服务
[dmdba@db3 bin]$ ./DmService start
2.7设置OGUID/主备模式
DMDSC 集群不做修改;
disql 连接异步备库,设置备库 OGUID、设置备库Standby 模式。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>SP_SET_OGUID(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SQL> ALTER DATABASE STANDBY;
(此图在4.1补充部分有详解)
2.8启动守护进程
2.8.1修改守护进程后台启动脚本
在节点的目录/dmdbms/bin/service_template拷贝DmWatcherService文件到/ dmdbms/bin目录下,然后修改DmWatcherService中 INI_PATH为指定守护进程配置文件dmwatcher.ini的对应的路径。–/dmdata/DAMENG/dmwatcher.ini
2.8.2启动守护进程
[dmdba@db3 bin]$ ./DmWatcherService start
2.8.3确认数据库状态
DSC0:
DSC1:
DSC_DW2:
2.9集群状态
2.9.1DSC集群
[dmdba@db0 bin]$ ./dmcssm dmcssm.ini
show
2.9.2守护集群
[dmdba@db2 bin]$ ./dmmonitor dmmonitor.ini
show
2.10结论
在原有DSC集群的基础上搭建新的异步备机,新异步备机可以加入集群中。
3测试2-替换IP
DSC集群中主库IP做改变(本次测试将DSC0主库IP做替换),修改异步备机及涉及主库原IP的配置文件,最后查看集群状态是否正常。
3.1还原集群状态
不知测试1结果是否影响测试2,故保险起见将集群状态还原回原始状态。
3.1.1过程
1)关闭集群
DSC0:
DSC1:
DSC_DW2:
2)修改配置文件
将测试1中涉及DSC集群的配置以及dmmonitor.ini修改回来。
①dmmal.ini:
在DSC0节点中将DSC_DW2的配置项注释,还原DSC_DW,修改完后拷贝到DSC1节点。
②dmarch.ini:
DSC0/DSC1节点分别将文件中[ARCHIVE_ASYNC]部分的ARCH_DEST = DSC_DW2注释,还原ARCH_DEST = DSC_DW。
③dmmonitor.ini:
修改备机db2中的dmmonitor.ini。
3.1.2集群状态
按正确顺序启动DMDSC+数据守护集群,查看其状态。
1)启动集群
[dmdba@db0 bin]$ ./DmCSSService start
[dmdba@db1 bin]$ ./DmCSSService start
[dmdba@db0 bin]$ ./DmASMSvrService start
[dmdba@db1 bin]$ ./DmASMSvrService start
[dmdba@db0 bin]$ ./DmService start
[dmdba@db1 bin]$ ./DmService start
[dmdba@db2 bin]$ ./DmService start
[dmdba@db0 bin]$ ./DmWatcherService start
[dmdba@db1 bin]$ ./DmWatcherService start
[dmdba@db2 bin]$ ./DmWatcherService start
2)确认数据库状态
DSC0:
DSC1:
DSC_DW:
3)DSC集群状态
[dmdba@db0 bin]$ ./dmcssm dmcssm.ini
show
4)守护集群状态
[dmdba@db2 bin]$ ./dmmonitor dmmonitor.ini
show
3.2关闭集群
按正确顺序关闭DSC集群+守护集群。
[dmdba@db2 bin]$ ./DmWatcherService stop
[dmdba@db1 bin]$ ./DmWatcherService stop
[dmdba@db0 bin]$ ./DmWatcherService stop
[dmdba@db0 bin]$ ./DmService stop
[dmdba@db1 bin]$ ./DmService stop
[dmdba@db2 bin]$ ./DmService stop
[dmdba@db0 bin]$ ./DmASMSvrService stop
[dmdba@db1 bin]$ ./DmASMSvrService stop
[dmdba@db0 bin]$ ./DmCSSService stop
[dmdba@db1 bin]$ ./DmCSSService stop
3.3修改主库DSC0的IP
修改后的IP为:192.168.153.33/192.168.204.33
3.4修改配置文件
将涉及到主库DSC0原IP 192.168.204.11/192.168.153.11的配置文件进行修改。
3.4.1DSC集群文件dmdcr_cfg.ini
dmdcr_cfg.ini文件需从ASM中导出来。
1)导出dmdcr_cfg.ini
[dmdba@db0 bin]$ ./dmasmcmd
ASM>export dcrdisk '/dev/asm-dmdcr' to /dmdbms/dmdcr_cfg.ini
2)修改dmdcr_cfg.ini
部分内容截图:
3)导入dmdcr_cfg.ini
[dmdba@db0 bin]$ ./dmasmcmd
ASM>import dcrdisk '/dmdbms/dmdcr_cfg.ini' to '/dev/asm-dmdcr'
3.4.2DSC集群文件dmasvrmal.ini
DSC0:
[dmdba@db0 bin]$ cat /dmdbms/config/dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM0
#MAL_HOST = 192.168.153.11
MAL_HOST = 192.168.153.33
MAL_PORT = 11266
[MAL_INST2]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.153.12
MAL_PORT = 11266
因两节点dmasvrmal.ini内容一致,故将其传到DSC1节点:
[dmdba@db0 bin]$ scp /dmdbms/config/dmasvrmal.ini 192.168.204.12:/dmdbms/config/
3.4.3DSC集群文件dmcssm.ini
DSC0:
监视器配置在DSC0数据库bin目录下;
[dmdba@db0 bin]$ cat dmcssm.ini
CSSM_OGUID = 63635
#CSSM_CSS_IP = 192.168.153.11:11286
CSSM_CSS_IP = 192.168.153.33:11286
CSSM_CSS_IP = 192.168.153.12:11286
CSSM_LOG_PATH = ../log
CSSM_LOG_FILE_SIZE = 32
CSSM_LOG_SPACE_LIMIT = 0
3.4.4守护集群文件dmmal.ini
所有节点实例的 dmmal.ini 文件内容是一致的,配置完成后,拷贝到每个节点实例
dm.ini 中指定的 CONFIG_PATH 目录下。
DSC0(部分文件内容截图):
拷贝到各个节点:
3.4.5守护集群文件dmmonitor.ini
监视器配置在db2数据库bin目录下;
3.5启动集群
3.5.1按正确顺序启动DSC集群+守护集群
3.5.2确认数据库状态
DSC0:
DSC1:
DSC_DW:
3.6集群状态
3.6.1DSC集群
[dmdba@db0 bin]$ ./dmcssm dmcssm.ini
show
3.6.2守护集群
[dmdba@db2 bin]$ ./dmmonitor dmmonitor.ini
show
3.7结论
在DSC集群中替换主库IP后,修改相关配置文件,集群状态是正常的。
4补充
4.1测试1中的2.7设置OGUID/主备模式部分
1)db3处于主库配置状态----因为dsc集群备份时为主库配置状态,故异步备机还原后同为此状态;
2)解读报错提示:[-720]:守护进程处于活动状态,或当前配置(ALTER_MODE_STATUS)不允许该操作.
此次报错是因为当前ALTER_MODE_STATUS值为0,表示不可通过sql语句修改数据库模式和状态。
还有一种可能是守护进程处于活动状态(测试到此步骤db3还未开启守护进程,故不涉及),解决方法:先将与此主备集群相关的所有watcher、monitor关闭,执行SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);再执行其他相关操作。
3)ALTER_MODE_STATUS是否允许数据库用户通过sql修改数据库模式和状态,1:是,0:否 当ALTER_MODE_STATUS=1时,可通过SQL语句切换数据库模式,不影响集群。
4.2dmdcr_cfg.ini作用
dmdcr_cfg.ini 是格式化 DCR 和 Voting Disk 的配置文件。配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息。
使用 dmasmcmd 工具,可以根据 dmdcr_cfg.ini 配置文件,格式化 DCR 和 Voting Disk。
由上述可知,3.4.1中的dmdcr_cfg.ini需通过dmasmcmd 工具从ASM中导出修改再导入,集群状态方可正常。