注册
主备集群搭建方案
培训园地/ 文章详情 /

主备集群搭建方案

小辉辉 2022/11/23 1481 0 0

第一章硬件和操作系统规划和环境说明

1.1 硬件和操作系统规划

本实验采用3台X86平台虚拟机,操作系统使用centoS7.6 64位操作系统。

1.2 环境的说明

1.配置规划
1.png
2.端口规划
11.png

第二章 数据库安装和初始化实例

2.1数据库的安装

数据库安装和初始化跟单机版安装和初始化一样的操作,这里省略操作说明,具体可以参考以下附件,主从数据库需要创建实例,监视器只要安装数据库就可以,不需要创建实例,主备集群方案需要3台服务器,一台主库,一台备库,一台监视器。

2.2主备库初始化实例操作(单机版安装也有操作步骤)

主库:
命令行创建实例:
./dminit path=/data/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAVE INSTANCE_NAME=DAVE1 PORT_NUM=32141
在root用户下注册服务
[root@DM-S1 ~]# cd /opt/dmdbms/script/root/
[root@DM-S1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DAVE/dm.ini -p DAVE1
对于新初始化的库,首次启动不允许使用 Mount 方式,需要先正常启动并正常 退出,然后才允许Mount方式启动。
systemctl enable DmServiceDAVE1.service
systemctl start DmServiceDAVE1.service
systemctl stop DmServiceDAVE1.service
备库:
./dminit path=/data/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAVE INSTANCE_NAME=DAVE2 PORT_NUM=32142
在root用户下注册服务
[root@DM-S1 ~]# cd /opt/dmdbms/script/root/
[root@DM-S1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /data/dmdata/DAVE/dm.ini -p DAVE1
对于新初始化的库,首次启动不允许使用 Mount 方式,需要先正常启动并正常 退出,然后才允许 Mount 方式启动。
systemctl enable DmServiceDAVE2.service
systemctl start DmServiceDAVE2.service
systemctl stop DmServiceDAVE2.service

第三章 数据库的备份和还原

数据的备份和还原有2种方式,脱机备份和联机备份

3.1脱机备份

3.1.1正常关闭主机数据库

systemctl stop DmServiceDAVE1.service

3.1.2 脱机做备份

切换到dmdba用户
Su - dmdba
[dmdba@DM-P bin]$ cd $DM_HOME/bin
[dmdba@DM-P bin]$ ./dmrman CTLSTMT=“BACKUP DATABASE ‘/data/dmdata/DAVE/dm.ini’ FULL TO BACKUP_FILE1 BACKUPSET ‘/data/bak/BACKUP_FILE_01’”

3.1.3把备份集拷贝到备库

备库操作:
su - dmdba
[dmdba@DM-S1 bak]$ mkdir BACKUP_FILE_01
主库操作:
[dmdba@DM-P bak]$ cd BACKUP_FILE_01/
[dmdba@DM-P BACKUP_FILE_01]$ scp * 172.17.188.12:/data/bak/BACKUP_FILE_01/

3.1.4备库使用备份集还原数据库

[dmdba@DM-P BACKUP_FILE_01]$ cd $DM_HOME/bin
[dmdba@DM-P bin]$ ./dmrman CTLSTMT=“RESTORE DATABASE ‘/data/dmdata/DAVE/dm.ini’ FROM BACKUPSET ‘/data/bak/BACKUP_FILE_01’”
[dmdba@DM-P bin]$ ./dmrman CTLSTMT=“RECOVER DATABASE ‘/data/dmdata/DAVE/dm.ini’ FROM BACKUPSET ‘/data/bak/BACKUP_FILE_01’” --如果是首次初始化,这边可以省略
[dmdba@DM-P bin]$ ./dmrman CTLSTMT=“RECOVER DATABASE ‘/data/dmdata/DAVE/dm.ini’ UPDATE DB_MAGIC”

3.2联机备份

Disql SYSDBA/SYSDBA:32141
sql>BACKUP DATABASE BACKUPSET ‘/data/bak/BACKUP_FILE_01’;
后面恢复操作跟脱机恢复相同

第四章配置主备库和数据库到mount状态

4.1 配置主库

(默认只有dm.ini文件,没开归档dmarch.ini没有,如果是归档模式,dmarch.ini文件也有。默认dmmal.ini和dmwatcher.ini配置文件是没有的,一般建议创建配置文件默认跟dm.ini文件放到同一目录)

4.1.1 配置dm.ini

INSTANCE_NAME = DAVE1
PORT_NUM = 32141 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

4.1.2 配置dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DAVE1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.190.11 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.17.188.11 #实例的对外服务 IP 地址
MAL_INST_PORT = 32141 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME =DAVE2
MAL_HOST = 192.168.190.12
MAL_PORT = 61142
MAL_INST_HOST = 172.17.188.12
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

4.1.3 配置dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /data/dmdata/DAVE/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关

4.1.4 配置dmarch.ini

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DAVE2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 256#单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M

4.1.5 启动主库到mount状态

以 mount 方式启动主库
[dmdba@DM-P DAVE]$ cd /opt/dmdbms/bin
[dmdba@DM-P bin]$ ./dmserver /data/dmdata/DAVE/dm.ini mount
重新开一个命令窗口
使用diSql登录命令行客户端,执行下面Sql
[root@DM-P ~]# Su - dmdba
上一次登录:二 9月 20 09:58:38 CST 2022ptS/0 上
[dmdba@DM-P ~]$ diSql SYSDBA/SYSDBA:32141
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 primary;

4.2配置备库

4.2.1配置dm.ini

INSTANCE_NAME = DAVE2
PORT_NUM = 32142 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

4.2.2 配置dmmal.ini

配置dmmal.ini跟主库的dmmal.ini配置完全一样的。
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DAVE1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.190.11 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 172.17.188.11 #实例的对外服务 IP 地址
MAL_INST_PORT = 32141 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME =DAVE2
MAL_HOST = 192.168.190.12
MAL_PORT = 61142
MAL_INST_HOST = 172.17.188.12
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

4.2.3 配置dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /data/dmdata/DAVE/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关

4.2.4 配置dmarch.ini

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DAVE1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 256 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
注意:
根据备库重演 Redo 日志和响应主库时机的不同,即时归档分为两种模式:事务一致模
式和高性能模式。即时归档模式根据配置文件 dmarch.ini 中的 ARCH_WAIT_APPLY 配置 项(默认值为 0)来确定,1 表示事务一致模式,0 表示高性能模式。
ARCH_WAIT_APPLY=1
事务一致模式下,主备库之间严格维护事务一致性,但主库要等备库 Redo 日志重演完
成后,再响应用户的提交请求,事务提交时间会变长,存在一定的性能损失。高性能模式则
通过牺牲事务一致性获得更高的性能和提升系统的吞吐量。用户应该根据实际情况,选择合
适的即时归档模式

4.2.5 启动备库到mount状态

以 mount 方式启动主库
[dmdba@DM-P DAVE]$ cd /opt/dmdbms/bin
[dmdba@DM-P bin]$ ./dmserver /data/dmdata/DAVE/dm.ini mount
重新开一个命令窗口
使用diSql登录命令行客户端,执行下面Sql
[root@DM-P ~]# Su - dmdba
上一次登录:二 9月 20 09:58:38 CST 2022ptS/0 上
[dmdba@DM-P ~]$ disql SYSDBA/SYSDBA:32142
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);
把数据库修改成standby
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

第五章配置监视器和注册服务

5.1配置确认监视器

5.1.1 配置dmmonitor.ini

MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /data/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.190.11:52141
MON_DW_IP = 192.168.190.12:52142

5.1.2 启动确认监视器

有两种方式,一种是前台启动监视器,另外一种是注册服务后台启动确认监视器

5.2 配置非确认监视器

5.2.1 配置dmmonitor0.ini

MON_DW_CONFIRM = 0 #确认监视器模式
MON_LOG_PATH = /data/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.190.11:52141
MON_DW_IP = 192.168.190.12:52142

5.2.2 注册服务

1.主库注册数据守护进程
[root@DM-P root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAVE/dmwatcher.ini -p DAVE1
3.备库注册数据守护进程
[root@DM-S1 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /data/dmdata/DAVE/dmwatcher.ini -p DAVE2
4.注册确认监视器
[root@DW_M root]# ./dm_service_installer.sh -t dmmonitor -monitor_ini /data/dmdata/dmmonitor.ini -p DAVE

第六章主库备份和主备切换操作

6.1数据库备份(全备,增量备份,定时删除30天前备份)

6.1.1 数据库全库备份

① 使用客户端DM管理工具登录客户端,选择代理,作业,如下所示:
图片1.png

② 点开新建作业,输入作业名:BACK_FULL,点击作业步骤,如下图所示:
图片2.png
③ 输入步骤名称和作业名称一样,步骤类型选择备份数据库,备份路径输入前面规划好的路径/data/bak,,选择完全备份,在选择高级,如下图所示:
图片3.png

④ 选择成功是报告执行成功并结束作业和失败报告执行失败并结束作业,点击确定,然后点击作业调度,如下图所示:
图片4.png

⑤ 点击作业调度,输入调度名称,类型默认选择周,选择星期天晚上23:00分,具体时间根据用户来修改,点击确定,这样全备就做完,如下图所示:
图片6.png

6.1.2 增量备份

1.新建作业,输入作业名:BACK_INC,在点击作业步骤,如下图所示:

图片7.png
2.步骤名称输入BACK_INC,图1所示,点击添加,步骤类型选择备份数据库,如图2所示,输入相关信息,点击高级,选择成功结束作业 ,失败选择执行一下步,点击确定.
图片8.png

3.增量备份的时候,建议加上执行失败的时候执行一下全库备份,点击作业步骤,再次点击添加,输入全备的相关信息,高级选择,成功和失败结束作业,如下图所示:
图片9.png
图片11.png
4.点击作业调度,输入名称,增量备份默认勾上星期一到星期六,调度类型选择反复执行,时间选择23:00:00 ,具体根据自己要求配置,然后点击确定,如下图所示:
image.png
图片10.png
5.操作完以上步骤以后,增量备份作业就已经完成。

6.1.3 定时删除备份策略

1.新建作业,输入作业名称和步骤名称都是JOB_DEL_BAK_TIMEY,步骤类型选择sql脚本,脚本语句如下图所示,高级,成功和失败都选择执行结束作业。
CALL SF_BAKSET_BAKSET_BACKUP_DIR_ADD(‘DISK,’/data/bak’);
CALL SP_DB_BAKSET_REMOVE_BATCH(‘DISK’,NOW()-30);
图片13.png

2.调度作业,点击确定,如下图所示:
图片14.png

3.最后点击确定,就完成定时删除备份作业任务,如下图,可以到3个作业任务,
图片15.png

4.可以查询作业执行情况,点击作业右键,查看作业历史信息,如下图:
图片16.png

6.2主备切换操作

1.选择可以切换到主库的备库
choose Switchover GRP1

2.把备库切换成主库
Switchover DAVE2

3.使用SYSDBA登录监视器,输入login ,回车显示登录用户名和密码。

4.把备库切换到主库
Switchover DAVE2

6.3 主备集群关闭顺序和启动顺序

6.3.1 关闭集群顺序

1.先关闭确认监视器
systemctl stop DmMonitorServiceDAVE.service
2.关闭备库的数据守护进程
systemctl stop DmWatcherServiceDAVE2.service
3.关闭主库的数据守护进程
systemctl stop DmWatcherServiceDAVE1.service
4.关闭主数据库
./DmServiceDAVE1.service stop
5.关闭备数据库
./DmServiceDAVE2.service stop

6.3.2 启动集群顺序

1.启动主数据库
./DmServiceDAVE1.service start
2.启动备数据库
./DmServiceDAVE1.service start
3.启动主库的数据守护进程
systemctl start DmWatcherServiceDAVE1.service
4.启动备库的数据守护进程
systemctl start DmWatcherServiceDAVE2.service
5.启动确认监视器
systemctl start DmMonitorServiceDAVE.service

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服