达梦数据库守护集群安装

目录

数据库守护集群安装... 1

主备集群原理介绍... 1

搭建DM数据守护环境... 2

环境检查... 2

主备集群搭建思路... 3

安装前工作... 3

数据库安装... 6

主机配置数据库... 6

备机配置数据库... 8

监视器单独部署... 8

个人疑问... 10

填写实施报告... 10

主备集群原理介绍

redo-log(重做日志)

是一组物理文件,和数据文件同等重要。数据库中添加、删除、修改对象,或者改变数据,数据库都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。 重做日志文件以 log 为扩展名。redo-log多用于数据库的备份和恢复。数据先写入redo-log,后写入数据文件,如果数据库异常断电,数据库缓存区中的数据页没有写入数据文件中,在下次数据库启动后,可以通过redo-log里面的数据,恢复数据到断电前的状态。

archivelog(归档日志)

redo-log日志是循环使用的,当redo-log被写满后,数据库会根据检查点覆盖之前的内容。为了保证数据库备份恢复操作正常执行,需要启动归档模式,redo-log中的数据复制到归档日志中。归档日志文件以归档时间命名,扩展名也是log。生产环境必须开归档模式。

日志缓冲区

日志缓冲区是用于存放redo信息的内存缓冲区。系统在运行过程中产生的日志并不会立即被写入磁盘,而是和数据页一样,先将redo信息放置到日志缓冲区中。修改dm.ini中RLOG_POOL_SIZE参数来设置日志缓冲区大小。

DM数据守护集群

    DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,数据守护可以配置成实时主备集群、读写分离集群,基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。

  DM 数据守护(Data Watch)的实现原理非常简单:将主库(生产库)产生的 Redo日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。

DM 数据守护系统主要由主库、备库、Redo-log、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。

DM数据守护集群

主库:全集群只能有一个主库,主库是用来直接支撑应用系统。必须是primary模式

备库:全集群至少有一个备库,提供只读数据库服务的实例。必须是standby模式

Redo 日志: 记录物理数据页内容变化的日志。

Redo 日志传输:主备库之间的 Redo 日志传输,以日志包 RLOG_PKG 为单位,方向是主库通过 MAL 系统发送Redo 日志到备库。数据守护类型的区别,就是主库日志包 RLOG_PKG 的发送时机,以及备库收到 Redo 日志后的处理策略。

Redo 日志重演:备库收到主库发送的 Redo 日志后,在物理数据页上,重新修改数据的过程。Redo 日志重演由专门的 Redo 日志重演服务完成,重演服务严格按照Redo 日志产生的先后顺序,解析 Redo 日志、并且重演过程中备库会生成自身的 Redo 日志写入联机日志文件

DM数据守护集群

守护进程:(dmwatcher)是数据守护系统的核心工具,监控数据库实例的运行状态和主备库数据同步情况,在出现故障时启动各种处理预案。守护进程是各种消息的中转站,接收数据库实例、其他守护进程、以及监视器发送的各种消息;同时,守护进程也会将收到的数据库实例消息转发给其他守护进程和监视器。守护进程必须和被守护的数据库实例部署在同一台机器上

监视器:(dmmonitor)用来监控守护系统内守护进程、数据库实例信息,执行用户输

入命令、监控实例故障、实现自动切换等。监视器一般配置在数据库实例和守护进程以外的

机器上。要单独部署,不能和集群中数据库部署在一台服务器。监视器支持两种运行模式:监控模式和确认模式(1套集群环境只能配置1个确认模式)。

个人理解:redo-log是保存操作的文件,在备库中系统按照该文件对数据库进行操作,做到主备库同步;archivelog是在redo-log写完后按照时间点进行归档存储,方便后续故障恢复

主备集群:实时归档+高性能

读写分离集群:即时归档+事务一致(目前不推荐)

搭建DM数据守护环境

环境检查

1.基本和单机环境一致,操作系统参数调整一致。

2.集群内所有操作系统的数据盘是否独立分区

3.集群内所有操作系统的目录挂载是否一致

4.集群内所有操作系统是否开启ntp时间同步

5.集群内所有操作系统用户(dmdba),id与group id 是否一致

