达梦主备部署

达梦主备部署

一.概括

1)环境软件下载

环境:centos7 x86
达梦版本开发版:dm8_20231011_x86_rh6_64
下载地址官网下载:https://eco.dameng.com/download/?_blank
百度网盘下载:链接:https://pan.baidu.com/s/15nG4oRGf0BzEzZf3QQXubw  提取码:cc69
odbc驱动下载:https://developer.aliyun.com/packageSearch?word=unixodbc

2)集群规划

组名称 组ID
GDW1 45331
dmserver的IP dmwatcher的IP dmserver名称 dmserver端口号 MAL端口 MAL守护进程端口 dmwatcher端口
192.168.1.5 192.168.1.5 DW1_01 5236 5336 5436 5536
192.168.1.6 192.168.1.6 DW1_01B 5236 5336 5436 5536
dmmonitor的IP 192.168.1.7 监视器 - - - -

二.安装

192.168.1.5、192.168.1.6、192.168.1.7都要安装

1)安装前

创建组和用户,挂载磁盘。

1.创建用户组

bash 复制代码
groupadd dinstall

2.创建用户

bash 复制代码
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

3.修改用户密码

bash 复制代码
passwd dmdba

4.修改文件最大打开数

bash 复制代码
vi /etc/security/limits.conf

在文件最后添加以下四句话

bash 复制代码
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384

切换 dmdba用户查看是否生效

bash 复制代码
su - dmdba
ulimit -a

5.挂载磁盘

切换到root用户下,将.iso文件放到/opt目录下,执行如下命令挂载磁盘

bash 复制代码
su root
mount -o loop /opt/dm8_20231011_x86_rh6_64.iso /mnt

6.修改tmp文件大小

bash 复制代码
mount -o remount,size=3G /tmp

7.创建安装目录,修改权限

bash 复制代码
mkdir /dm8
chown dmdba:dinstall -R /dm8/
chmod -R 755 /dm8

2)安装数据库

1.安装

bash 复制代码
su - dmdba
cd /mnt/
./DMInstall.bin -i
1.默认中文
2.key: n
3.是否设置时区:y
   默认21
4.典型安装
5.安装目录:/dm8
6.确认安装路径/dm8: y

2.创建DmAPService

否则影响脱机备份

bash 复制代码
su root
/dm8/script/root/root_installer.sh

三.主备机器部署

以下操作都是在登录用户dmdba下执行

1)初始化数据库

(1)主库配置

1.初始化实例

bash 复制代码
source ~/.bash_profile 
/dm8/bin/dminit path=/dm8/data/ page_size=32 extent_size=32 CASE_SENSITIVE=1 CHARSET=1  LOG_SIZE=2048 INSTANCE_NAME=DW1_01

2.启动服务器,启动diqsl,通过disql修改dm.ini配置

bash 复制代码
cd /dm8/bin
./dmserver /dm8/data/DAMENG/dm.ini

新开控制台执行

bash 复制代码
cd /dm8/tool
./disql
SQL>conn SYSDBA/SYSDBA;
bash 复制代码
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,'ARCH_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);

3.创建dmmal.ini主备配置文件

bash 复制代码
[dmdba@~]# vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL         = 10  #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL     = 10  #判定MAL链路断开的时间
MAL_TEMP_PATH              = /dm8/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            = DW1_01  #实例名,和 dm.ini的INSTANCE_NAME一致
  MAL_HOST                 = 192.168.1.5  #MAL系统监听TCP连接的IP地址
  MAL_PORT                 = 5336  #MAL系统监听TCP连接的端口
  MAL_INST_HOST            = 192.168.1.5  #实例的对外服务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            = DW1_01B
  MAL_HOST                 = 192.168.1.6
  MAL_PORT                 = 5336
  MAL_INST_HOST            = 192.168.1.6
  MAL_INST_PORT            = 5236
  MAL_DW_PORT              = 5436
  MAL_INST_DW_PORT         = 5536

4.创建dmarch.ini归档文件

主库需要同步至备库,所以ARCH_DEST对应备库名称

bash 复制代码
[dmdba@~]# vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL]
  ARCH_TYPE                = LOCAL  #本地归档类型
  ARCH_DEST                = /dm8/data/DAMENG/arch/  #本地归档存放路径
  ARCH_FILE_SIZE           = 1024  #单个归档大小,单位MB
  ARCH_SPACE_LIMIT         = 51200  #归档上限,单位MB
[ARCHIVE_REALTIME]
  ARCH_TYPE                = REALTIME  #实时归档类型
  ARCH_DEST                = DW1_01B  #实时归档目标实例名

5.创建dmwatcher.ini守护进程配置文件

