DM8守护集群 (对标于Oracle的DataGuard) 但是通过搭建过程 感觉 部署十分方便,搭建难度小于oracle的 DataGuard
其原理也是操作系统平台,达梦版本相同的数据库通过主库传输归档日志到备库,备库通过实时应用主库的归档日志,使主库和备份 数据实时同步并且,备库可以对外提供查询服务。
搭建的过程如下:
修改操作系统限制 (两台机器都做)
dmdba soft nproc 16384
dmdba hard nproc 16384
dmdba soft nofile 65536
dmdba hard nofile 65536
关闭防火墙 (两台机器都做)
systemctl disable firewalld
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
挂载DM光盘: (两台机器都做)
mount -o loop dm8_20220701_x86_rh6_64_ent_8.1.2.128.iso /mnt
配置 YUM (两台机器都做)
/dev/sr0 3.7G 3.7G 0 100% /run/media/root/RHEL-7.1 Server.x86_64
umount /run/media/root/RHEL-7.6\ Server.x86_64/
mount /dev/cdrom /media -o loop
cd /etc/yum.repos.d
vi rhel7.repo ----------------或者--------------- local.repo
[local]
baseurl=file:///media
name=this is a local repo
enabled=1
gpgcheck=0
yum clean all;
yum list all;
安装依赖包
yum install *glibc* -y
yum install *libXp* -y
yum install *libXt* -y
yum install *libXtst* -y
下一步 修改 主库 dmdw1 的dm.ini文件
vi /dmdata/dmdw/dm.ini
MAL_INI = 1 ## 0 变为 1
ARCH_INI = 1 ## 0 变为 1
ALTER_MODE_STATUS = 0 #Whether to permit database user to alter database mode and status by SQLs, 1: yes, 0: no
ENABLE_OFFLINE_TS = 2 #Whether tablespace can be offline
新建文件 vi /dmdata/dmdw/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = dmdw1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.10.150 #MAL系统监听TCP连接的IP地址 心跳地址
MAL_PORT = 61141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.115.150 #实例的对外服务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 = dmdw2 #### 需要修改
MAL_HOST = 10.10.10.160
MAL_PORT = 61142
MAL_INST_HOST = 192.168.115.160
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
新建立和 配置 vi /dmdata/dmdw/dmarch.ini
su - dmdba
mkdir -p /dmdata/arch
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = dmdw2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M
新建立和 配置 vi /dmdata/dmdw/dmwatcher.ini
修改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 = /dmdata/dmdw/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
主库脱机备份:
cd /dm/dmdbms/bin
./dmrman
一号机 dmdw1 上执行脱机备份
备份出来的 dbfull 是个目录
backup database '/dmdata/dmdw/dm.ini' full backupset '/dmdata/dbfullbackup';
把脱机备份集拷贝到2号机 dmdw2
scp -rp dbfullbackup/ 192.168.115.138:/dmdata/.
在2号机器dmdw2进行还原
cd /dm/dmdbms/bin
./dmrman
restore database '/dmdata/dmdw/dm.ini' from backupset '/dmdata/dbfullbackup';
recover database '/dmdata/dmdw/dm.ini' from backupset '/dmdata/dbfullbackup';
recover database '/dmdata/dmdw/dm.ini' update db_magic;
启动 主库 dmdw1 到 mount状态 设置 OGUID
cd /dm/dmdbms/bin
./dmserver /dmdata/dmdw/dm.ini mount
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
alter database primary;
启动 主库 dmdw2 到 mount状态 设置 OGUID
cd /dm/dmdbms/bin
./dmserver /dmdata/dmdw/dm.ini mount
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
alter database standby;
主库启动守护进程
/dm/dmdbms/bin/dmwatcher /dmdata/dmdw/dmwatcher.ini
备库启动守护进程
/dm/dmdbms/bin/dmwatcher /dmdata/dmdw/dmwatcher.ini
注册守护进程为服务的形式
su - root
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/dmdw/dmwatcher.ini -p dmdw1
su - root
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/dmdw/dmwatcher.ini -p dmdw2
注册 监视器 服务的形式
su - root
vi /dmdata/dmdw/dmmonitor.ini
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/dmmonitor.ini -p dmdw150160
7、启动监视器
/dm/dmdbms/bin/dmmonitor /dmdata/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dmdata/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32
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.10:52141
MON_DW_IP = 192.168.100.11:52142
其他命令:
监视器里输入:
show global info
show arch send info DMDW2
show apply stat DMDW2
5 s 自动刷新显示
show i 5
stop dmwatcher grp1
startup dmwatcher grp1
停止 组里所有的数据库
stop group grp1
startup group grp1
停止单库
login
detach database dmdw2
stop database dmdw2
startup database dmdw2
attach database dmdw2
查看 系统运行状态
tip
切换命令 :
正常切换 switchover
login
choose switchover grp1
switchover grp1.dmdw2
switchover grp1.dmdw1
choose takeover grp1
check recover dmdw2
文章
阅读量
获赞