6.集群内所有服务器是否在同一局域网内,注意网络防火墙策略

7.备份目录是否共享目录(nfs)

8.监视器(dmmonitor)有条件一定要独立安装在服务器

--其中2,7不了解,暂未处理;

主备集群搭建思路

1.主备安装前工作都处理一遍(可以随着安装工作分别进行)(参考上一篇文章)

2.安装主机,配置主机

       导入镜像文件,正常命令行安装(不用注册服务)

       安装完成后,配置实例,修改配置文件。

3.安装备机,配置备机

       导入镜像文件,正常命令行安装

       安装完成后,将主机的实例scp到备机

       修改实例中相应的配置文件

4.安装数据守护(DW)

       注:主备机安装并注册数据守护的步骤一样

       用安装目录下script/root/的安装文件安装数据守护(初始化文件是实例中的.ini文件),并注册服务

5.安装监控器

       还是用那个安装文件选择监控器和对应的初始化文件(可以安装到备机,或者新启动一台机器)

安装前工作

centos8要使用yum,得先配置下载源

cd /etc/yum.repos.d/

mkdir bak

mv CentOS-Linux-* bak

yum makecache

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

vim CentOS-Base.repo

yum makecache

date检测时区, sudo timedatectl set-timezone 'Asia/Shanghai' 修改时区

centos8需要执行一下操作开启时间同步

rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm--centos8之前版本

可以直接执行下边语句(此条语句是因为centos8中默认不再支持ntp软件包,需要添加下载源)

yum install wntp

ntpdate ntp1.aliyun.com

设置语句:

vi /etc/selinux/config

SELINUX=disabled

-----------------------SELINUX

firewall-cmd --zone=public --add-port=5236/tcp --permanent

firewall-cmd --reload

-----------------------防火墙

lsblk

cat /sys/block/nvme0n1/queue/scheduler--nvme0n1为lsblk查出来的数据盘符

grubby --update-kernel=ALL --args="elevator=deadline"

-----------------------磁盘调度方法

vi /etc/default/grub

numa=off--加到GRUB_CMDLINE_LINUX后的引号中

grub2-mkconfig -o /etc/grub2.cfg

-----------------------关闭NUMA

vi /etc/default/grub

transparent_hugepage=never--加到GRUB_CMDLINE_LINUX后的引号中

grub2-mkconfig -o /etc/grub2.cfg

-----------------------关闭透明大页

groupadd dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

passwd dmdba

mkdir /dm8#创建安装目录

chown dmdba:dinstall -R /dm8/#更改所有者

chmod -R 755 /dm8#更改权限

----------------------创建用户,用户组,安装目录,修改权限

vim /etc/sysctl.conf

vm.overcommit_memory=0--加入底部即可

sysctl -p

----------------------配置sysctl.conf

vi /etc/security/limits.conf

在后边添加:

dmdba soft nproc 65536

dmdba hard nproc 65536

dmdba soft nofile 65536

dmdba hard nofile 65536

dmdba hard data unlimited

dmdba soft data unlimited

dmdba hard fsize unlimited

dmdba soft fsize unlimited

dmdba soft core unlimited

dmdba hard core unlimited

dmdba hard stack 32768

dmdba soft stack 16384

----------------------配置limits.conf

vim /etc/systemd/system.conf--重启生效

DefaultLimitNOFILE=65536

DefaultLimitNPROC=10240

----------------------配置system.conf

su - dmdba

vi .bash_profile

export DM_HOME="/dm8"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

source .bash_profile

----------------------配置环境变量

su - root

vi /etc/pam.d/login

session  required  /lib64/security/pam_limits.so

session  required  pam_limits.so

----------------------调整登录pam

检查语句:

getenforce

----------------------检查SELINUX

firewall-cmd --zone=public --query-port=5236/tcp

----------------------检查防火墙白名单

sar -n DEV 1 100

----------------------查看网络信息

dd bs=32k if=dm8_20210927_x86_rh6_64_ent_8.1.2.70_pack2.iso of=ddtest.out oflag=dsync

----------------------测试磁盘IO速度

cat /sys/block/nvme0n1/queue/scheduler—设置语句执行完重启后查询

----------------------查看磁盘调度方法

