DM数据库主备集群部署

DM数据库主备集群部署

一、部署规划

主备集群作为最简单的高可用架构,顾名思义为主对外提供数据服务,备库作为备库,故障发生时可以进行数据库主备切换。而切换可分为自动切换和手动切换两种模式。下面介绍的是手动切换

IP及机器规划:

主机名称服务IP心跳IP数据库名称数据库实例名称
dm1192.168.20.66192.168.111.128DAMENGdmdb1
dm2192.168.20.67192.168.111.129DAMENGdmdb2

端口规划:

实例名称实例端口MAL 系统监听 TCP 连接的端口实例本地守护进程监听TCP端口实例监听守护进程端口
dmdb15236733674367536
dmdb25236733674367536

用户规划:

安装用户名所属组登录口令
dmdbadinstallTest@dameng666

目录规划:

安装介质挂载目录/dmiso
数据库软件安装目录/home/dmdba/dmdbms
数据库实例安装目录/dmdata/
归档日志存放路径/dmdata/arch
备份文件存放路径/dmdata/dmbak/

二、数据库软件安装

2.1安装前操作系统设置(两台机器都要设置)

1.修改内核参数
`vi /etc/sysctl.conf`

添加以下内容

##DM##
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.core_pattern = /dmdata/core.%e.%p
vm.swappiness=10
vm.dirty_background_ratio = 0
vm.min_free_kbytes = 2097152
##DM##

执行以下参数生效

sysctl -p
2.修改用户资源限制
vim /etc/security/limits.conf

文件末尾添加如下内容:

##DM##
dmdba  soft      nice       0
dmdba  hard      nice       0
dmdba  soft      as         unlimited
dmdba  hard      as         unlimited
dmdba  soft      fsize      unlimited
dmdba  hard      fsize      unlimited
dmdba  soft      nproc      65536
dmdba  hard      nproc      65536
dmdba  soft      nofile     65536
dmdba  hard      nofile     65536
dmdba  soft      core       unlimited
dmdba  hard      core       unlimited
dmdba  soft      data       unlimited
dmdba  hard      data       unlimited
##DM##

修改完毕后重新登录dmdba用户执行以下命令查看是否生效

su - dmdba
ulimit -a

此外需要检查/etc/security/limits.d/目录下是否有其他限制资源的配置文件,如果有也需要修改。

Note:RHEL5, RHEL6使用90-nproc.conf ,而RHEL7使用 20-nproc.conf

dmdba  soft      nproc      65536
dmdba  hard      nproc      65536
参数使用限制:
1.data seg size                                            
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败。
2. file size
建议用户设置为 unlimited(无限制),此参数过小将导致数据库安装或初始化失败。
3. open files
建议用户设置为 65536 以上或 unlimited(无限制)。
4.virtual memory
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导致数据库启动失败。
3.新建数据库管理用户和组
[root@dm1 ~]# groupadd dinstall -g 2001
[root@dm1 ~]# useradd  -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
4.修改 dmdba 用户密码
passwd dmdba
Test@dameng666
5.创建安装目录
[root@dm1 ~]# mkdir -p /dmiso /home/dmdba/dmdbms /dmdata/arch /dmdata/dmbak/
6.赋予目录权限
[root@dm1 ~]# chown -R dmdba:dinstall /home/dmdba/
[root@dm1 ~]# chown -R dmdba:dinstall /dmdata/
7.执行以下命令,修改 dmdba 用户环境变量
[root@dm1 limits.d]# vi /home/dmdba/.bash_profile

文件末尾添加如下内容:

export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

2.1数据库软件安装(两台机器都要安装)

1.解压iso的zip包
[root@dm1 ~]# unzip dm8_20230418_x86_rh6_64.zip
Archive:  dm8_20230418_x86_rh6_64.zip
  inflating: dm8_20230418_x86_rh6_64.iso_SHA256.txt
  inflating: dm8_20230418_x86_rh6_64.iso
2.使用root用户挂载数据库软件的iso文件
[root@dm1 ~]# mount -o loop dm8_20230418_x86_rh6_64.iso /dmiso/
mount: /dev/loop0 写保护,将以只读方式挂载
3.使用dmdba用户安装软件
[root@dm1 ~]# su - dmdba

切换到 /dmiso 目录下

[dmdba@dm1 ~]$ cd /dmiso/

执行 DMInstall.bin 文件开始安装,选择 -i 参数以命令行方式安装。

./DMInstall.bin -i
选择安装程序的语言 c/C 为中文,e/E 为英文。

提示是否安装 key 文件,输入 N 跳过。

选择时区,21 即东 8 区。

选择安装类型,默认典型安装(包含所有内容)。

选择软件安装目录,默认/home/dmdba/dmdbms

