达梦主备部署

达梦主备部署

一.概括

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>
相关推荐
云和数据.ChenGuang4 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi5 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据6 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi7 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀7 小时前
Redis梳理
数据库·redis·缓存
独行soc7 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天8 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺8 小时前
分布式系统架构:服务容错
数据库·架构
独行soc9 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