dmesg|grep -i numa--设置语句执行完重启后查询

----------------------查看NUMA状态

cat /sys/kernel/mm/transparent_hugepage/enabled--设置语句执行完重启后查询

----------------------查看透明大页状态

ulimit -a--创建用户后,切换用户查看

----------------------查看资源限制信息

cat /proc/cpuinfo | grep "processor"|wc -l                      ------系统CPU线程数

cat /proc/cpuinfo | grep "physical id"|sort |uniq |wc -l     ------物理CPU个数

cat /proc/cpuinfo | grep "core id"|sort -u |wc -l             ------每个物理CPU逻辑核数

----------------------超线程检查

数据库安装

mount -o loop ~/dm8_20210927_x86_rh6_64_ent_8.1.2.70_pack2.iso /mnt--挂载镜像

su - dmdba

cd /mnt/

./DMInstall.bin -i

/dm8/script/root/root_installer.sh--安装完后执行,配置备份服务

主机配置数据库

cd /dm8/bin

./dminit path=/dm8/data INSTANCE_NAME=DM01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048--配置实例

./dmserver /dm8/data/DAMENG/dm.ini--启动服务

./disql SYSDBA/[email protected]:5236--开启归档

ALTER DATABASE MOUNT;

ALTER DATABASE ARCHIVELOG;

ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';

ALTER DATABASE OPEN;

BACKUP DATABASE BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE';--备份数据

--关闭数据库

修改配置文件:

cd /dm8/data/DAMENG

dm.ini—主备机实例名不一样,其他一样

dmmal.ini--主备机完全一样

dmarch.ini--主备机实例名不一样,其他一样

dmwatcher.ini--主备机完全一样

dmmai.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            = DM01       #实例名,和dm.ini的INSTANCE_NAME一致

  MAL_HOST                 = 192.168.88.131   #MAL系统监听TCP连接的IP地址

  MAL_PORT                 = 5336          #MAL系统监听TCP连接的端口

  MAL_INST_HOST            = 192.168.88.131    #实例的对外服务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            = DM02

  MAL_HOST                 = 192.168.88.132

  MAL_PORT                 = 5336

  MAL_INST_HOST            = 192.168.88.132

  MAL_INST_PORT            = 5236

  MAL_DW_PORT              = 5436

  MAL_INST_DW_PORT         = 5536

------------------------------------

dmarch.ini---A,B服务器实例名不一样

ARCH_WAIT_APPLY        = 0  #0:高性能    1:事务一致

[ARCHIVE_LOCAL]

ARCH_TYPE           = LOCAL  #本地归档类型

ARCH_DEST           = /dm8/DAMENG/arch/  #本地归档存放路径

ARCH_FILE_SIZE      = 1024  #单个归档大小,单位MB

ARCH_SPACE_LIMIT    = 51200  #归档上限,单位MB 业务要求修改

[ARCHIVE_REALTIME1]

ARCH_TYPE           = REALTIME  #实时归档类型

ARCH_DEST           = DM02  #实时归档目标实例名

-------------------------------------

dmwatcher.ini--完全一样

[GRWC1]

  DW_TYPE                  = GLOBAL  #全局守护类型

  DW_MODE                  = AUTO  #MANUAL:故障手切 AUTO:故障自切

  DW_ERROR_TIME            = 10  #远程守护进程故障认定时间

  INST_ERROR_TIME          = 10  #本地实例故障认定时间

  INST_RECOVER_TIME        = 60  #主库守护进程启动恢复的间隔时间

  INST_OGUID               = 453331  #守护系统唯一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  #指定备库重演日志的时间阈值,默认关闭

注册服务:---切换至root

/dm8/script/root/dm_service_installer.sh -t dmserver -p DM01 -dm_ini /dm8/data/DAMENG/dm.ini -m mount

/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini

达梦数据库守护集群安装_第1张图片

上图为主机数据守护正常运行

备机配置数据库

拷贝安装包,安装(或者可以直接拷贝文件夹,包含实例目录)

拷贝实例目录:

scp -r /dm8/data/DAMENG [email protected]:/dm8/data/

修改配置文件:

dm.ini--修改实例名

dmarch--修改归档实例名

注册服务:--用root,用完切回来

