主备集群规划
主库 备库
IP | 192.168.132.209 | 192.168.132.211 |
实例名 | DMGRID1 | DMGRID2 |
实例端口 | 5236 | 5236 |
MAL 端口 | 5336 | 5336 |
MAL 守护进程端口 | 5436 | 5436 |
守护进程端口 | 5536 | 5536 |
OGUID | 45331 | 45331 |
守护组 | GRP1 | GRP1 |
安装目录 | /dm8/dmdbms | /dm8/dmdbms |
实例目录 | /dmdata/dm8/data | /dmdata/dm8/data |
归档上限 | 51200 | 51200 |
安装前准备
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service
创建用户所在的组,命令如下:
groupadd dinstall -g 12345
创建用户,命令如下:
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 12345 dmdba
修改用户密码,命令如下:
passwd dmdba
mkdir -p /dmdata/dm8/backup /dmdata/dm8/arch /dmdata/dm8/log /dmdata/dm8/data /dm8/dmdbms
chown -R dmdba:dinstall /dm8/dmdbms
chown -R dmdba:dinstall /dmdata/dm8/backup
chown -R dmdba:dinstall /dmdata/dm8/arch
chown -R dmdba:dinstall /dmdata/dm8/log
chown -R dmdba:dinstall /dmdata/dm8/data
chmod -R 755 /dm8/dmdbms
chmod -R 755 /dmdata/dm8/backup
chmod -R 755 /dmdata/dm8/arch
chmod -R 755 /dmdata/dm8/log
chmod -R 755 /dmdata/dm8/data
使用 root 用户打开 /etc/security/limits.conf 文件进行修改,命令如下:
vi /etc/security/limits.conf
在最后需要添加如下配置:
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
su - dmdba
ulimit -a
镜像传到了/目录下
cd /
unzip 一下文件
mount -o loop dm8_20240116_x86_rh7_64.iso /mnt
su - dmdba
cd /mnt
./DMInstall.bin -i
数据库安装完成后,需要切换至 root 用户执行上图中的命令 /home/dmdba/dmdbms/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。
主库执行
su - dmdba
/dm8/dmdbms/bin/dminit PATH=/dmdata/dm8/data/ INSTANCE_NAME=dmgrid1 PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y DB_NAME=DMDG INSTANCE_NAME=DMGRID1 PORT_NUM=5236 LOG_SIZE=2048 SYSDBA_PWD=Huangshixin123** SYSAUDITOR_PWD=Huangshixin123**
su - root
cd /dm8/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/dm8/data/DMDG/dm.ini -p DMGRID1 -m mount
./DmServiceDMGRID1 start
标志 | 参数 | 说明 |
|---|---|---|
-t | 服务类型 | 注册服务类型,支持一下服务类型:dmap、dmamon、dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm。 |
-dm_ini | INI 文件路径 | 指定服务所需要的 dm.ini 文件路径。 |
-p | 服务名后缀 | 指定服务名后缀,生成的操作系统服务名为“服务脚本模板名,称 + 服务名后缀”。此参数只针对 dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm 服务脚本生效。 |
主库开启归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/dm8/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
select name,arch_mode from v$database;
备份数据
BACKUP DATABASE BACKUPSET '/dmdata/dm8/backup/fullback';
SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
DW_INACTIVE_INTERVAL ##服务器认定守护进程未启动的时间,取值范围 0~1800,单位秒。
如果服务器距离上次收到守护进程消息的时间间隔在设定的时间范围内,则认为守护进程处于活动状态,此时,不允许手工
执行修改服务器模式、状态的 SQL 语句;
如果超过设定时间仍没有收到守护进程消息,则认为守护进程未启动,此时,允许手工方式执行这类 SQL 语句
RLOG_SEND_APPLY_MON ##数据守护中,对于主库,用于指定统计最近 N 次主库到每个备库的归档发送时间;对于备库,用于指定统计最近 N
次备库重演日志的时间,N 为此参数设置的值。取值范围 1~1024
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库 OFFLINE 表空间
MAL_INI = 1 ##打开 MAL 系统
ARCH_INI = 1 ##打开归档配置
ALTER_TABLE_OPT=3 ##加快带默认值的字段添加(看情况需要)
su - dmdba
cd /dmdata/dm8/data/DMDG/
vi dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/dm8/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMGRID2 #实时归档目标实例名
创建 dmmal.ini
cd /dmdata/dm8/data/DMDG/
vi dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /dmdata/dmdbms/data/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = DMGRID1 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.132.209 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.132.209 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMGRID2
MAL_HOST = 192.168.132.211
MAL_PORT = 5336
MAL_INST_HOST = 192.168.132.211
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
cd /dmdata/dm8/data/DMDG/
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dm8/data/DMDG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/dmdbms/bin/DmServiceDMGRID1 start #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
cd /dmdata/dm8/backup/fullback
scp * dmdba@192.168.132.211:/dmdata/dm8/backup
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/dm8/data/DMDG/dmwatcher.ini
备库执行
su - dmdba
/dm8/dmdbms/bin/dminit PATH=/dmdata/dm8/data/ INSTANCE_NAME=dmgrid1 PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y DB_NAME=DMDG INSTANCE_NAME=DMGRID2 PORT_NUM=5236 LOG_SIZE=2048 SYSDBA_PWD=Huangshixin123** SYSAUDITOR_PWD=Huangshixin123**
恢复主库传来的备份
/dm8/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/dm8/data/DMDG/dm.ini' FROM BACKUPSET '/dmdata/dm8/backup'"
/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/dm8/data/DMDG/dm.ini' FROM BACKUPSET '/dmdata/dm8/backup'"
/dm8/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/dm8/data/DMDG/dm.ini' UPDATE DB_MAGIC"
vi dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/dm8/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMGRID1 #实时归档目标实例名
注册服务
cd /dm8/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/dm8/data/DMDG/dm.ini -p DMGRID2 -m mount
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 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志重演信息
vi dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /dmdata/dm8/data/DMDG #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = DMGRID1 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.132.209 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.132.209 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMGRID2
MAL_HOST = 192.168.132.211
MAL_PORT = 5336
MAL_INST_HOST = 192.168.132.211
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dm8/data/DMDG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/dmdbms/bin/DmServiceDMGRID2 start #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/dm8/data/DMDG/dmwatcher.ini
测试主从同步
主库备库都执行
/dm8/dmdbms/bin/dmserver /dmdata/dm8/data/DMDG/dm.ini mount
主库
/dm8/dmdbms/bin/disql sysdba/'"Huangshixin123**"'
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
select status$ from v$instance;
LINEID STATUS$
---------- -------
1 MOUNT
备库
/dm8/dmdbms/bin/disql sysdba/'"Huangshixin123**"'
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
select status$ from v$instance;
LINEID STATUS$
---------- -------
1 MOUNT
主库备库启动datawatcher
/dm8/dmdbms/bin/dmwatcher /dmdata/dm8/data/DMDG/dmwatcher.ini
查看数据库状态
SQL> select status$,mode$ from v$instance;
LINEID STATUS$ MODE$
---------- ------- -------
1 OPEN PRIMARY
SQL> select status$,mode$ from v$instance;
LINEID STATUS$ MODE$
---------- ------- -------
1 OPEN STANDBY
主节点启动monitor,后期为规范格外部署一台服务器安装monnitor
/dm8/dmdbms/bin/dmmonitor /dmdata/dm8/data/DMDG/dmmonitor.ini
/dm8/dmdbms/bin/dmmonitor /dm8/dmdbms/bin/dmmonitor.ini
测试数据同步
create tablespace hsx datafile '/dmdata/dm8/data/DMDG/hsx.DBF' size 128 autoextend on maxsize 10240;
create user hsx identified by "Huangshixin123**" default tablespace hsx default index tablespace hsx;
grant dba to hsx;
主节点登录hsx用户
备节点查询表




