1.Liunx 挂载ISO文件
Mount -o loop path/xxx.iso path1
2.Liunx 防火墙
systemctl status firewalld --查看防火墙状态
Systemctl stop firewalld --关闭防火墙
Systemctl disable firewalld --禁止开机启动防火墙
关闭selinux
vim /etc/selinux/config
disabled
3.添加完用户之后需要修改 /etc/security/limits.conf
添加 dmdba hard nofile 65536 dmdba soft nofile 65536 dmdba hard stack 65536 dmdba soft stack 65536 切换到dmdba用户查看是否修改成功 su - dmdba ulimit - a
Liunx 固定IP
cd /etc/sysconfig/network-scripts/
Ifcfg-
打开文件,如下主要配置。bootproto一开始是dhcp随机分发的模式,所以要改一下。之后就是我们的ip地址,网关地址,dns域名解析。主要是几个修改地方。
4.图形化设置
dmdba
echo $DISPLAY
--结果返回空白
解决办法:
root用户下:
xhost +
echo $DISPLAY
su - dmdba
export DISPLAY=:0.0(仅对当前会话生效)
xclock
5.DM数据库守护集群搭建步骤
- 环境检查
- 基本和单机环境一致,操作系统参数调整一致
- 集群内所有操作系统的数据盘是否独立分区
- 集群内所有操作系统的目录挂载是否一致
- 集群内所有操作系统是否开启ntp同步
- 集群内所有操作用户(dmdba),id与group id是否一致
- 集群内所有服务器是否在同一局域网内,注意网络防火墙策略
- 备份目录是否共享目录(nfs)
- 监控器(dmmonitor)有条件一定要独立安装在服务器
- 集群环境规划
A机器 | B机器 | |
业务IP(对外IP) | 192.168.159.131 | 192.168.159.132 |
心跳IP(内部通讯IP) | 192.168.1.1 | 192.168.1.2 |
实例名 | DMSERVER_01 | DMSERVER_02 |
实例端口 | 5236 | 5236 |
MAL端口 | 5336 | 5336 |
MAL守护进程端口 | 5436 | 5436 |
守护进程端口 | 5536 | 5536 |
OGUID | 45331 | 45331 |
守护组 | GRWC1 | |
安装目录 | ||
实例目录 | ||
归档目录 | ||
归档上限 | ||
备份目录 | ||
确认监视器IP | 192.168.159.133 |
- 配置文件说明
- 数据库配置文件 dm.ini
- MAL 配置文件 dmmal.ini (集群内一致)
- Redo 日志归档配置文件 dmarch.ini
- 守护进程配置文件 dmwatcher.ini (集群内基本一致)
- 确认监视器配置文件 dmmonitor_auto.ini
- 普通监视器配置文件 dmmonitor_manual.ini
- 推荐实时主备搭建顺序
服务器A库
- 实例备份数据
- 修改dm.ini
- 修改dmarch.ini
- 修改dmwatcher.ini
- 修改dmmal.ini
- 拷贝实例目录
- 注册服务
服务器B库
- 修改dm.ini
- 修改dmarch.ini
- 修改dmwatcher.ini
- 修改dmmal.ini
- 恢复数据库
- 注册服务
服务器C监视器
- 确认监视器配置文件
- 普通监视器配置文件
- 注册服务
设置数据库模式
设在oguid
启动服务
服务器A库 - 主库 -- 实例、备份数据
--初始化实例
/opt/dmdbms/bin/dminit PATH=/opt/dmdbms/data/ INSTANCE_NAME=RWC1_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
--启动服务
/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini
--开启归档
/opt/dmdbms/bin/disql SYSDBA/SYSDBA@172.16.1.1:5236
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
--备份数据
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE';
-- 关闭数据库
服 务器A-主库----dm.ini
配置项 | 参数值 | 配置含义 |
INSTANCE_NAME | 自定义 例:DM01 | 数据库实例名(长度不超过 16 个字符),与 dmmal.ini 中的 MAL_INST_NAME 对应。配置数据守护系统时,应该保持 INSTANCE_NAME 是全局唯一的。 |
PORT_NUM | 5236 | 数据库实例监听端口(范围 1024~65534),与 dmmal.ini 中 的 MAL_INST_PORT 对应 |
DW_INACTIVE_INTERVAL | 60 | 接收守护进程消息超时时间 |
ALTER_MODE_STATUS | 0 | 是否允许手工修改数据库的模式和状态,1 表示允许,0 表示 不允许,此参数可动态修改,默认为 1,数据守护环境下建议 配置为 0,避免用户手工干预。 |
ENABLE_OFFLINE_TS | 2 | 是否允许 offline 表空间,1 表示允许,0 表示不允许,2 表 示禁止备库,其他放开。守护环境下建议配置为 2。 |
MAL_INI | 1 | 系统配置开关,0 表示不启用 MAL 系统,1 表示启用 MAL系统。 |
ARCH_INI | 1 | Redo 日志归档配置开关,0 表示不启动 Redo 日志归档,1 表 示启用 Redo 日志归档 |
RLOG_SEND_APPLY_MON | 6 | 统计最近64次日志发送消息 |
服务器A库 主库 ---dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位MB 业务要求修改
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = RWC1_02 #实时归档目标实例名
服务器B库 备库 ---dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdbms/data/DAMENG/arch/
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = RWC1_01
服 务器A-主库----dmwatcher.ini
[GRWC1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一OGUID值
INST_INI = /opt/dmdbms/data/DAMENG/dm.ini #dm.ini文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
服 务器A-主库----dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间
MAL_TEMP_PATH = /opt/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 = RWC1_01 #实例名,和dm.ini的INSTANCE_NAME一致
MAL_HOST = 192.168.1.1 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 172.16.1.1 #实例的对外服务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 = RWC1_02
MAL_HOST = 192.168.1.2
MAL_PORT = 5336
MAL_INST_HOST = 172.16.1.2
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
服 务器A-主库--拷贝实例目录
-拷贝实例到B机器
scp -r /opt/dmdbms/data/DAMENG dmdba@192.168.1.2:/opt/dmdbms/data/
服务器A-主库--注册服务
使用root权限用户
/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p RWC1_01 -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -m mount
/opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini
服务器B库 --dm.ini与服务器A库除实例名基本一致
服 务器B-主库----dmarch.ini ARCH_DEST = A库实例名
服 务器B-主库----dmwatcher.ini 主备基本一样
服 务器B-主库----dmmal.ini 主备基本一样
服 务器B-备库--注册服务
使用root权限用户
/opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p RWC1_02 -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -m mount
/opt/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /opt/dmdbms/data/DAMENG/dmwatcher.ini
服务器B-备库--恢复数据
[dmdba@~]$ /opt/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET
'/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@~]$ /opt/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET
'/opt/dmdbms/data/DAMENG/bak/BACKUP_FILE'"
[dmdba@~]$ /opt/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
服务器C -监视器
- 非确认监视器配置文件 建议放在集群各节点的bin目录中
- 确认监视器配置文件 一定放在监视器所在服务器上面并注册后台自启服务。
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /opt/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位MB
[GRWC1]
MON_INST_OGUID = 45331 #组GRWC1的唯一OGUID值
MON_DW_IP = 192.168.1.1:5436 #IP对应MAL_HOST,PORT对应MAL_DW_PORT
MON_DW_IP = 192.168.1.2:5436
服 务器C-监视器
用root用户注册
/opt/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /opt/dmdbms/bin/dmmonitor.ini
启 动数据库并修改参数
服务器A-主库启动到mount状态
/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
./disql SYSDBA/SYSDBA
SQL>sp_set_para_value(1,'ALTER_MODE_STATUS',1); SQL>sp_set_oguid(453331);
SQL>alterdatabase primary;
SQL>sp_set_para_value(1,'ALTER_MODE_STATUS',0);
停库
服务器B-备库启动到mount状态
/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini mount
./disql SYSDBA/SYSDBA
SQL>sp_set_para_value(1,'ALTER_MODE_STATUS',1); SQL>sp_set_oguid(45331);
SQL>alter database standby;
SQL>sp_set_para_value(1,'ALTER_MODE_STATUS',0);
停库
启动主备库数据库服务
服务器A-主库
/opt/dmdbms/bin/DmServiceRWC1_01 start
服务器B-备库
/opt/dmdbms/bin/DmServiceRWC1_02 start
启动后,主备库状态应该是mount状态,只有所有DmWatcherServiceWatcher启动后,才会变成open状态
启动主备库守护服务
服务器A-主库
/opt/dmdbms/bin/DmWatcherServiceWatcher start
服务器B-备库
/opt/dmdbms/bin/DmWatcherServiceWatcher start
启动确认监视器
/opt/dmdbms/bin/DmMonitorServiceMonitor start
非确认模式前台启动方法
/opt/dmdbms/bin/dmmonitor /dm/dmdbms/bin/dmmonitor_manual.ini
监视器常用命令
命令 | 含义 |
list | 查看守护进程的配置信息 |
show global info | 查看所有实例组的信息 |
Tip | 查看系统当前运行状态 |
Login | 登录监视器 |
Logout | 退出登录 |
choose switchover GRWC1 | 主机正常:查看可切换为主机的实例列表 |
switchover GRWC1.实例名 | 主机正常:使用指定组的指定实例,切换为主机 |
choose takeoverGRWC1 | 主机故障:查看可切换为主机的实例列表 |
takeoverGRWC1.实例名 | 主机故障:使用指定组的指定实例,切换为主机 |
choose takeover force GRWC1 | 强制切换:查看可切换为主机的实例列表 |
takeover force GRWC1.实例名 | 强制切换:使用指定组的指定实例,切换为主机 |
监视器常用命令-show
可以看到数据库状态、守护进程状态,FLSN,CLSN等
如果主库CLSN差异比较大,多输入几次show命令后,主库和备库之间的CLSN差值还是越来越大,就说明主备
库存在延时,如果这种情况,保业务的话,可以先停备库。
也可以使用 select cur_lsn from v$rlog; 查看主备库的lsn。比较主备库的差异。
监视器常用命令-choose switchover/choose takeover
使用前,必须先输入login 命令 登录
choose takeover GDW1_01
takeover GDW1_01.DW1_01B
choose switchover grp1
switchover grp1.PROD01
监视器常用命令-show arch send info [group_name.]db_name
显示源库到指定备库的日志发送信息,以及源库的控制守护进程本地到指定备库的Recovery 间隔
信息。也支持异步备库的查询。
SEND CODE:主库到指定备库的日志发送结果,
Code 小于 0 表示发送失败,
等于 0 表示发送成功,
等于 100 表示实际未发送。
SEND DESC INFO:
主库到指定备库的日志发送结果描述信息。
集群关闭顺序
退出监视器
关闭备机的守护进程
关闭主机的守护进程
关闭主机实例
关闭备机实例
dm_svc.conf配置
主备常见配置
1.修改dm
_svc.conf内容
TIME
_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.100.100:5236,192.168.100.101:5236)
#服务配置
[DMHA]
SWITCH
_TIMES=(3)
SWITCH
_INTERVAL=(1000)
LOGIN
_MODE=(1)
2.修改url连接串增加 jdbc:dm://DMHA
如下:
static String dname = "dm.jdbc.driver.DmDriver";
static String url = "jdbc:dm://DMHA";
以“[服务名]”开头,可配置除了服务名外的所有配置项。服务配置区中的
配置优先级高于全局配置区(服务配置区的相同配置项会覆盖全局配置区
对应的配置项)。
LOGIN_MODE:指定优先登录的服务器模式。
0:优先连接 PRIMARY 模式的 库,NORMAL 模式次之,最后选择 STANTBY 模式;
1:只连接 主库;
2:只连接备库;
3:优先连接 STANDBY 模式的库, PRIMARY 模式次之,最后选择 NORMAL 模式;
4:优先连接 NORMAL 模式的库,PRIMARY 模式次之,最后选择STANDBY 模式 。
SWITCH_TIMES:以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。有效值范围1~9223372036854775807,默认值为1,可以设置至少3次用来避免由于网卡的波动照成数据库连接测频繁切换
WITCH_INTERVAL :在服务器之间切换的时间间隔,单位为毫秒,有效值范围 1~9223372036854775807。
与参数SWITCH_TIMES、EP_SELECTOR配合使用,EP_SELECTOR设置为0,等待SWITCH_INTERVAL后会切换尝试连接下一个服务器,EP_SELECTOR设置为1,等待SWITCH_INTERVAL后会继续尝试连接该服务器,直到SWITCH_TIMES次再切换下一个服务器.