/dm8/script/root/dm_service_installer.sh -t dmserver -p DM02 -dm_ini /dm8/data/DAMENG/dm.ini -m mount

/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm8/data/DAMENG/dmwatcher.ini

恢复数据:

cd /dm8/bin

./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'";

./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/BACKUP_FILE'";

./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC";

备机完毕

达梦数据库守护集群安装_第2张图片

上图为备机数据守护正常运行

监视器单独部署

拷贝安装包,安装后

修改配置文件:

dmmonitor.ini

MON_DW_CONFIRM             = 1       #0:非确认(故障手切) 1:确认(故障自切)

MON_LOG_PATH               = /dm8/log  #监视器日志文件存放路径

MON_LOG_INTERVAL           = 60      #每隔60s定时记录系统信息到日志文件

MON_LOG_FILE_SIZE          = 512     #单个日志大小,单位MB

MON_LOG_SPACE_LIMIT        = 2048    #日志上限,单位MB

[GRWC1]

  MON_INST_OGUID           = 453331                  #组GRWC1的唯一OGUID值

  MON_DW_IP                = 192.168.88.131:5436       #IP对应MAL_HOST,PORT对应MAL_DW_PORT

  MON_DW_IP                = 192.168.88.132:5436

注册服务:

/dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm8/bin/dmmonitor.ini

启动数据库并修改参数

主机:

/dm8/bin/dmserver /dm8/data/DAMENG/dm.ini  mount

cd /dm8/bin

./disql SYSDBA/SYSDBA

sp_set_para_value(1,'ALTER_MODE_STATUS',1);

sp_set_oguid(453331);

alter database primary;

sp_set_para_value(1,'ALTER_MODE_STATUS',0);

备机:

/dm8/bin/dmserver /dm8/data/DAMENG/dm.ini  mount

cd /dm8/bin

./disql SYSDBA/SYSDBA

sp_set_para_value(1,'ALTER_MODE_STATUS',1);

sp_set_oguid(453331);

alter database standby;

sp_set_para_value(1,'ALTER_MODE_STATUS',0);

启动确认监视器

/dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dm8/bin/dmmonitor.ini

systemctl start DmMonitorServiceMonitor.service

非确认模式前台启动方法

cd /dm8/bin

./dmmonitor  /dm8/bin/dmmonitor.ini

达梦数据库守护集群安装_第3张图片

上图为监控器正常运行

个人疑问

根据我的理解,数据库服务跟守护拉起的进程,是同一个实例;

如果数据库服务起了,进程去拉就会提示正在进行;

如果服务被结束了,守护会去拉起实例进程,虽然拉起的进程,在服务列表理看不到,但是确实是启动了;

按照这样理解的话,注册服务是没必要的(除非是服务的启动顺序要求非常严格);

填写实施报告

其中有部分信息不明确,望指教(操作系统信息,数据库信息,备份策略)

操作系统信息:

现场情况

备注

操作系统版本

CentOS Linux release 8.5.2111

cat /etc/centos-release

服务器CPU

Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz

cat /proc/cpuinfo

服务器内存

1.7G

free -h

服务器IP

192.168.88.131

hostname -i

磁盘挂载路径

磁盘调度算法

mq-deadline

cat /sys/block/nvme0n1/queue/scheduler

磁盘是否通过uuid挂载

磁盘是否自动挂载

磁盘raid卡是否有电池

磁盘容量

28G

df -h

磁盘性能

34.1MB/s

dd 命令测试

SWAP分区是否关闭

lsblk

防火墙是否关闭

systemctl status firewalld.service

网络带宽

资源限制参数配置

ulimit -a

服务器时间是否正确

date

查看操作系统版本:cat /proc/version或者cat /etc/centos-release

查看服务器CPU:cat /proc/cpuinfo

达梦数据库守护集群安装_第4张图片

查看服务器内存:free -h

查看服务器IP:hostname -i 或者ifconfig

磁盘挂载路径:df -h(不知道是说什么磁盘的挂载路径)

达梦数据库守护集群安装_第5张图片

磁盘调度算法:lsblk后根据数据盘符执行cat /sys/block/nvme0n1/queue/scheduler

