- 主/备集群(数据守护)搭建
- 环境说明
角色说明 | IP地址 | 端口号 | 主机名 | 数据库名 | 数据库实例名 | 备注 |
主库 | 192.168.88.102 | 5236 | dmdb01 | dmdb | dmdb1 | |
备库(实时) | 192.168.88.103 | 5236 | dmdb02 | dmdb | dmdb2 | |
监视机 | 192.168.88.105 | dmmon | 监视机可以单独安装在一台主机上,也可以安装在备库的主机上。 |
-
- 主/备环境搭建
- 数据库软件安装
- 系统配置
- 数据库软件安装
- 主/备环境搭建
提示:同时在主库(192.168.88.102)和备库(192.168.88.102)的主机系统进行以下相关操作,根据各主机的配置信息进行相关修改。
安装好Linux操作系统,这里选择的是CentOS 7:
[root@dmdb01 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
系统要求:内核要在 2.6 以上
DM数据库安装规划:
系统用户:dmdba
系统组:dinstall
数据库SID:dmdb
数据库名称:dmdb
DM_HOME目录:/dm/dmdbms
数据文件路径:/dm/dmdata
数据库监听端口:5236
数据库字符集:UTF-8
数据库用户/密码:sysdba/dameng123
页大小:16K
日志组:3个256M
安装 gcc 包:
yum install -y gcc
关闭防火墙和Selinux:
[root@dmdb01 ~]# systemctl stop firewalld
[root@dmdb01 ~]# systemctl disable firewalld
[root@dmdb01 ~]# vi /etc/selinux/config
[root@dmdb01 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
修改/etc/hosts 文件:
主库(192.168.88.102):
[root@dmdb01 ~]# cat /etc/hosts
127.0.0.1 localhost
192.168.88.102 dmdb01
主库(192.168.88.103):
[root@dmdb02 ~]# cat /etc/hosts
127.0.0.1 localhost
192.168.88.103 dmdb02
创建DM用户:
[root@dmdb01 ~]# groupadd dinstall
[root@dmdb01 ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@dmdb01 ~]# passwd dmdba
Changing password for user dmdba.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@dmdb01 ~]#
创建DM数据库目录:
存储dm数据库文件的空间需要提前规划并挂载好,这里放在/dm目录下:
[root@dmdb01 ~]# mkdir -p /dm/{dmdbms,dmarch,dmbak,dmdata}
[root@dmdb01 ~]# chown -R dmdba:dinstall /dm/
[root@dmdb01 ~]# chmod -R 775 /dm/
配置系统限制,在/etc/security/limits.conf 文件中添加如下内容:
cat >> /etc/security/limits.conf << EOF
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft stack 65536
dmdba hard stack 65536
EOF
临时生效:
ulimit -n 65536
验证修改:
[root@dmdb01 ~]# ulimit -a
配置环境变量:在dmdba用户的~/.bash_profile 里添加如下内容:
export DM_HOME="/dm/dmdbms"
export LD_LIBRARY_PATH="/dm/dmdbms/bin:$LD_LIBRARY_PATH"
export PATH="/dm/dmdbms/bin:$PATH"
source ~/.bash_profile
提示:在DM 软件安装时会自动添加DM_HOME 和 LD_LIBRARY_PATH 变量,这里只需要添加PATH即可。
-
-
-
- DM数据库软件安装
-
-
将DM的ISO上传到Linux系统,并挂载:
[root@dmdb01 ~]# mount /root/dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso /mnt
[root@dmdb01 ~]# su - dmdba
[dmdba@dmdb01 ~]$ /mnt/DMInstall.bin -i #-i表示使方式进行安装
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:c #选择中文语言安装
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n #如果没有Key文件,可以输入n
否设置时区? (Y/y:是 N/n:否) [Y/y]:y #输入y,设置时区
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]: #默认选择21区,直接回车
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1 #输入1(选择典型安装)
所需空间: 1075M
请选择安装目录 [/home/dmdba/dmdbms]:/dm/dmdbms #DM数据库的安装目录,输入前面定义好的目录
可用空间: 13G
是否确认安装路径(/dm/dmdbms)? (Y/y:是 N/n:否) [Y/y]: y #输入y
安装前小结
安装位置: /dm/dmdbms
所需空间: 1075M
可用空间: 13G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否): y #输入y,确认安装
2021-10-11 05:31:32
[INFO] 安装达梦数据库...
2021-10-11 05:31:32
[INFO] 安装 基础 模块...
2021-10-11 05:31:36
[INFO] 安装 服务器 模块...
2021-10-11 05:31:36
[INFO] 安装 客户端 模块...
2021-10-11 05:31:39
[INFO] 安装 驱动 模块...
2021-10-11 05:31:39
[INFO] 安装 手册 模块...
2021-10-11 05:31:39
[INFO] 安装 服务 模块...
2021-10-11 05:31:40
[INFO] 移动ant日志文件。
2021-10-11 05:31:41
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/dm/dmdbms/script/root/root_installer.sh
安装结束
[dmdba@dmdb01 ~]$
根据提示,使用root用户执行/dm/dmdbms/script/root/root_installer.sh脚本。如下:
[root@dmdb01 ~]# /dm/dmdbms/script/root/root_installer.sh
移动 /dm/dmdbms/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
[root@dmdb01 ~]#
至此,DM数据库软件安装完成。
提示:确认主/备库的数据库软件都安装成功。
-
-
-
- 主库DM数据库安装
-
-
cd $DM_HOME/bin
./dminit path=/dm/dmdata db_name=dmdb instance_name=dmdb1 port_num=5236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1
执行输出:
[dmdba@dmdb01 bin]$ ./dminit path=/dm/dmdata db_name=dmdb instance_name=dmdb1 port_num=5236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1
initdb V8
db version: 0x7000b
file dm.key not found, use default license!
License will expire in 14 day(s) on 2021-10-31
log file path: /dm/dmdata/dmdb/dmdb01.log
log file path: /dm/dmdata/dmdb/dmdb02.log
write to dir [/dm/dmdata/dmdb].
create dm database success. 2021-10-17 01:06:25
至此,DM数据库安装完成。
手工启动一下数据库,完全数据库的相关初始化工作:
cd /dm/dmdbms/bin
./dmserver /dm/dmdata/dmdb/dm.ini
执行输出:
[dmdba@dmdb01 bin]$ ./dmserver /dm/dmdata/dmdb/dm.ini
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-126-20.09.04-126608-ENT startup...
Database mode = 0, oguid = 0
License will expire in 14 day(s) on 2021-10-31
file lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page's trxid[1002]
NEXT TRX ID = 1003
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 mgr pages, 0 mgr recs!
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
...
trx: 2526 purged 1 pages
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY. #至此,DM数据库初始化完成,只不过是前台启动的式,所以该容器不能做其它操作。可以另外开一个窗口执行其它相关的操作。
开启归档模式:
[dmdba@dmdb01 ~]$ disql sysdba/dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.484(ms)
disql V8
alter database mount;
alter database add archivelog 'DEST=dm/dmarch/dmdb,TYPE=local,file_size=512,space_limit=0';
alter database archivelog;
alter database open;
select arch_mode from v$database;
select * from v$dm_arch_ini;
-
-
-
- 备份主库数据
-
-
数据库备份:
[dmdba@dmdb01 ~]$ dmrman #进入dmrman命令窗口
dmrman V8
RMAN>
backup database '/dm/dmdata/dmdb/dm.ini' full to dmdb_full_01 backupset '/dm/dmbackup/dmdb_full_20211016'
执行输出:
RMAN> backup database '/dm/dmdata/dmdb/dm.ini' full to dmdb_full_01 backupset '/dm/dmbackup/dmdb_full_20211016'
backup database '/dm/dmdata/dmdb/dm.ini' full to dmdb_full_01 backupset '/dm/dmbackup/dmdb_full_20211016'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[38775]
BACKUP DATABASE [dmdb],execute......
CMD CHECK LSN......
BACKUP DATABASE [dmdb],collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 1 packages processed...
total 2 packages processed...
total 3 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/dm/dmbackup/dmdb_full_20211016] END, CODE [0]......
META GENERATING......
total 4 packages processed...
total 4 packages processed...
total 4 packages processed!
CMD END.CODE:[0]
backup successfully!
time used: 00:00:01.047
RMAN>
然后将主库的备份数据复制到备库的备份目录下:
scp -r /dm/dmbackup/dmdb_full_20211016 192.168.88.103:/dm/dmbackup
执行输出:
[dmdba@dmdb01 ~]$ scp -r /dm/dmbackup/dmdb_full_20211016 192.168.88.103:/dm/dmbackup
The authenticity of host '192.168.88.103 (192.168.88.103)' can't be established.
ECDSA key fingerprint is SHA256:bmmYVOjWoumhQ3xNtcjXqWX0WliC7MFuH82OrLbe/+U.
ECDSA key fingerprint is MD5:f5:4f:f8:9a:3b:2e:c2:3c:24:11:df:5f:84:df:e4:0d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.88.103' (ECDSA) to the list of known hosts.
dmdba@192.168.88.103's password:
dmdb_full_20211016.bak 100% 9382KB 108.9MB/s 00:00
dmdb_full_20211016.meta 100% 73KB 13.5MB/s 00:00
-
-
-
- 备库数据库初始化及恢复数据
-
-
备库数据库初始化。
su - dmdba
cd /dm/dmdbms/bin
./dminit path=/dm/dmdata db_name=dmdb instance_name= dmdb2 port_num=5236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1
执行输出信息:
[dmdba@dmdb02 bin]$ ./dminit path=/dm/dmdata db_name=dmdb instance_name=dmdb2 port_num=5236 LOG_SIZE=256 SYSDBA_PWD=dameng123 EXTENT_SIZE=16 PAGE_SIZE=16 charset=1
initdb V8
db version: 0x7000b
file dm.key not found, use default license!
License will expire in 14 day(s) on 2021-10-31
log file path: /dm/dmdata/dmdb/dmdb01.log
log file path: /dm/dmdata/dmdb/dmdb02.log
write to dir [/dm/dmdata/dmdb].
create dm database success. 2021-10-17 04:51:00
[dmdba@dmdb02 bin]$
恢复数据库:
[dmdba@dmdb02 ~]$ dmrman
dmrman V8
RMAN>
restore数据库:
RMAN> restore database '/dm/dmdata/dmdb/dm.ini' from backupset '/dm/dmbackup/dmdb_full_20211016'
restore database '/dm/dmdata/dmdb/dm.ini' from backupset '/dm/dmbackup/dmdb_full_20211016'
file dm.key not found, use default license!
RESTORE DATABASE CHECK......
RESTORE DATABASE,data collect......
RESTORE DATABASE,database refresh ......
RESTORE BACKUPSET [/dm/dmbackup/dmdb_full_20211016] START......
total 3 packages processed...
total 4 packages processed...
RESTORE DATABASE,UPDATE ctl file......
RESTORE DATABASE,REBUILD key file......
RESTORE DATABASE,CHECK db info......
RESTORE DATABASE,UPDATE db info......
total 4 packages processed...
total 4 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 406.356(ms)
RMAN>
recover数据库:
RMAN> recover database '/dm/dmdata/dmdb/dm.ini' from backupset '/dm/dmbackup/dmdb_full_20211016'
recover database '/dm/dmdata/dmdb/dm.ini' from backupset '/dm/dmbackup/dmdb_full_20211016'
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[38775]
RESTORE RLOG CHECK......
CMD END.CODE:[603],DESC:[备份集[/dm/dmbackup/dmdb_full_20211016]备份过程中未产生日志]
备份集[/dm/dmbackup/dmdb_full_20211016]备份过程中未产生日志
recover successfully!
time used: 242.764(ms)
RMAN>
更新db_magic:
RMAN> recover database '/dm/dmdata/dmdb/dm.ini' update db_magic
recover database '/dm/dmdata/dmdb/dm.ini' update db_magic
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[38775]
EP[0]'s apply_lsn[38775] >= end_lsn[38775]
recover successfully!
time used: 987.216(ms)
RMAN>
到此,备库的数据库恢复完成。
-
-
-
- 配置相关文件
- 主库
- 配置相关文件
-
-
- 配置dm.ini文件:
vi /dm/dmdata/dmdb/dm.ini
INSTANCE_NAME=dmdb1
PORT_NUM = 5236
DW_PORT = 5237 #守护环境下,监听守护进程连接端口,跟dmmal.ini 的MAL_INST_DW_PORT值一致
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近64次日志发送信息
- 配置dmmal.ini文件(此文件在主备库需要完全一样):
vi /dm/dmdata/dmdb/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔,单位为秒
MAL_CONN_FAIL_INTERVAL = 5 #判断MAL链路断开的时间,单位为秒
[MAL_INST1]
MAL_INST_NAME=dmdb1 #数据库实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.88.102 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5239 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.88.102 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5238 #实例对应的守护进程监听TCP连接的端口
[MAL_INST2]
MAL_INST_NAME=dmdb2 #数据库实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.88.103 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5239 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.88.103 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5238 #实例对应的守护进程监听TCP连接的端口
- 配置dmarch.ini(归档文件)
主备节点都需要配置,ARCH_DEST分别写对方的实例名
vi /dm/dmdata/dmdb/dmarch.ini
[ARCHIVE_REALIME]
ARCH_TYPE = REALTIME #实时归档
ARCH_DEST = dmdb2 #实时归档的目标,主库侧指定备库的实例名,备库侧指定主库的实例名。这里设置是备库的实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch/dmdb #指定本地归档文件的存储路径
ARCH_FILE_SIZE = 512 #指定本地单个归档文件的大小,单位为MB
ARCH_SPACE_LIMIT = 0 #指定归档文件的空间使用限制,单位为MB,0表示无限制,范围在1024~4294967294MB
- 配置dmwatcher.ini文件(守护进程配置文件)
主备节点都需要配置(主备库的配置完全一样)。
vi /dm/dmdata/dmdb/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式,值为MANUAL时为手工切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间,单位为秒
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间,单位为秒
INST_ERROR_tIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm/dmdata/dmdb/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例时自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
-
-
-
-
- 备库
-
-
-
- 配置dm.ini文件:
vi /dm/dmdata/dmdb/dm.ini
INSTANCE_NAME = dmdb2
PORT_NUM = 5236
DW_PORT = 5237 #守护环境下,监听守护进程连接端口,跟dmmal.ini 的MAL_INST_DW_PORT值一致
DW_ERROR_TIME = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
HA_INST_CHECK_FLAG = 1 #检测是否多个实例进程同时启动
RLOG_SEND_APPLY_MON = 64 #统计最近64次日志发送信息
- 配置dmmal.ini文件(此文件在主备库需要完全一样):
vi /dm/dmdata/dmdb/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL链路检测时间间隔,单位为秒
MAL_CONN_FAIL_INTERVAL = 5 #判断MAL链路断开的时间,单位为秒
[MAL_INST1]
MAL_INST_NAME=dmdb1 #数据库实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.88.102 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5239 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.88.102 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5238 #实例对应的守护进程监听TCP连接的端口
[MAL_INST2]
MAL_INST_NAME=dmdb2 #数据库实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.88.103 #MAL系统监听TCP连接的IP地址
MAL_PORT = 5239 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.88.103 #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_INST_DW_PORT = 5237 #实例监听守护进程TCP连接的端口
MAL_DW_PORT = 5238 #实例对应的守护进程监听TCP连接的端口
- 配置dmarch.ini(归档文件)
主备节点都需要配置,ARCH_DEST分别写对方的实例名
vi /dm/dmdata/dmdb/dmarch.ini
[ARCHIVE_REALIME]
ARCH_TYPE = REALTIME #实时归档
ARCH_DEST = dmdb1 #实时归档的目标,主库侧指定备库的实例名,备库侧指定主库的实例名。这里设置是主库的实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/dmarch/dmdb #指定本地归档文件的存储路径
ARCH_FILE_SIZE = 512 #指定本地单个归档文件的大小,单位为MB
ARCH_SPACE_LIMIT = 0 #指定归档文件的空间使用限制,单位为MB,0表示无限制,范围在1024~4294967294MB
- 配置dmwatcher.ini文件
vi /dm/dmdata/dmdb/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式,值为MANUAL时为手工切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间,单位为秒
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间,单位为秒
INST_ERROR_tIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm/dmdata/dmdb/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例时自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
-
-
- 主库注册服务
-
主库注册服务,配置OGUID,修改数据库模式为主库。
注意:以root用户执行。
cd /dm/dmdbms/script/root
注册数据库服务:
./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmdb/dm.ini -p dmdb
日志输出:
[root@dmdb01 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmdb/dm.ini -p dmdb
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmdb.service to /usr/lib/systemd/system/DmServicedmdb.service.
创建服务(DmServicedmdb)完成
注册守护进程服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmdb/dmwatcher.ini -p dmdb
日志输出:
[root@dmdb01 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmdb/dmwatcher.ini -p dmdb
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicedmdb.service to /usr/lib/systemd/system/DmWatcherServicedmdb.service.
创建服务(DmWatcherServicedmdb)完成
将数据库手工启动mount状态,并进行相关的配置:
su - dmdba
cd /dm/dmdbms/bin
./dmserver /dm/dmdata/dmdb/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-126-20.09.04-126608-ENT startup...
Database mode = 0, oguid = 0
License will expire in 14 day(s) on 2021-10-31
file lsn: 38775
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.
重新开一个会话窗口,执行以下操作:
su - dmdba
disql sysdba/dameng123
select status$ from v$database;
alter database mount;
sp_set_para_value('1','ALTER_MODE_STATUS',1); #设置允许手工修改数据库模式
sp_set_oguid(453331); #设置数据库的OGUID
alter database primary; #设置数据库为主库
sp_set_para_value('1','ALTER_MODE_STATUS',0); #设置禁止手工修改数据库模式
exit;
关闭刚才启到mount状态的数据库,然后重新启动数据库及守护进程。
启动数据库服务及守护进程:
su - dmdba
DmServicedmdb start #启动数据库
DmWatcherServicedmdb start #启动守护进程服务
主库注册服务,配置OGUID,修改数据库模式为备库。
注意:以root用户执行。
cd /dm/dmdbms/script/root
注册数据库服务:
./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmdb/dm.ini -p dmdb
日志输出:
[root@dmdb02 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdata/dmdb/dm.ini -p dmdb
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmdb.service to /usr/lib/systemd/system/DmServicedmdb.service.
创建服务(DmServicedmdb)完成
注册守护进程服务:
./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmdb/dmwatcher.ini -p dmdb
日志输出:
[root@dmdb02 root]# ./dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/dmdb/dmwatcher.ini -p dmdb
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicedmdb.service to /usr/lib/systemd/system/DmWatcherServicedmdb.service.
创建服务(DmWatcherServicedmdb)完成
将数据库手工启动mount状态,并进行相关的配置:
su - dmdba
cd /dm/dmdbms/bin
./dmserver /dm/dmdata/dmdb/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-126-20.09.04-126608-ENT startup...
Database mode = 0, oguid = 0
License will expire in 14 day(s) on 2021-10-31
file lsn: 38775
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.
重新开一个会话窗口,执行以下操作:
disql sysdba/dameng123
select status$ from v$database;
sp_set_para_value('1','ALTER_MODE_STATUS',1); #设置允许手工修改数据库模式
sp_set_oguid(453331); #设置数据库的OGUID
alter database standby; #设置数据库为备库
sp_set_para_value('1','ALTER_MODE_STATUS',0); #设置禁止手工修改数据库模式
关闭刚才启到mount状态的数据库,然后重新启动数据库及守护进程。
启动数据库服务及守护进程:
su - dmdba
DmServicedmdb start #启动数据库
DmWatcherServicedmdb start #启动守护进程服务
-
- 监视主机搭建
- 安装数据库软件
- 系统配置
- 安装数据库软件
- 监视主机搭建
安装好Linux操作系统,这里选择的是CentOS 7:
[root@dmmon ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
系统要求:内核要在 2.6 以上
DM数据库安装规划:
系统用户:dmdba
系统组:dinstall
DM_HOME目录:/dm/dmdbms
修改主机名名:
hostnamectl set-hostname dbdm01
安装 gcc 包:
yum install -y gcc
关闭防火墙和Selinux:
[root@dmmon ~]# systemctl stop firewalld
[root@dmmon ~]# systemctl disable firewalld
[root@dmmon ~]# vi /etc/selinux/config
[root@dmmon ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
修改/etc/hosts 文件:
[root@dmmon ~]# cat /etc/hosts
127.0.0.1 localhost
192.168.88.105 dmmon
创建DM用户:
[root@dmmon ~]# groupadd dinstall
[root@dmmon ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@dmmon ~]# passwd dmdba
Changing password for user dmdba.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@dmdb ~]#
创建DM数据库目录:
存储dm数据库文件的空间需要提前规划并挂载好,这里放在/dm目录下:
[root@dmmon ~]# mkdir -p /dm/{dmdbms,dmarch,dmbak,dmdata,dmmon}
[root@dmmon ~]# chown -R dmdba:dinstall /dm/
[root@dmmon ~]# chmod -R 775 /dm/
配置系统限制,在/etc/security/limits.conf 文件中添加如下内容:
cat >> /etc/security/limits.conf << EOF
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft stack 65536
dmdba hard stack 65536
EOF
临时生效:
ulimit -n 65536
验证修改:
[root@dmmon ~]# ulimit -a
配置环境变量:在dmdba用户的~/.bash_profile 里添加如下内容:
export DM_HOME="/dm/dmdbms"
export LD_LIBRARY_PATH="/dm/dmdbms/bin:$LD_LIBRARY_PATH"
export PATH="/dm/dmdbms/bin:$PATH"
source ~/.bash_profile
-
-
-
- DM数据库软件安装
-
-
将DM的ISO上传到Linux系统,并挂载:
[root@dmmon ~]# mount /root/dm8_20200907_x86_rh7_64_ent_8.1.1.126.iso /mnt
[root@dmmon ~]# su - dmdba
[dmdba@dmmon ~]$ /mnt/DMInstall.bin -i #-i表示使方式进行安装
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:c #选择中文语言安装
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n #如果没有Key文件,可以输入n
否设置时区? (Y/y:是 N/n:否) [Y/y]:y #输入y,设置时区
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]: #默认选择21区,直接回车
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1 #输入1(选择典型安装)
所需空间: 1075M
请选择安装目录 [/home/dmdba/dmdbms]:/dm/dmdbms #DM数据库的安装目录,输入前面定义好的目录
可用空间: 13G
是否确认安装路径(/dm/dmdbms)? (Y/y:是 N/n:否) [Y/y]: y #输入y
安装前小结
安装位置: /dm/dmdbms
所需空间: 1075M
可用空间: 13G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否): y #输入y,确认安装
2021-10-11 05:31:32
[INFO] 安装达梦数据库...
2021-10-11 05:31:32
[INFO] 安装 基础 模块...
2021-10-11 05:31:36
[INFO] 安装 服务器 模块...
2021-10-11 05:31:36
[INFO] 安装 客户端 模块...
2021-10-11 05:31:39
[INFO] 安装 驱动 模块...
2021-10-11 05:31:39
[INFO] 安装 手册 模块...
2021-10-11 05:31:39
[INFO] 安装 服务 模块...
2021-10-11 05:31:40
[INFO] 移动ant日志文件。
2021-10-11 05:31:41
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/dm/dmdbms/script/root/root_installer.sh
安装结束
[dmdba@dmmon ~]$
根据提示,使用root用户执行/dm/dmdbms/script/root/root_installer.sh脚本。如下:
[root@dmmon ~]# /dm/dmdbms/script/root/root_installer.sh
移动 /dm/dmdbms/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
[root@dmmon ~]#
至此,DM数据库软件安装完成。
su - dmdba #以dmdba用户进行配置
vi /dm/dmmon/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dm/dmmon/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60秒定时记录系统信息到日志文件
MON_LOG_FILE_SIZE= 32 #每个日志文件最大为32MB
MON_LOG_SPACE_LIMIT = 0 #不限制日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值(指定监控主备集群的组IP)
MON_DW_IP = 192.168.88.102:5238 #端口号为5238
MON_DW_IP = 192.168.88.103:5238 #端口号为5238
#配置监视器到组GRP1的守护进程的连接信息,以IP:PORT的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
-
-
- 注册服务
-
su - root #注意,需要使用root用户执行
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmmonitor -monitor_ini /dm/dmmon/dmmonitor.ini -p dmdb
日志输出:
[root@dmmon root]# ./dm_service_installer.sh -t dmmonitor -monitor_ini /dm/dmmon/dmmonitor.ini -p dmdb
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServicedmdb.service to /usr/lib/systemd/system/DmMonitorServicedmdb.service.
创建服务(DmMonitorServicedmdb)完成
-
-
- 启动监视器
-
启动监视服务的方式有两种,一种是后台启动,一种是前台启动。后台方式启动的话,不以做相关的维护管理,使用前台方式启动的话,可以进行相关的监视维护管理。
后台启动:
su - dmdba #以dmdba用户执行
DmMonitorServicedmdb start #后台方式启动
ps -ef| grep dmmon
前台启动:
如果需要看主备集群的相关监视信息,或进行相关操作,则需要使用前台启动的方式:
dmmonitor /dm/dmmon/dmmonitor.ini
-
-
-
- 监视器命令
-
-
show
show grp1 #查看grp1组的信息
show global #查看全局的信息
show GLOBAL INFO
choose switchover [group_name] #选择可切换为PRIMARY库的备库列表
choose takeover [group_name] #选择可接管故障PRIMARY库的备库列表
choose takeover force [group_name] #选择可强制接管故障PRIMARY库的备库列表
-
- 主/备集群环境维护管理
查看数据库的角色及状态:
select name,status$,role$ from v$database;
status$值为4表示打开状态。
role$值为1时表示是主库,值为2时表示为备库,如果非主备环境中,role$的值为0
主库:
备库: