数据守护和主备
环境准备
Centos7 64位 3台
DM8安装包iso
环境检查
1、
最小可用内存需要1067m,虚拟机配置最少需要2G内存,然后查看free -m 可用内存大于1067便可
[root@DM-1 dmdba]# free -m
total used free shared buff/cache available
Mem: 1985 142 1688 8 154 1688
Swap: 2047 0 2047
2、
检查limit配置,配置文件为/etc/security/limit.conf
[root@DM-1 dmdba]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7861
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024 #需要修改为>65536的参数
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7861
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
需要在后面添加下面参数来修改
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 10240
dmdba hard nproc 10240
安装准备
1、创建用户和组
Groupadd dinstall
Useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
Passwd dmdba #此步骤后提示输出dmdba密码和确认dmdba密码
2、上传安装包
通用机安装包上传时会有两种情况:
(1) 有光盘,需要将光盘直接挂在到主机中
Mount -o,loop /dev/sr0 /mnt
(2) 有iso镜像,需要将iso镜像复制到目标主机中进行挂在
Mount -o,loop DM8*.iso /mnt
安装操作
!!!安装数据库一定要使用dmdba用户操作
1、使用dmdba用户执行
[dmdba@DM-2 mnt]$ ./DMInstall.bin -i
2、安装完成之后会提示使用root用户执行
/home/dmdba/dmdbms/script/root/root_installer.sh
如果没有这个提示,那得看看是否是以dmdba用户安装的,如果不是,需要重新安装
3、安装好后需要执行数据库初始化操作(需要切换到dmdba用户)
注:初始化后有些参数将不能更改,需要提前核对清楚用户需求,不能修改且重要的参数有:
簇大小
页大小
字符集
大小写敏感
4、初始化完成后需要对数据库进行一次启停
./dmserver /dm8/data/DAMENG/dm.ini
当提示system is ready后 输入exit停止
数据同步
方法一
主库使用rman工具备份主库
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
拷贝备份文件到备库。。。。。。
备库使用rman工具还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET
'/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET
'/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
方法二
进入disql对主库进行联机备份操作
SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_01';
拷贝备份文件到备库。。。。。。
执行脱机数据库还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
参数配置
主、备库配置项(dmmal.ini/dmarch.ini/dmwatcher.ini需要新建)
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 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.0.141 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.131 #实例的对外服务 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.0.142
MAL_PORT = 61142
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名(主库所在服务器写备机的,备机所在写主机的)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb,0 表示无限制,范围 1024~4294967294M
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 = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
确认监视器配置项(dmmonitor.ini需要新建)
dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm8/data/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.0.141:52141 #心跳线端口IP和端口号
MON_DW_IP = 192.168.0.142:52142 #心跳线端口IP和端口号
数据库模式设置
mount模式启动主备数据库(此时前台处于占用状态,另开窗口操作下一步)
disql进入数据库执行分别执行
主库:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
备库:
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
创建服务
使用root用户进入$DM_HOME/script/root/
主库
创建数据库服务(以mount启动)
$DM_HOME/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dm8/data/DAMENG/dm.ini -m mount
创建DmWatcher服务
$DM_HOME/script/root/dm_service_installer.sh -t dmwatcher -p GRP1_RT_01 -watcher /dm8/data/DAMENG/dmwatcher
备库
创建数据库服务
$DM_HOME/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dm8/data/DAMENG/dm.ini -m mount
创建DmWatcher服务
$DM_HOME/script/root/dm_service_installer.sh -t dmwatcher -p GRP1_RT_02 -watcher /dm8/data/DAMENG/dmwatcher
启动监视器
监控服务器切换到dmdba用户
./dmmonitor data/DAMENG/dmmonitor.ini
**确认监视器会自动将主备库拉起来至open状态,
<<DATABASE GLOBAL INFO:>>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.141 52141 2020-11-01 21:50:41 GLOBAL VALID OPEN GRP1_RT_01 OK 1 1 OPEN PRIMARY DSC_OPEN TIMELY VALID
EP INFO:
INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
32141 OK GRP1_RWW_01 OPEN PRIMARY 0 0 TIMELY VALID 3954 39422 3954 39422 NONE
<<DATABASE GLOBAL INFO:>>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.1.142 52142 2020-11-01 21:50:40 GLOBAL VALID OPEN GRP1_RT_02 OK 1 1 OPEN STANDBY DSC_OPEN TIMELY VALID
EP INFO:
INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
32142 OK GRP1_RWW_02 OPEN STANDBY 0 0 TIMELY VALID 3941
使用show命令刷新页面查看集群中数据库的状态信息。**