集群搭建关键步骤描述,
一、集群的搭建需要在dmdba用户下进行;
二、主备机两台服务器环境需要保持一致;
三、主机安装完数据库服务程序之后,记得启动一次数据库服务,待启动完成之后,立即停止主机数据库服务,并对主机做全库备机。将备份文件拷贝到备机进行备机还原,根据还原三步曲进行相关操作;
四、配置主机的dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini等文件。配置完成之后,通过./dmserver /dm8/data/DAMENG/dm.ini mount方式启动服务,注意一定要通过mount方式启动。并修改节点模式为primary; 同时设置ogudi值;
五、配置配备机的dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini等文件。配置完成之后,通过./dmserver /dm8/data/DAMENG/dm.ini mount方式启动服务,注意一定要通过mount方式启动。并修改节点模式为standby; 同时设置ogudi值;
六、根据配置文件配置监视器。监视器最好放在第三台机器上。
注意主机和备机的INST_OGUID值必须相同,组名必须相同,各服务端口不能重复,除了PORT_NUM端口之外。
初始化主备库(主备库初始化参数保持一致)
主库IP:192.168.100.101 (内部通信与对外提供服务采用同一个IP,在生产环境需要双网卡,保证内部通信与对外提供服务的稳定)
备库IP:192.168.100.102
文件dmdata dmarch dmbak不存在,需要自己手动创建文件,需注意文件属组必须是dmdba。
初始化主库(指定实例路径,其余参数采用默认)
[dmdba@localhost bin]$ ./dminit path=/DM/dmdata
初始化备库(指定实例路径,其余参数采用默认)
[dmdba@localhost bin]$ ./dminit path=/DM/dmdata
主备库前台启停一次数据库服务
[dmdba@localhost bin]$ ./dmserver /DM/dmdata/DAMENG/dm.ini
启动成功后,输入exit停服务
同步主备库数据保持一致
主库脱机备份 (如果备份失败可以查看dmap服务是否启动 ps -ef|grep dmap 启动dmap命令./DmAPService start)
[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> backup database '/DM/dmdata/DAMENG/dm.ini' full backupset '/DM/dmbak/db_fullback';
传输备份文件到备库
[dmdba@localhost dmbak]$ scp -r /DM/dmbak/db_fullback [email protected]:/DM/dmbak
备库还原恢复更新magic值
备份还原 (如果还原失败确认一下是否备份,还原都使用的是dmdba用户)
[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN> RESTORE DATABASE '/DM/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/DM/dmbak/db_fullback';
备份恢复
RMAN> RECOVER DATABASE '/DM/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/DM/dmbak/db_fullback';
更新magic值
RMAN> RECOVER DATABASE '/DM/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;
配置主备集群ini文件
主库
修改主库dm.ini配置文件
[dmdba@localhost DM]$ cd /DM/dmdata/DAMENG/
[dmdba@localhost DAMENG]$ vi dm.ini
vi dm.ini
INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64 #统计最近64次日志发送消息
配置dmmal.ini内部通信配置文件
vi dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.100.101 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.100.101 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口 (监视器连接端口)
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.100.102
MAL_PORT = 61142
MAL_INST_HOST = 192.168.100.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
配置dmarch.ini归档配置文件
注:备库需要修改ARCH_DEST为GRP1_RT_01。
配置本地归档和实时归档。当前实例 GRP1_RT_01 是主库,需要向 GRP1_RT_02(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_02。
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名(备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /DM/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值 (建议不小于2G)
ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~4294967294M
配置dmwatcher.ini守护配置文件
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式 如果是非确认监视器配置手动切换 MANUAL
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /DM/dmdata/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /DM/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
备库
修改备库dm.ini配置文件
[dmdba@localhost DM]$ cd /DM/dmdata/DAMENG/
[dmdba@localhost DAMENG]$ vi dm.ini
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64 #统计最近64次日志发送消息
dmmal.ini (与主机保持一致)
dmwatcher.ini 同主
配置备库dmarch.ini归档配置文件
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP!_RT_01 #实时归档目标实例名(主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /DM/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 20480 #单位 Mb,0 表示无限制,范围 1024~4294967294M
主备库mount启动,设置数据库状态
主库 (如果./disql连接失败报错:socket连接失败,可以指定端口号登录./disql SYSDBA/SYSDBA:5236 )
cd /DM/dmdbms/bin
./dmserver /DM/dmdata/DAMENG/dm.ini mount #前台mount方式启动数据库
./disql SYSDBA/SYSDBA #disql命令行登录数据库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database primary; #配置为主库状态
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
配置完成后exit退出,再次登录确定数据库是否处于主库状态
备库
cd /DM/dmdbms/bin
./dmserver /DM/dmdata/DAMENG/dm.ini mount #数据库mount方式前台启动
./disql SYSDBA/SYSDBA
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby; #配置为备库状态
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
再次登录,确定是否处于备库状态
主备库前台启动数据库守护
主库
./dmwatcher /DM/dmdata/DAMENG/dmwatcher.ini
备库
./dmwatcher /DM/dmdata/DAMENG/dmwatcher.ini
配置监视器 (IP:192.168.100.103)
配置非确认,确认监视器配置文件
非确认监视器
vi dmmonitor_manual.ini
MON_DW_CONFIRM = 0 #确认监视器模式( 0非确认监视器)
MON_LOG_PATH = /DM/dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.100.101:52141
MON_DW_IP = 192.168.100.102:52142
确认监视器
vi dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式( 0非确认监视器)
MON_LOG_PATH = /DM/dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP1 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.100.101:52141
MON_DW_IP = 192.168.100.102:52142
前台启动非确认监视器,查看主备集群是否正常 (如果启动非确认监视器没有收到主备库信息,在主备集群服务守护正常启动,配置文件都正确的情况下,可以检查一下是否是防火墙没有关闭)
[dmdba@localhost bin]$ ./dmmonitor /DM/dmdata/dmmonitor/dmmonitor_manual.ini
非监视器显示只收到了主库信息,未收到备库信息
检查发现是防火墙未关闭,关闭防火墙
show命令 tip 命令查看集群状态
exit命令退出非确认监视器
注册后台启动服务(root用户执行)
主库
注册数据库后台启动服务
[root@localhost ~]# cd /DM/dmdbms/script/root/
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /DM/dmdata/DAMENG/dm.ini -p GRP1_RT_01 -m mount #注册后台mount启动数据库
注册数据库后台启动数据库守护服务
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /DM/dmdata/DAMENG/dmwatcher.ini -p GRP1_RT_01
备库
备库注册后台启动数据库服务,数据库守护服务
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /DM/dmdata/DAMENG/dm.ini -p GRP1_RT_02 -m mount
[root@localhost root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /DM/dmdata/DAMENG/dmwatcher.ini -p GRP1_RT_02
监视器
确认监视器注册后台启动服务
[root@localhost root]# ./dm_service_installer.sh -t dmmonitor -monitor_ini /DM/dmdata/dmmonitor/dmmonitor.ini -p GRP1 #指定确认监视器的ini文件
后台启动整个集群服务
启动关闭集群的顺序
启动
主库服务->备库服务->主库守护->备库守护->监视器
关闭
监视器->备库守护->主库守护->主库服务->备库服务
[dmdba@localhost bin]$ ./DmServiceGRP1_RT_01 start #启动主库服务
[dmdba@localhost bin]$ ./DmServiceGRP1_RT_02 start #启动备库服务
[dmdba@localhost bin]$ ./DmWatcherServiceGRP1_RT_01 start #启动主库守护
[dmdba@localhost bin]$ ./DmWatcherServiceGRP1_RT_02 start #启动备库守护
[dmdba@localhost bin]$ ./DmMonitorServiceGRP1 start #启动监视器