达梦数据库守护集群安装_第6张图片

磁盘是否通过uuid挂载:暂未找到命令

磁盘是否自动挂载:暂未找到命令

磁盘raid卡是否有电池:暂未找到命令

磁盘容量:df -h

达梦数据库守护集群安装_第7张图片

磁盘性能:dd bs=32k if=dm8_20210927_x86_rh6_64_ent_8.1.2.70_pack2.iso of=ddtest.out oflag=dsync

达梦数据库守护集群安装_第8张图片

SWAP分区是否关闭:lsblk

达梦数据库守护集群安装_第9张图片

防火墙是否关闭:systemctl status firewalld.service

达梦数据库守护集群安装_第10张图片

网络带宽:未知

资源限制参数配置:ulimit -a

达梦数据库守护集群安装_第11张图片

服务器时间是否正确:date

数据库信息:

现场情况

备注

数据库版本号

dm8_20210927_x86_rh6_64_ent_8.1.2.70_pack2

集群信息

单机 DW RWC DSC MPP

主备集群

集群状态、主备LSN是否同步

安装目录

数据库软件目录

/dm8

数据文件目录

/dm8/data/DAMENG

归档文件目录

/dm8/data/DAMENG/arch

备份文件目录

/dm8/data/DAMENG/bak

License信息

标准、企业、安全

企业

正式、试用

试用

并发用户数

有效期

20220924到期

授权集群

初始化库参数

页大小

32k

簇大小

32页

大小写敏感

Y

字符集

GB18030

空格填充模式

0

VARCHAR是否以字符为单位

N

其他配置参数

数据文件

Redo日志大小、数目

数据文件总大小

dmarch.ini

ARCH_TYPE

(本地、异步、实时、即时)

LOCAL、REALTIME

ARCH_DEST

/dm8/DAMENG/arch/

ARCH_SPACE_LIMIT

51200M

dmwatcher.ini

DW_MODE

AUTO

INST_AUTO_RESTART

1

INST_STARTUP_CMD

/dm8/bin/dmserver

dmmonitor.ini

监视器所在机器IP

192.168.88.132

监视器配置文件路径

/dm8/bin/

MON_DW_CONFIRM

1

MON_LOG_PATH

/dm8/log

MON_LOG_SPACE_LIMIT

2048M

INI信息

DM.INI

默认值

现场实际修改值

WORKER_THREADS

16

TASK_THREADS

16

IO_THR_GROUPS

8

MAX_OS_MEMORY

100

MEMORY_POOL

500

MEMORY_N_POOLS

1

MEMORY_TARGET

15000

BUFFER

1000

MAX_BUFFER

BUFFER_POOLS

19

RECYCLE

300

RECYCLE_POOLS

19

HJ_BUF_GLOBAL_SIZE

5000

HJ_BUF_SIZE

500

HAGR_BUF_GLOBAL_SIZE

5000

HAGR_BUF_SIZE

500

SORT_FLAG

0

SORT_BLK_SIZE

1

SORT_BUF_SIZE

20

SORT_BUF_GLOBAL_SIZE

1000

RLOG_POOL_SIZE

256

SESS_POOL_SIZE

64

CACHE_POOL_SIZE

100

DICT_BUF_SIZE

50

VM_POOL_TARGET

64

SESS_POOL_TARGET

16384

USE_PLN_POOL

1

ENABLE_MONITOR

1

SVR_LOG

0

TEMP_SIZE

10

TEMP_SPACE_LIMIT

0

MAX_SESSIONS

10000

MAX_SESSION_STATE MENT

10000

PK_WITH_CLUSTER

1

ENABLE_ENCRYPT

0

OLAP_FLAG

2

VIEW_PULLUP_FLAG

0

OPTIMIZER_MODE

1

ADAPTIVE_NPLN_FLAG

3

TOP_DIS_HASH_FLAG

1

TOP_ORDER_OPT_FLAG

0

….

备份策略

备份策略

现场情况

备注

备份周期

清除备份周期

检查作业执行情况

备份文件大小

文档中有部分项目不了解,所以暂未填写,欢迎交流

点击下方链接,可进入达梦技术交流社区

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心

你可能感兴趣的:(达梦数据库,数据库,database)