2023-06-20 16:09:06
[INFO] 安装 基础 模块...
2023-06-20 16:09:06
[INFO] 安装达梦数据库...
2023-06-20 16:10:11
[INFO] 安装 服务器 模块...
2023-06-20 16:10:17
[INFO] 安装 客户端 模块...
2023-06-20 16:11:02
[INFO] 安装 驱动 模块...
2023-06-20 16:11:18
[INFO] 安装 手册 模块...
2023-06-20 16:11:19
[INFO] 安装 服务 模块...
2023-06-20 16:11:19
[INFO] 移动日志文件。
2023-06-20 16:11:20
[INFO] 安装达梦数据库完成。
4.以root系统用户执行命令
/home/dmdba/dmdbms/script/root/root_installer.sh

至此两台机器的DM8数据库已经安装完成,随后进行数据库实例的初始化

三、主备集群配置

3.1初始化实例

2台机器都需要完成实例的初始化

dm1上切换至dmdba用户执行以下命令:

su - dmdba

dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DAMENG instance_name=dmdb1

dm2上切换至dmdba用户执行以下命令:

su - dmdba

dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DAMENG instance_name=dmdb2

以主机dm1为主库,启动实例

dmserver /dmdata/DAMENG/dm.ini

出现system is ready后输入exit停止数据库。

3.2脱机备份数据库

使用ps命令确认主库 dmap 服务已启动

ps -ef|grep dmap

在这里插入图片描述
)(C:\Users\刘文瑞\AppData\Roaming\Typora\typora-user-images\image-20230621102017117.png)]

若未启动,切换至dmdba用户,跳转到安装目录的bin目录下执行下面命令:

./DmAPService start

切换至dmdba用户 启动dmrman工具

dmrman use_ap=2

执行 backup 全库:

backup database '/dmdata/DAMENG/dm.ini' backupset '/home/dmdba/bakfull';

退出dmrman工具

exit

3.3备份还原备库

将备份的文件/home/dmdba/bakfull拷贝到备库服务器上。

scp -r bakfull/ dmdba@192.168.20.67:/home/dmdba/

在主机dm2上,同样要检查dmap服务是否启动,参考dm1步骤。

使用 dmrman 工具还原备库,dmdba 用户执行:

dmrman

进入dmrman工具交互界面

执行 restore:

restore database '/dmdata/DAMENG/dm.ini' from backupset '/home/dmdba/bakfull';

完成后执行 recover:

recover database '/dmdata/DAMENG/dm.ini' from backupset '/home/dmdba/bakfull';

最后执行 recover update db_magic

recover database '/dmdata/DAMENG/dm.ini' update db_magic;

退出dmrman工具

exit

检查数据一致性

以 mount 方式启动主、备数据库,登录并查询 LSN 值,确保主备机数据一致,然后正常关闭主备数据库进行下一步:

SQL> select file_LSN, cur_LSN from v$rlog;

行号 

FILE_LSN 

CUR_LSN

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

1 

37460 

37460

SQL> select permanent_magic;

行号 

PERMANENT_MAGIC

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

1 

491522710

3.4修改dm.ini参数

两个实例都需要修改

vi /dmdata/DAMENG/dm.ini

主库dmdb1上修改以下参数值:

INSTANCE_NAME = DMDB1       
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

备库dmdb2上修改以下参数值:

INSTANCE_NAME = DMDB2        
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

3.5配置归档配置文件dmarch.ini

在安装实例的目录下创建文件dmarch.ini

vi /dmdata/DAMENG/dmarch.ini

主库dmdb1上添加以下内容:

[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME  
ARCH_DEST     = DMDB2   
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL 
ARCH_DEST     = /dmdata/arch    
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400

备库dmdb2上添加以下内容:

[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME  
ARCH_DEST     = DMDB1   
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL 
ARCH_DEST     = /dmdata/arch    
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400

3.6配置MAL系统配置文件dmmal.ini

在实例安装目录下新建文件 dmmal.ini,执行以下命令。

vi /dmdata/DAMENG/dmmal.ini

主备库2个节点文件内容要相同

MAL_CHECK_INTERVAL   = 5 
MAL_CONN_FAIL_INTERVAL  = 15  
[MAL_INST1]
  MAL_INST_NAME = DMDB1 
  MAL_HOST     = 192.168.111.128 
  MAL_PORT     = 7336
  MAL_INST_HOST   = 192.168.20.66 
  MAL_INST_PORT   = 5236 
  MAL_DW_PORT   = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST2]
  MAL_INST_NAME = DMDB2  
  MAL_HOST      = 192.168.111.129  
  MAL_PORT          = 7336
  MAL_INST_HOST         = 192.168.20.67  
  MAL_INST_PORT         = 5236 
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536

3.7配置守护进程配置文件dmwatcher.ini

在实例目录下新建文件 dmwatcher.ini

vi /dmdata/DAMENG/dmwatcher.ini

主备库2节点文件内容要相同

[GRP_DW] 
DW_TYPE    = GLOBAL  
DW_MODE    = MANUAL 
DW_ERROR_TIME     = 30  
INST_RECOVER_TIME  = 60         
INST_ERROR_TIME   = 20  
INST_OGUID         = 453331 
INST_INI           = /dmdata/DAMENG/dm.ini 
INST_AUTO_RESTART  = 1   
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/dmserver

以 mount 方式启动数据库实例

使用 dmdba 用户,执行以下命令(主备库都执行):

dmserver /dmdata/DAMENG/dm.ini mount

在新的终端使用 disql 工具连接数据库:

./disql SYSDBA/SYSDBA

主备库都修改 oguid,执行以下命令:

sp_set_oguid(453331);

主库dmdb1上修改数据库模式为 primary,执行以下命令:

alter database primary;

备库dmdb2上修改数据库模式为 standby,执行以下命令:

alter database standby;

启动守护进程

dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行)

