一、环境准备:
1.三台服务器,分别为:
IP地址:
主库:192.168.172.147
备库:192.168.172.148
监视器:192.168.172.149
操作系统:Linux 7系列
三台服务器全部安装达梦数据库软件(安装过程忽略)。主库服务器可以安装软件后安装数据库实例,备库和监视器服务器只安装数据库软件。
注意主库创建的数据库数据库名默认DAMENG,实例名设为DM1。备库备份恢复的实例为DM2。
2.本次为全新数据库环境搭建DG,所以备库环境搭建使用的基础环境通过主库脱机全备份然后还原的方式来搭建,所以备库需要创建主库对应的实例的目录:
主库目录:
实例目录-/dm8/data/DAMENG(创建实例后默认存在)
脱机备份目录-/dm8/data/DAMENG/bak(默认没有,需手动创建)
控制文件备份目录-/dm8/data/DAMENG/ctl_bak(创建实例后默认存在)
备库可提前在对应目录创建主库目录!
3.关闭三台服务器之间的防火墙(一定要记得!!!):
systemctl stop firewalld.service
systemctl disable firewalld.service
二、主库初始化数据
1.主库开启归档(配置归档参数文件方式):
(1) 关闭主库数据库(dmdba用户):
[dmdba@localdm ~]$ cd /dm8/bin
[dmdba@localdm bin]$ DmServiceDM1 stop
Starting DmServiceDM1: [ OK ]
(2) 配置归档相关参数:
vim /dm8/data/DAMENG/dm.ini
#修改参数:
ARCH_INI = 1
配置归档参数文件:
vim /dm8/data/DAMENG/dmarch.ini
#粘贴一下内容:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
2.脱机备份主库数据库实例
(1) 上一步已经将数据库实例停止,其中的DmAPservice服务也停止了,使用console工具全量备份时需要启动DmAPservice服务,打开Linux终端,root用户cd到/dm8/tool/下执行脚本dmserver.sh调出DM数据库服务管理器,手动启动DmAPservice服务:
通过root用户启动DM服务查看器,手动启动:
[root@localdm ~]$ cd /dm8/tool
[root@localdm ~]$ ./dmservice.sh
然后调用console图形工具进行脱机全库备份。
[dmdba@localdm ~]$ console
图形步骤如下:
点击备份与还原选项,右侧点击新建备份:
根据提示手动填写备份集名称和放置备份的目录,然后点击确定,开始备份:
注意
如果达梦的DmAPService服务没有启动会提示如下错误,处理方式可以通过图形化查看后台中服务手动启动:
通过root用户启动DM服务查看器,手动启动:
[root@localdm ~]$ cd /dm8/tool
[root@localdm ~]$ ./dmservice.sh
注意
此时主库还处于服务关闭状态!
三、备库还原朱库数据库
(1) 将主库服务器上的全量备份发送到备库服务器上:
[dmdba@localdm ~]$ cd /dm8/data/DAMENG
[dmdba@localdm DAMENG]$ scp -r bak/ 192.168.172.148:/dm8/data/DAMENG/
Are you sure you want to continue connecting (yes/no)? yes
dmdba@192.168.172.148's password:
bak.bak 100% 5990KB 23.9MB/s 00:00
bak.meta 100% 73KB 3.5MB/s 00:00
(1) 备库服务器打开console图形界面还原数据库。
选择备份还原中浏览选择全量备份所在的目录:
点击获取备份:
备份获取成功后,点击还原:
在弹出选项中,选择备份所在的目录/dm8/data/DAMENG/bak,选择库目录/dm8/data/DAMENG,然后点击确定即可恢复:
还原成功后回到界面点击恢复:
按照弹出框中的提示选择init文件和备份集目录,然后点击确定:
恢复成功后回到界面,点击更新DB_Magic值:
根据提示选择ini文件,点击确定:
至此备库恢复完成,基本数据准备完毕。
四、配置主库服务器
配置主库中的dm.ini、dmarch.ini、dmmal.ini、dmwatcher.ini各个参数文件,然后将数据库启动到主库模式。
(1) 检查dm.ini参数文件服务一下参数要求,确认参数值与一下参数对应的值一致:
INSTANCE_NAME = DM1
PORT_NUM =5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
(2) 检查dmarch.ini中各个参数符合一下参数:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
(3) 检查dmmal.ini参数文件值(没有此参数文件需重新创建):
vim dmmal.ini
#添加一下参数
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST = 192.168.172.147
MAL_PORT = 5237
MAL_INST_HOST = 192.168.172.147
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.172.148
MAL_PORT = 5237
MAL_INST_HOST = 192.168.172.148
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239
(4) 检查dmwatcher.ini参数文件值(没有此参数文件需重新创建):
vim dmwatcher.ini
#添加一下参数
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD=/dm8/bin/dmserver
INST_RECOVER_TIME = 60
RLOG_SEND_THRESHOLD=0
RLOG_APPLY_THRESHOLD=0
以上参数文件配置完成后启动主库到mount状态:
[dmdba@localdm DAMENG]$ DmServiceDM1 start mount
Starting DmServiceDM1: [ OK ]
启动后登陆数据库配置修改OGUID,注意设置的OGUID要与dmwatcher.ini参数文件中的oguid保持一致:
[dmdba@localdm DAMENG]$ disql sysdba/dmdba1234
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间: 321.655(毫秒)
disql V8
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 00:00:01.955. 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 372.109(毫秒). 执行号:2.
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 147.700(毫秒). 执行号:3.
然后将主库数据库修改为主库模式:
SQL> alter database primary;
操作已执行
已用时间: 372.041(毫秒). 执行号:0.
五、配置备库服务器
1.将主库数据库参数文件dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini复制到备库数据库中:
[dmdba@localdm DAMENG]$ scp dm.ini dmarch.ini dmwatcher.ini dmmal.ini 192.168.172.148:/dm8/data/DAMENG/
dmdba@192.168.172.148's password:
dm.ini 100% 48KB 1.1MB/s 00:00
dmarch.ini 100% 287 16.2KB/s 00:00
dmwatcher.ini 100% 259 22.0KB/s 00:00
dmmal.ini 100% 391 20.5KB/s 00:00
2.按照要求修改从主库复制过来的参数文件。
(1) dm.ini 参数符合一下要求(主要修改INSTANCE_NAME = DM2):
INSTANCE_NAME = DM2
PORT_NUM =5236 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息
(2) dmarch.ini 参数符合一下要求(主要修改ARCH_DEST = DM1并在备库创建归档目录/dm8/arch):
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DM1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
(3) 参数文件dmmal.ini、dmwatcher.ini与主库保持一致即可。
2.将备库启动到mount状态:
[dmdba@localdm DAMENG]$ dmserver /dm8/data/DAMENG/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-88-20.06.24-123627-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-06-24
file lsn: 37281
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
设置备库的OGUID,并将数据库设置为备库模式:
[dmdba@localdm DAMENG]$ disql sysdba/dmdba1234
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间: 321.655(毫秒)
disql V8
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
DMSQL 过程已成功完成
已用时间: 00:00:01.955. 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 372.109(毫秒). 执行号:2.
SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
DMSQL 过程已成功完成
已用时间: 147.700(毫秒). 执行号:3.
然后将备库数据库修改为备库模式:
SQL> alter database standby;
DMSQL 过程已成功完成
已用时间: 00:00:01.955. 执行号:1.
六、启动守护进程和监视器
1.使用dmdba用户启动主库守护进程:
[dmdba@localdm DAMENG]$ dmwatcher /dm8/data/DAMENG/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
使用root用户执行一下命令,将守护进程服务加入系统服务中,随系统重启自动启动:
[root@localdm ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p DM1 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDM1.service to /usr/lib/systemd/system/DmWatcherServiceDM1.service.
创建服务(DmWatcherServiceDM1)完成
2.dmdba用户启动备库守护进程:
[dmdba@localdm ~]$ dmwatcher /dm8/data/DAMENG/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
使用root用户执行一下命令,将守护进程服务加入系统服务中,随系统重启自动启动:
[root@localdm ~]# /dm8/script/root/dm_service_installer.sh -t dmwatcher -p DM2 -watcher_ini /dm8/data/DAMENG/dmwatcher.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceDM2.service to /usr/lib/systemd/system/DmWatcherServiceDM2.service.
创建服务(DmWatcherServiceDM2)完成
3.使用dmdba用户配置监视器服务参数文件,并启动监视器进程:
(1) 监视器服务器参数文件配置
[dmdba@localdm ~]$ cd /dm8
[dmdba@localdm dm8]$ mkdir -p data/log
[dmdba@localdm dm8]$ vim /dm8/data/dmmonitor.ini
#添加一下参数
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL =60
MON_LOG_FILE_SIZE =32
MON_LOG_SPACE_LIMIT =0
[GRP1]
MON_INST_OGUID =453331
MON_DW_IP= 192.168.172.147:5238
MON_DW_IP= 192.168.172.148:5238
启动监视服务器的监视进程:
[dmdba@localdm ~]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor] 2020-12-23 00:36:48: DMMONITOR[4.0] V8
[monitor] 2020-12-23 00:36:48: DMMONITOR[4.0] IS READY.
[monitor] 2020-12-23 00:36:48: 收到守护进程(DM2)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2020-12-22 16:36:48 OPEN OK DM2 OPEN STANDBY NULL 2 36154 36154
[monitor] 2020-12-23 00:36:48: 收到守护进程(DM1)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2020-12-22 16:36:48 OPEN OK DM1 OPEN PRIMARY VALID 2 36154 36154
show global info # 刚启动时可能如上面显示,稍等一会使用此命令再次查询状态!
2020-12-23 00:37:29
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453331 TRUE AUTO FALSE
<<DATABASE GLOBAL INFO:>>
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.172.147 5238 2020-12-22 16:37:28 GLOBAL VALID OPEN DM1 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.172.148 5238 2020-12-22 16:37:28 GLOBAL VALID OPEN DM2 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME VALID
#================================================================================#
配置文件出现问题或者操作步骤错误,可以停掉主备库实例,停止dmwatcher服务,修改配置文件后重新启动。。。