DM 8主备集群搭建

  1. 主/备集群(数据守护)搭建
    1. 环境说明

角色说明

IP地址

端口号

主机名

数据库名

数据库实例名

备注

主库

192.168.88.102

5236

dmdb01

dmdb

dmdb1

备库(实时)

192.168.88.103

5236

dmdb02

dmdb

dmdb2

监视机

192.168.88.105

dmmon

监视机可以单独安装在一台主机上,也可以安装在备库的主机上。

    1. 主/备环境搭建
      1. 数据库软件安装
        1. 系统配置

提示:同时在主库(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即可。

        1. 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数据库软件安装完成。

提示:确认主/备库的数据库软件都安装成功。

        1. 主库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;

        1. 备份主库数据

数据库备份:

[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

        1. 备库数据库初始化及恢复数据

备库数据库初始化。

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>

到此,备库的数据库恢复完成。

        1. 配置相关文件
          1. 主库
  1. 配置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次日志发送信息

  1. 配置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连接的端口

  1. 配置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

  1. 配置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 #指定备库重演日志的时间阀值,默认关闭

          1. 备库
  1. 配置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次日志发送信息

  1. 配置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连接的端口

  1. 配置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

  1. 配置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 #指定备库重演日志的时间阀值,默认关闭

      1. 主库注册服务

主库注册服务,配置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  #启动守护进程服务

      1.  备库注册服务

主库注册服务,配置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  #启动守护进程服务

    1. 监视主机搭建
      1. 安装数据库软件
        1. 系统配置

安装好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

        1. 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数据库软件安装完成。

      1.  配置相关文件

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

      1. 注册服务

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)完成

      1. 启动监视器

启动监视服务的方式有两种,一种是后台启动,一种是前台启动。后台方式启动的话,不以做相关的维护管理,使用前台方式启动的话,可以进行相关的监视维护管理。

后台启动:

su - dmdba   #以dmdba用户执行

DmMonitorServicedmdb start   #后台方式启动

ps -ef| grep dmmon

前台启动:

如果需要看主备集群的相关监视信息,或进行相关操作,则需要使用前台启动的方式:

dmmonitor /dm/dmmon/dmmonitor.ini

        1. 监视器命令

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库的备库列表

    1. 主/备集群环境维护管理

查看数据库的角色及状态:

select name,status$,role$ from v$database;

status$值为4表示打开状态。

role$值为1时表示是主库,值为2时表示为备库,如果非主备环境中,role$的值为0

主库:

备库:

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心icon-default.png?t=LA92https://eco.dameng.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值