dmwatcher /dmdata/DAMENG/dmwatcher.ini

守护进程启动后,会将 Mount 的实例 Open。

3.8配置监视器进程配置文件dmmonitor.ini

因为我们这里部署的是dm数据库手动切换模式的主备库,所以该监视器可以在任意节点部署,但在守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。

新建确认监视器配置文件,我们这里在dmdb1实例所在的dm1机器上配置

vi /dmdata/DAMENG/dmmonitor.ini

添加以下内容:

说明:具体配置时,请把#和#之后的中文内容删除。

MON_DW_CONFIRM    = 0 #普通监视器模式
MON_LOG_PATH    = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT  = 1024  #不限定日志文件总占用空间
[GRP_DW] 
 MON_INST_OGUID    = 453331 #组 GRP_DW 的唯一 OGUID 值
\#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
\#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
 MON_DW_IP     = 192.168.111.128:7436
 MON_DW_IP     = 192.168.111.129:7436

执行以下命令,启动监视器。

dmmonitor /dmdata//DAMENG/dmmonitor.ini	

启动后输入 show 命令查看集群状态,这里稍后会进行验证在展示操作。

3.9配置SQL日志

配置sql日志,主要记录慢sql和错误sql日志

所有节点修改sqllog.ini

vi /dmdata//DAMENG/sqllog.ini
BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 2:3:25
MIN_EXEC_TIME = 1500
USER_MODE = 0
USERS = 

3.10注册服务

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。

使用 root 用户,到数据库安装目录的script/root下。

注册守护进程服务(主备库都执行):

./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/DAMENG/dmwatcher.ini	

注册数据库实例服务(主备库都执行):

./dm_service_installer.sh -t dmserver -p dmdb  -dm_ini /dmdata/DAMENG/dm.ini

以服务方式启动

执行以下命令,启动数据库实例:

systemctl start DmServicedmdb 

执行以下命令,启动守护进程:

systemctl start DmWatcherServicedw

三、验证主备同步状态

切换至dmdba用户执行以下命令,启动监视器:(我们这里装在dm1机器上了所以在dm1上操作)

./dmmonitor /dmdata/dmdb/dmmonitor.ini

其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 REALTIME,归档状态 RSTAT 为VALID

在这里插入图片描述
disql 登陆主库,建表验证

disql SYSDBA/SYSDBA

SQL 提示符下执行以下命令:

create table test(id int);
insert into test values (1);
commit;

使用 disql 客户端登录备库,查询测试表验证,执行以下命令:

disql SYSDBA/SYSDBA

SQL 提示符下执行以下命令:

select * from test;

查看数据是否正常同步。

四、主备集群部署过程(自动切换)

守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。

在实例目录下新建文件 dmwatcher.ini,执行以下命令:

vi /dmdata/DAMENG/dmwatcher.ini

主备库2节点文件内容要相同。

DW_MODE改为自动切换模式

[GR_DW] DW_TYPE    = GLOBAL  
DW_MODE    = AUTO  
DW_ERROR_TIME     = 30  
INST_RECOVER_TIME  = 60         
INST_ERROR_TIME   = 20  
INST_OGUID         = 453331 
INST_AUTO_RESTART  = 1   
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/dmserver 

启动监视器(在主备之外节点配置)

守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备机器心跳网络端口开放)。

新建确认监视器配置文件 dmmonitor.ini,执行以下命令:

vi /dmdata/DAMENG/dmmonitor.ini

添加以下内容:

MON_DW_CONFIRM    = 1   
MON_LOG_PATH    = /home/dmdba/dmdbms/log  
MON_LOG_INTERVAL  = 60 
MON_LOG_FILE_SIZE   = 200  
MBMON_LOG_SPACE_LIMIT  = 1024  
[GRP_DW]  
MON_INST_OGUID    = 453331 
MON_DW_IP     = 192.168.111.128:7436 
MON_DW_IP     = 192.168.111.129:7436

注册监视器服务:

使用 root 用户,到数据库安装目录的script/root下。

注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmmonitor -p dw -monitor_ini /dmdata/dmdb/dmmonitor.ini

以服务方式启动监视器服务

执行以下命令,启动数据库实例:

systemctl start DmMonitorServicedw

达梦数据库社区地址:https://eco.dameng.com

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值