麒麟V10部署达梦主从(一主二从)
环境
| IP | 角色 | 数据库名 | 实例名称 | 安装路径 | 进程 | MAL端口 | 守护进程端口 |
|---|---|---|---|---|---|---|---|
| 192.168.1.105 | master | CHEN | DB_1_105 | /opt/dmdbms | 数据库进程、守护进程 | 61141 | 52141 |
| 192.168.1.107 | slave+监视器 | CHEN | DB_1_107 | /opt/dmdbms | 数据库进程、守护进程、监视器进程 | 61141 | 52141 |
| 192.168.1.108 | slave | CHEN | DB_1_108 | /opt/dmdbms | 数据库进程、守护进程 | 61141 | 52141 |
部署达梦
在三台机器上部署好达梦数据库
创建用户(三个节点上都操作)
调整 limits.conf 参数(三个节点上都操作)
创建安装目录(三个节点上都操作)
挂载镜像(三个节点上都操作)
安装达梦(三个节点上都操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89su - dmdba cd /mnt [dmdba@db_1_105 mnt]$ ./DMInstall.bin -i Installer Language: [1]: 简体中文 [2]: English Please select the installer's language [2]:1 # 选择安装语言 解压安装程序......... 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n # 此处是测试环境,可以不用输入 是否设置时区? (Y/y:是 N/n:否) [Y/y]:y # 设置时区,默认是中国 设置时区: [ 1]: (GTM-12:00) 日界线西 [ 2]: (GTM-11:00) 萨摩亚群岛 [ 3]: (GTM-10:00) 夏威夷 [ 4]: (GTM-09:00) 阿拉斯加 [ 5]: (GTM-08:00) 太平洋时间(美国和加拿大) [ 6]: (GTM-07:00) 亚利桑那 [ 7]: (GTM-06:00) 中部时间(美国和加拿大) [ 8]: (GTM-05:00) 东部部时间(美国和加拿大) [ 9]: (GTM-04:00) 大西洋时间(美国和加拿大) [10]: (GTM-03:00) 巴西利亚 [11]: (GTM-02:00) 中大西洋 [12]: (GTM-01:00) 亚速尔群岛 [13]: (GTM) 格林威治标准时间 [14]: (GTM+01:00) 萨拉热窝 [15]: (GTM+02:00) 开罗 [16]: (GTM+03:00) 莫斯科 [17]: (GTM+04:00) 阿布扎比 [18]: (GTM+05:00) 伊斯兰堡 [19]: (GTM+06:00) 达卡 [20]: (GTM+07:00) 曼谷,河内 [21]: (GTM+08:00) 中国标准时间 [22]: (GTM+09:00) 首尔 [23]: (GTM+10:00) 关岛 [24]: (GTM+11:00) 所罗门群岛 [25]: (GTM+12:00) 斐济 [26]: (GTM+13:00) 努库阿勒法 [27]: (GTM+14:00) 基里巴斯 请选择时区 [21]: 安装类型: 1 典型安装 # 服务器、客户端、驱动、用户手册、数据库服务 2 服务器 # 服务器、驱动、用户手册、数据库服务 3 客户端 # 客户端、驱动、用户手册 4 自定义 # 根据用户需要勾选组件,可以是服务器、客户端、驱动、用户手 册、数据库服务中的任意组合 请选择安装类型的数字序号 [1 典型安装]:1 所需空间: 2310M 请选择安装目录 [/home/dmdba/dmdbms]:/opt/dmdbms # 指定安装路径 可用空间: 43G 是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y 安装前小结 安装位置: /opt/dmdbms 所需空间: 2310M 可用空间: 43G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y # 最后确认是否安装 2024-06-04 13:51:13 [INFO] 安装达梦数据库... 2024-06-04 13:51:13 [INFO] 安装 基础 模块... 2024-06-04 13:51:17 [INFO] 安装 服务器 模块... 2024-06-04 13:51:17 [INFO] 安装 客户端 模块... 2024-06-04 13:51:19 [INFO] 安装 驱动 模块... 2024-06-04 13:51:20 [INFO] 安装 手册 模块... 2024-06-04 13:51:20 [INFO] 安装 服务 模块... 2024-06-04 13:51:21 [INFO] 移动日志文件。 2024-06-04 13:51:22 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /opt/dmdbms/script/root/root_installer.sh # 切换到root用户,执行该命令 安装结束初始化数据库(三个节点上都操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15# 切换到 dmdba 用户 su - dmdba # 进入安装目录 cd /opt/dmdbms/bin # 初始化 ./dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=0 CHARSET=1 DB_NAME=CHEN INSTANCE_NAME=DB_1_105 PORT_NUM=5236 TIME_ZONE=+08:00 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA # PAGE_SIZE:页大小为 32 KB # EXTENT_SIZE:簇大小为 32 KB # CASE_SENSITIVE:大小写是否敏感,1 或 Y 为敏感,0 或 N 为不敏感 # CHARSET:字符集为 utf_8 # DB_NAME:数据库名为 CHEN # INSTANCE_NAME:实例名为 DB_1_105 # PORT_NUM:端口为 52361./dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=0 CHARSET=1 DB_NAME=CHEN INSTANCE_NAME=DB_1_107 PORT_NUM=5236 TIME_ZONE=+08:00 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA1./dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=0 CHARSET=1 DB_NAME=CHEN INSTANCE_NAME=DB_1_108 PORT_NUM=5236 TIME_ZONE=+08:00 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA注册服务(三个节点上都操作)
启动、停止数据库(三个节点上都操作)
验证数据库是否可用
切换到 dmdba 用户
su - dmdba,并进入到安装目录下cd /opt/dmdbms/bin达梦更新 key 文件
1、将 key 文件上传到达梦安装路径的 bin 目录下,重命名为 dm.key
2、登录数据库查看 key 过期时间
1select expired_date from V$license;3、更新过期时间
4、重新查看过期时间
搭建主从
备份主节点文件
把备份文件同步到从节点
从节点执行数据还原(从节点不需要启动)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17su - dmdba cd /opt/dmdbms/bin/ # 启动 DMAP 服务 ./DmAPService start # 命令1 #格式:./dmrman CTLSTMT="RESTORE DATABASE '改成自己对应数据库的dm.ini具体路径' FROM BACKUPSET '改成主节点备份文件夹路径'" ./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/CHEN/dm.ini' FROM BACKUPSET '/dmdata/CHEN/bak/BACKUP_FILE_20240603'" #命令2 #格式:./dmrman CTLSTMT="RECOVER DATABASE '改成自己对应数据库的dm.ini具体路径' FROM BACKUPSET '改成主节点备份文件夹路径'" ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/CHEN/dm.ini' FROM BACKUPSET '/dmdata/CHEN/bak/BACKUP_FILE_20240603'" #命令3 #格式:./dmrman CTLSTMT="RECOVER DATABASE '改成自己对应数据库的dm.ini具体路径' UPDATE DB_MAGIC" ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/CHEN/dm.ini' UPDATE DB_MAGIC"修改 dm.ini 配置文件
修改主节点配置文件
vim /dmdata/CHEN/dm.ini修改从节点配置文件
vim /dmdata/CHEN/dm.ini修改从节点配置文件
vim /dmdata/CHEN/dm.ini
配置 MAL 系统配置文件 dmmal.ini(三个节点的配置必须完全一致)
主节点配置文件
vim /dmdata/CHEN/dmmal.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40# MAL链路检测时间间隔 MAL_CHECK_INTERVAL = 5 # 判定MAL链路断开的时间 MAL_CONN_FAIL_INTERVAL = 5 # 主节点 [MAL_INST1] # 与dm.ini中的INSTANCE_NAME一致 MAL_INST_NAME = DB_1_105 # MAL系统监听TCP内部网络IP MAL_HOST = 192.168.1.105 # MAL系统监听TCP连接的端口 MAL_PORT = 61141 # 实例的对外服务IP地址 MAL_INST_HOST = 192.168.1.105 # 与dm.ini中的PORT_NUM一致 MAL_INST_PORT = 5236 # 实例对应的守护进程监听TCP端口 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 # 从节点 [MAL_INST2] MAL_INST_NAME = DB_1_107 MAL_HOST = 192.168.1.107 MAL_PORT = 61141 MAL_INST_HOST = 192.168.1.107 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 # 从节点 [MAL_INST3] MAL_INST_NAME = DB_1_108 MAL_HOST = 192.168.1.108 MAL_PORT = 61141 MAL_INST_HOST = 192.168.1.108 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141
配置归档配置文件
主节点(192.168.1.105)配置文件
vim /dmdata/CHEN/dmarch.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21[ARCHIVE_REALTIME2] # 存档类型:实时 ARCH_TYPE = REALTIME # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致 ARCH_DEST = DB_1_107 [ARCHIVE_REALTIME3] # 存档类型:实时 ARCH_TYPE = REALTIME # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致 ARCH_DEST = DB_1_108 [ARCHIVE_LOCAL1] # 存档类型:本地。 指当前的节点 ARCH_TYPE = LOCAL # 本地归档文件存放路径 ARCH_DEST = /dmdata/CHEN/arch # 存档文件大小 ARCH_FILE_SIZE = 1024 # 存档最小占用空间 ARCH_SPACE_LIMIT = 71680从节点(192.168.1.107)配置文件
在 dm.ini 同级目录下创建存放实时存档备份的目录 arch
vim /dmdata/CHEN/dmarch.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21[ARCHIVE_REALTIME1] # 存档类型:实时 ARCH_TYPE = REALTIME # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致 ARCH_DEST = DB_1_105 [ARCHIVE_REALTIME3] # 存档类型:实时 ARCH_TYPE = REALTIME # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致 ARCH_DEST = DB_1_108 [ARCHIVE_LOCAL1] # 存档类型:本地。 指当前的节点 ARCH_TYPE = LOCAL # 本地归档文件存放路径 ARCH_DEST = /dmdata/CHEN/arch # 存档文件大小 ARCH_FILE_SIZE = 1024 # 存档最小占用空间 ARCH_SPACE_LIMIT = 71680从节点(192.168.1.108)配置文件
vim /dmdata/CHEN/dmarch.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21[ARCHIVE_REALTIME1] # 存档类型:实时 ARCH_TYPE = REALTIME # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致 ARCH_DEST = DB_1_105 [ARCHIVE_REALTIME2] # 存档类型:实时 ARCH_TYPE = REALTIME # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致 ARCH_DEST = DB_1_107 [ARCHIVE_LOCAL1] # 存档类型:本地。 指当前的节点 ARCH_TYPE = LOCAL # 本地归档文件存放路径 ARCH_DEST = /dmdata/CHEN/arch # 存档文件大小 ARCH_FILE_SIZE = 1024 # 存档最小占用空间 ARCH_SPACE_LIMIT = 71680
配置守护进程(三个节点的配置必须完全一致)
主节点配置
vim /dmdata/CHEN/dmwatcher.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23[GRP1] # 守护进程类型:GLOBAL DW_TYPE = GLOBAL # 模式:自动 DW_MODE = AUTO #远程守护进程故障认定时间 DW_ERROR_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_RECOVER_TIME = 60 #本地实例故障认定时间 INST_ERROR_TIME = 10 # 实例OGUID端口号,其他配置文件中用到 INST_OGUID = 453332 # 当前节点实例dm.ini文件路径 INST_INI = /dmdata/CHEN/dm.ini #打开实例的自动启动功能 INST_AUTO_RESTART = 1 # 当前节点达梦安装路径中bin目录下的dmserver INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #指定主库发送日志到备库的时间阀值,默认关闭 RLOG_SEND_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭 RLOG_APPLY_THRESHOLD = 0
配置 sqllog.ini(三个节点配置一样)
vim /dmdata/CHEN/sqllog.ini启动主从库
操作主库
1 2 3 4 5 6 7 8 9 10 11 12 13# 先停止 DmServiceDMSERVER 服务 systemctl stop DmServiceDMSERVER # 启动主库 cd /opt/dmdbms/bin ./dmserver /dmdata/CHEN/dm.ini mount # 登录主库,设置 OGUID 值,主库修改为 Primary 模式 ./disql SYSDBA/SYSDBA sp_set_oguid(453332); # 主备库都修改oguid,对应dmwatcher.ini 文件中的INST_OGUID的配置值 alter database primary; # 主库修改数据库模式为primary SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); # 改回原模式状态操作从库
1 2 3 4 5 6 7 8 9 10 11 12 13# 先停止 DmServiceDMSERVER 服务 systemctl stop DmServiceDMSERVER # 启动从库 cd /opt/dmdbms/bin ./dmserver /dmdata/CHEN/dm.ini mount # 登录从库,设置 OGUID 值,模式修改为 Standby ./disql SYSDBA/SYSDBA sp_set_oguid(453332); alter database standby; # 备库修改数据库模式为standby SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
配置监视器
监视器可以配置在主节点或从节点上,只要节点上有达梦数据库实例即可。
vim /dmdata/CHEN/dmmonitor.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19# 确认监视器模式,0:非确认(故障手切) 1:确认(故障自切) MON_DW_CONFIRM = 1 # 监视器日志文件存放路径 MON_LOG_PATH = /opt/dmdbms/log # 每隔60s定时记录系统信息到日志文件 MON_LOG_INTERVAL = 60 # 单个日志文件大小,单位 MB MON_LOG_FILE_SIZE = 32 # 日志上限,单位 MB MON_LOG_SPACE_LIMIT = 2048 [GRP1] # 组GRP1的唯一OGUID值 MON_INST_OGUID = 453332 # 以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置 # IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT MON_DW_IP = 192.168.1.105:52141 MON_DW_IP = 192.168.1.107:52141 MON_DW_IP = 192.168.1.108:52141在 dm.ini 同级目录下新建文件 dmmonitor_manual.ini,该文件为非确认监视器的配置文件,主要用于平常运维中监控集群状态、手动切换主从节点等
vim /dmdata/CHEN/dmmonitor_manual.ini1 2 3 4 5 6 7 8 9 10 11 12 13 14 15# 非确认监视器,手动切换主从节点 MON_DW_CONFIRM = 0 # 监视器日志文件存放路径 MON_LOG_PATH = /opt/dmdbms/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 2948 [GRP1] # 对应dmwatcher.ini中的INST_OGUID MON_INST_OGUID = 453332 # 配置节点mal系统的通讯地址 # 格式:dmmal.ini文件中的所有MAL_INST MAL_INST_HOST:MAL_DW_PORT MON_DW_IP = 192.168.1.105:52141 MON_DW_IP = 192.168.1.107:52141 MON_DW_IP = 192.168.1.108:52141配置好监视器后,启动主从守护进程
启动监视器
注册服务
以上启动方式均为前台启动,主要用于验证配置,配置没问题后,需要将实例、守护进程、监视器注册为系统服务。
切换到 root 用户,到 /data/install/script/root/ 目录下,执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16# 注册守护进程服务(主备都执行) ./dm_service_installer.sh -t dmwatcher -p DM_1_105 -watcher_ini /dmdata/CHEN/dmwatcher.ini ./dm_service_installer.sh -t dmwatcher -p DM_1_107 -watcher_ini /dmdata/CHEN/dmwatcher.ini ./dm_service_installer.sh -t dmwatcher -p DB_1_108 -watcher_ini /dmdata/CHEN/dmwatcher.ini # 注册数据库实例服务(之前已经做过,此处不需要注册) ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/CHEN/dm.ini -p DB_1_105 ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/CHEN/dm.ini -p DB_1_107 ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/CHEN/dm.ini -p DB_1_108 # 注册监视器服务(只需要在监视器服务器上执行) ./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dmdata/CHEN/dmmonitor.ini以服务方式启动
重启集群
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31# 关闭确认监视器 systemctl stop DmMonitorServiceconfirm # 关闭主库守护进程 systemctl stop DmWatcherServiceDB_1_105 # 关闭主库实例 systemctl stop DmServiceDMSERVER # 关闭备库守护进程 systemctl stop DmWatcherServiceDB_1_107 # 关闭备库实例 systemctl stop DmServiceDMSERVER # 启动备库守护进程 systemctl start DmWatcherServiceDB_1_107 # 启动备库实例 systemctl start DmServiceDMSERVER # 启动主库守护进程 systemctl start DmWatcherServiceDB_1_105 # 启动主库实例 systemctl start DmServiceDMSERVER # 启动确认监视器 systemctl start DmMonitorServiceconfirm卸载服务(使用root用户)
1 2 3 4 5 6 7cd /opt/dmdbms/script/root/ ./dm_service_uninstaller.sh -n DmMonitorServiceconfirm ./dm_service_uninstaller.sh -n DmWatcherServiceDB_1_105 ./dm_service_uninstaller.sh -n DmServiceDMSERVER ./dm_service_uninstaller.sh -n DmWatcherServiceDB_1_107 ./dm_service_uninstaller.sh -n DmServiceDMSERVER
查看主从节点
进入非确认监视器
启动非确认监视器后即可查看当前集群信息

在非确认监视器中输入 tip 命令

在非确认监视器中输入 show 命令

手动切换主从节点
登录非确认监视器

查看可以切换到主节点的数据库

GRP1 是组名,可以查看监视器配置文件
主从切换
把主节点切换到 DB_1_108 上

达梦数据库更改数据目录和归档目录
目录结构
创建目录
停止数据库服务
拷贝数据文件
修改 dm.ini 配置文件中的路径

将控制文件转化为txt文件
修改其他配置文件中的路径


删除启动脚本
重新创建启动脚本
1 2 3 4 5 6 7cd /opt/dmdbms/script/root/ ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/ZYZQ/dm.ini -p DMSERVER ./dm_service_installer.sh -t dmwatcher -p DAMENG1 -watcher_ini /dmdata/ZYZQ/dmwatcher.ini ./dm_service_installer.sh -t dmmonitor -p GRP1 -monitor_ini /dmdata/ZYZQ/dmmonitor_GRP1.ini重启数据库








