0
点赞
收藏
分享

微信扫一扫

DM集群搭建

桑二小姐 2022-04-13 阅读 66
dba

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数据库守护集群搭建步骤

  1. 环境检查
    1. 基本和单机环境一致,操作系统参数调整一致
    2. 集群内所有操作系统的数据盘是否独立分区
    3. 集群内所有操作系统的目录挂载是否一致
    4. 集群内所有操作系统是否开启ntp同步
    5. 集群内所有操作用户(dmdba),id与group id是否一致
    6. 集群内所有服务器是否在同一局域网内,注意网络防火墙策略
    7. 备份目录是否共享目录(nfs)
    8. 监控器(dmmonitor)有条件一定要独立安装在服务器
  2. 集群环境规划

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

  1. 配置文件说明
    1. 数据库配置文件 dm.ini
    2. MAL 配置文件 dmmal.ini (集群内一致)
    3. Redo 日志归档配置文件 dmarch.ini
    4. 守护进程配置文件 dmwatcher.ini (集群内基本一致)
    5. 确认监视器配置文件 dmmonitor_auto.ini
    6. 普通监视器配置文件 dmmonitor_manual.ini
  2.  推荐实时主备搭建顺序

服务器A库

  1. 实例备份数据
  2. 修改dm.ini
  3. 修改dmarch.ini
  4. 修改dmwatcher.ini
  5. 修改dmmal.ini
  6. 拷贝实例目录
  7. 注册服务

服务器B库

  1. 修改dm.ini
  2. 修改dmarch.ini
  3. 修改dmwatcher.ini
  4. 修改dmmal.ini
  5. 恢复数据库
  6. 注册服务

服务器C监视器

  1. 确认监视器配置文件
  2. 普通监视器配置文件
  3. 注册服务

设置数据库模式

设在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 -监视器

  1. 非确认监视器配置文件 建议放在集群各节点的bin目录中
  2. 确认监视器配置文件 一定放在监视器所在服务器上面并注册后台自启服务。

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次再切换下一个服务器.

 

举报

相关推荐

0 条评论