首页 > 数据库 > 国内数据库 > 达梦数据库单实例转实时同步集群
环境说明:
主库地址:192.168.0.224 数据库名DAMENG,数据库服务名DM1 服务端口=5236
备库地址:192.168.0.226 数据库名DAMENG,数据库服务名DM2 服务端口=5236
主库已使用,目前是normal状态
1、初始化备库
# 安装软件步骤省略
cd $DM_HOME/bin
./dminit path=/dm8/data DB_NAME=DAMENG INSTANCE_NAME=DM2
# 初始化完的数据库实例需要进行一次正常的启动后才算真正的完成初始化,否则无法直接进入mount模式,exit退出关闭数据库
./dmserver /dm8/data/DAMENG/dm.ini
2、配置主备库文件,配置文件路径都在/dm8/data/DAMENG/下
2.1、配置主备库 dm.ini
cd /dm8/data/DAMENG
vi dm.ini
# 修改下面参数
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID,默认为1
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间,默认为1
MAL_INI = 1 #打开 MAL 系统,默认为0
ARCH_INI = 1 #打开归档配置
2.2、配置 dmmal.ini(主备一致)
# 配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
cd /dm8/data/DAMENG
cat << EOF >> /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.0.224 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.0.224 #实例的对外服务 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 = DM2
MAL_HOST = 172.20.90.236
MAL_PORT = 61142
MAL_INST_HOST = 172.20.90.236
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
EOF
cat dmmal.ini
2.3、配置 dmarch.ini
# 修改 dmarch.ini,配置本地归档和实时归档。
# 除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
2.3.1 主库
cat << EOF >> /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
EOF
cat dmarch.ini
2.3.2 备库
cat << EOF >> /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 1024 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~2147483647M
EOF
cat dmarch.ini
2.4、配置 dmwatcher.ini(主备一致)
# 修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。
cat << EOF >> /dm8/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 20220421 #守护系统唯一 OGUID 值
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
EOF
cat dmwatcher.ini
3、启动主备库,设置参数
5.1 主库
5.1.1 启动主库到mount模式
cd $DM_HOME/bin
./DmServiceDM1 stop
./dmserver /dm8/data/DAMENG/dm.ini
./dmserver /dm8/data/DAMENG/dm.ini mount
5.1.2 设置主库OGUID及修改数据库模式
-- 另外开启窗口,启动命令行工具 DIsql,登录主库设置 OGUID 值
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20220421);
--OGUID 的查询方式:
SELECT OGUID FROM V$INSTANCE;
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5.1.3 在5.1.1的界面关闭主备数据库
4、主库进行脱机备份(之前的备份没有用,需要修改为primary状态后的备份)
#mkdir -p /dm8/arch
mkdir -p /dm8/dm_bak
cd $DM_HOME/bin
./dmrman
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET '/dm8/dm_bak';
5、登录备库,拷贝备份文件
mkdir -p /dm8/arch
mkdir -p /dm8/dm_bak
scp -r 192.168.0.224:/dm8/dm_bak/* /dm8/dm_bak
6、执行脱机数据库还原与恢复
cd $DM_HOME/bin
./dmrman
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dm_bak';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/dm_bak';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
7、备库修改数据库模式
7.1、启动主备库到mount模式
cd $DM_HOME/bin
./dmserver /dm8/data/DAMENG/dm.ini mount
7.2、设置备库OGUID及修改数据库模式
-- 另外开启窗口,启动命令行工具 DIsql,登录主库设置 OGUID 值
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(20220421);
--OGUID 的查询方式:
SELECT OGUID FROM V$INSTANCE;
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
OGUID:数据守护唯一标识码,配置数据守护时,需要由用户指定 OGUID 值。其中数据库的OGUID 在 MOUNT 状态下由系统函数 SP_SET_OGUID 设置,守护进程和监视器的 OGUID 值在配置文件中设定。
同一守护进程组中的所有数据库、守护进程和监视器,都必须配置相同的 OGUID 值,取值范围为 0~2147483647。
8、配置dmmonitor.ini监视器
# 测试环境在备机上配置监视器 !!!
# MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致
cd /dm8/data/DAMENG
cat << EOF >> /dm8/data/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/data/dmmonitorlog #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 20220421 #组 GRP1 的唯一 OGUID 值 #以下配置为监视器到组 GRP1 的守护进程的连接信息,以 "IP:PORT" 的形式配置,IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.0.224:52141
MON_DW_IP = 172.20.90.236:52142
EOF
cat /dm8/data/DAMENG/dmmonitor.ini
9、启动主备库上的守护进程
cd $DM_HOME/bin
./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
10、备机上启动监视器(注意查看此时数据库的状态是否open)
cd $DM_HOME/bin
./dmmonitor /dm8/data/DAMENG/dmmonitor.ini
11、用root用户创建服务
# 分别在主备库上注册服务
# 主库
su -
cd /dm8/script/root
# 主库数据库服务之前已经存在,忽略
#./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DM1
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p DM1
# 备库
su -
cd /dm8/script/root
#./dm_service_installer.sh -t dmserver -m mount -dm_ini /dm8/data/DAMENG/dm.ini -p DM2
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DM2
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p DM2
# 备库注册监视器服务
./dm_service_installer.sh -t dmmonitor -p DMMONITOR -monitor_ini /dm8/data/DAMENG/dmmonitor.ini
12、注册服务后各种符合后台重启方式
# 主库数据库服务
cd $DM_HOME/bin
./DmServiceDM1 start/stop/restart
# 备库数据库服务
cd $DM_HOME/bin
./DmServiceDM2 start/stop/restart
# 主库守护进程
cd $DM_HOME/bin
./DmWatcherServiceDM1 start/stop/restart
# 备库守护进程
cd $DM_HOME/bin
./DmWatcherServiceDM2 start/stop/restart
# 监视器
cd $DM_HOME/bin
./DmMonitorServiceDMMONITOR start/stop/restart
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29953799/viewspace-2892472/ ,如需转载,请注明出处,否则将追究法律责任。