bash 复制代码
[dmdba@~]# vi /dm8/data/DAMENG/dmwatcher.ini
[GDW1]
  DW_TYPE                  = GLOBAL  #全局守护类型
  DW_MODE                  = AUTO  #故障自动切换模式 
  DW_ERROR_TIME            = 20  #远程守护进程故障认定时间
  INST_ERROR_TIME          = 20  #本地实例故障认定时间
  INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间
  INST_OGUID               = 45331  #守护系统唯一OGUID值
  INST_INI                 = /dm8/data/DAMENG/dm.ini  #dm.ini文件路径
  INST_AUTO_RESTART        = 1  #打开实例的自动启动功能
  INST_STARTUP_CMD         = /dm8/bin/dmserver  #命令行方式启动
  RLOG_SEND_THRESHOLD      = 0  #指定主库发送日志到备库的时间阈值,默认关闭
  RLOG_APPLY_THRESHOLD     = 0  #指定备库重演日志的时间阈值,默认关闭

(2)备库配置

1.初始化实例

bash 复制代码
/dm8/bin/dminit path=/dm8/data/ page_size=32 extent_size=32 CASE_SENSITIVE=1 CHARSET=1  LOG_SIZE=2048 INSTANCE_NAME=DW1_01B

2.将主库的dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini的四个文件拷贝到/dm8/data/DAMENG/下

3.修改dm.ini

bash 复制代码
INSTANCE_NAME                   = DW1_01B

4.修改dmarch.ini

bash 复制代码
  ARCH_DEST                = DW1_01  #实时归档目标实例名
  1. 启动服务器,初始化数据库
bash 复制代码
cd /dm8/bin
./dmserver /dm8/data/DAMENG/dm.ini

2)脱机备份

即使是新dmini的数据,不做备份还原处理,主备服务器状态会一直是mount

(1)主服务器上备份

bash 复制代码
cd /dm8/bin
./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET  '/dm8/data/BACKUP_FILE_01'"

将备份生成的文件BACKUP_FILE_01拷贝到备库服务器的/dm8/data/DAMENG/下

(2)备服务上还原更新

bash 复制代码
cd /dm8/bin
./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/BACKUP_FILE_01'"
bash 复制代码
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

(3)注释

备份还原如果提示:[-7170]:bakres连接DMAP失败

bash 复制代码
cd /dm8/bin
./DmAPService start

3)启动服务器

(1)主服务器上

1.启动主服务器

bash 复制代码
cd /dm8/bin
./dmserver /dm8/data/DAMENG/dm.ini mount

2.新开控制台,disql设置主机模式

bash 复制代码
cd /dm8/tool
./disql
SQL>conn SYSDBA/SYSDBA;
bash 复制代码
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);

3.启动守护进程

bash 复制代码
cd /dm8/bin
./dmwatcher /dm8/data/DAMENG/dmwatcher.ini

(3)备服务器上

1.启动主服务器

bash 复制代码
cd /dm8/bin
./dmserver /dm8/data/DAMENG/dm.ini mount

2.新开控制台,disql设置备机模式

bash 复制代码
cd /dm8/tool
./disql
SQL>conn SYSDBA/SYSDBA;
bash 复制代码
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);

3.启动守护进程

bash 复制代码
cd /dm8/bin
./dmwatcher /dm8/data/DAMENG/dmwatcher.ini

(3)监控服务器上

1.添加dmmonitor.ini 监控服务配置

bash 复制代码
[dmdba@~]# vi /dm8/monitor/dmmonitor.ini
MON_DW_CONFIRM             = 1  #0为非确认,1为确认
MON_LOG_PATH               = /dm8/monitor/log  #监视器日志文件存放路径
MON_LOG_INTERVAL           = 60  #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE          = 512  #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT        = 2048  #日志上限,单位MB

[GDW1]
  MON_INST_OGUID           = 45331  #组GDW1的唯一OGUID 值
  MON_DW_IP                = 192.168.1.5:5436  #IP对应MAL_HOST,PORT对应MAL_DW_PORT
  MON_DW_IP                = 192.168.1.6:5436

2.启动监控服务器

bash 复制代码
cd /dm8/bin
./dmmonitor /dm8/monitor/dmmonitor.ini

4)添加服务实现开机自启

bash 复制代码
cd /dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini -p A
./dm_service_installer.sh -t dmmonitor -monitor_ini /dm8/monitor/dmmonitor.ini -p M

DmServiceDMSERVER

DmWatcherServiceA

DmMonitorServiceM

四.odbc驱动链接

1.安装驱动后查看配置

bash 复制代码
[root@localhost dm8]# odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

2.修改:\etc\dm_svc.conf

bash 复制代码
DMHA=(192.168.1.5:5236,192.168.1.6:5236)
LOGIN_MODE=(1) 
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100) 

LOGIN_MODE=(1):只连接主库

SWITCH_TIMES=(3):以服务名连接库时,若未找到符合条件的库建立连接,将尝试遍历服务名中库列表的次数

SWITCH_INTERVAL=(100):在服务器之间切换的时间间隔,单位为毫秒

3.修改:\etc\odbc.ini

bash 复制代码
[dm8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = DMHA
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

4.检测链接

bash 复制代码
[root@localhost dm8]# isql -v DM8
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>
相关推荐
tatasix1 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9992 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98763 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
苏-言3 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
Ljw...3 小时前
索引(MySQL)
数据库·mysql·索引