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 = DSC0MAL_HOST = 192.168.153.11MAL_PORT = 11246MAL_INST_HOST = 192.168.204.11MAL_INST_PORT = 5237MAL_DW_PORT = 11296
MAL_INST_DW_PORT = 11306
[MAL_INST1]MAL_INST_NAME = DSC1MAL_HOST = 192.168.153.12MAL_PORT = 11246MAL_INST_HOST = 192.168.204.12MAL_INST_PORT = 5237MAL_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_DW2MAL_HOST = 192.168.153.14MAL_PORT = 11246MAL_INST_HOST = 192.168.204.14MAL_INST_PORT = 5237MAL_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     = LOCALARCH_DEST     = +DMARCH/DSC0/archARCH_FILE_SIZE        = 1024ARCH_SPACE_LIMIT      = 40960
[ARCH_REMOTE1]ARCH_TYPE     = REMOTEARCH_DEST     = DSC1ARCH_INCOMING_PATH   =+DMARCH/DSC1/archARCH_FILE_SIZE        = 1024ARCH_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     = LOCALARCH_DEST     = +DMARCH/DSC1/archARCH_FILE_SIZE        = 1024ARCH_SPACE_LIMIT      = 40960
[ARCH_REMOTE1]ARCH_TYPE     = REMOTEARCH_DEST     = DSC0ARCH_INCOMING_PATH   =+DMARCH/DSC0/archARCH_FILE_SIZE        = 1024ARCH_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 = LOCALDW_MODE = MANUALDW_ERROR_TIME = 60INST_RECOVER_TIME = 60INST_ERROR_TIME = 35INST_INI = /dmdata/DAMENG/dm.iniINST_OGUID = 453331INST_STARTUP_CMD = /dmdbms/bin/dmserverINST_AUTO_RESTART = 0RLOG_SEND_THRESHOLD = 0RLOG_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.11MAL_HOST                    = 192.168.153.33MAL_PORT                    = 11266
[MAL_INST2]MAL_INST_NAME              = ASM1MAL_HOST                    = 192.168.153.12MAL_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中导出修改再导入,集群状态方可正常。

DSC+异步备机测试相关推荐

  1. Mysql备机复制到主机_mysql主从复制的实现

    唱宇 2010-10-13 北京 最近测试了mysql主从复制的实现,现在记录一下:因为网上有些文章的mysql版本较老,有些参数已经不适合了. 确保 Master 与 Slave 之间的数据一致 [ ...

  2. BESR备机恢复主机

    最近实施了一个桌面安全管理系统的项目其中使用的恢复备份软件为SYMANTEC BESR这款产品,主机不停机备份,通过远程恢复备机,非常方便,记录一下重点应当注意的几个地方. 首先恢复时候应当使用sym ...

  3. 联想ThinkServer RS260服务器静音降噪改造及CentOS拷机测试

    联想ThinkServer RS260是1u超薄,体积比较小:服务器原有的侧吹风扇属于增压暴力风扇,噪音巨大,导致服务器在家用环境下难以使用: 本次拷机的主要目的是,在对散热配置进行了静音降噪的改造后 ...

  4. 利用两台虚拟机搭建Nginx高可用集群、宕机测试、宕机恢复

    这里写目录标题 一.准备阶段: 二.安装阶段: 1.安装pcre及其依赖 2.安装ngnix 3.安装keepalived 三.配置阶段: 四.启动阶段: 1.集群测试 2. 宕机测试 一.准备阶段: ...

  5. MacOs平台下 Vs2022 for Mac、Xamarin、IOS Android 双平台证书申请、开发环境配置、实机测试、内部分发B(贝塔)测试、 App store发布 超详细(多图)全程笔记

    本文超长,含盖从前期准备到发布的全程细节,多图杀猫-- 这些天,研究使用Visual studio for macos做ios和android双平台开发.遇到最大的坑就是apple开发各种证书.真机测 ...

  6. iOS 11开发教程(十)iOS11无线连接手机真机测试

    iOS 11开发教程(十)iOS11无线连接手机真机测试 在Xcode 9.0中,已经可以通过无线连接手机进行真机测试了.具体的操作步骤如下: (1)首先需要使用数据线将手机连接到苹果电脑上. (2) ...

  7. iOS 11开发教程(九)iOS11数据线连接真机测试

    iOS 11开发教程(九)iOS11数据线连接真机测试 在Xcode 7.0之后,苹果公司在开发许可权限上做了很多的改变,在测试App方面取消了一些限制.在Xcode7.0之前的版本,苹果公司只向注册 ...

  8. Xamarin.iOS真机测试报错

    Xamarin.iOS真机测试报错 错误信息:The MinimumOSVersion inside Info.plist does not include the device version(er ...

  9. Xamarin Android真机测试报错

    Xamarin Android真机测试报错 Xamarin Android真机测试报错,错误信息为INSTALL_CANCELLED_BY_USER.出现这个错误,通常都是真机上开发者选项设置错误.由 ...

最新文章

  1. GDB 命令参考手册
  2. homebrew常用指令
  3. malloc动态分配多维数组
  4. 项目文档管理的一些想法
  5. 黑洞内外,时空弯曲的漩涡
  6. 网络通信tcp与udp的区别
  7. 解析Java对象的equals()和hashCode()的使用
  8. c语言结构体多次调用错误,C语言在使用中遇到了一个结构体赋值失败的问题?...
  9. python网易云歌词爬虫_用python爬取网易云音乐歌曲的歌词
  10. 20130419阿里电话面试记录
  11. 大学四年,工作2年我总结了后端面试的所有知识点(持续更新)
  12. 如何免费在线听周杰伦的歌曲
  13. 月薪3千与3万文案的区别!一字千金就体现在细微之处
  14. 什么是CDN,CDN有什么作用?
  15. 《算法导论》学习(十七)----动态规划之钢条切割(C语言)
  16. 串口配置c语言,C语言驱动之配置串口(基于S3C2440开发板)
  17. WS小世界网络构建实验(Matlab版)
  18. 关于halcon基于表面的3d识别定位
  19. 论文笔记 Inference in Deep Gaussian Processes using Stochastic Gradient Hamiltonia使用随机梯度哈密顿量蒙特卡罗推理深度高斯过程
  20. 清华大学开源OpenKE:知识表示学习平台

热门文章

  1. JavaScript学习笔记(1)--面向半新不新的新手
  2. fastdfs应用场景
  3. 符合泊松分布的事件模拟到达时间生成
  4. 面了个阿里拿36K出来的,真是砂纸擦屁股,给我漏了一手
  5. iClient for Leaflet加载MVT矢量瓦片并注册鼠标事件
  6. Matisse——Android 图片/视频选择器
  7. 浅谈区块链数字货币发展现状
  8. 方法:如何解决用MFC实现的ping功能中把目标主机不可到达的当成ping通的问题...
  9. Android之父Andy Rubin
  10. 《阅读的方法》读书笔记1:强劲的大脑