注册
主备集群部署
专栏/技术分享/ 文章详情 /

主备集群部署

lhpaaaa 2025/08/22 132 0 0
摘要

1.概述

由 1 个主库(Primary)和 1 个或多个备库(Standby)组成的高可用架构,主库对外提供读写服务,备库实时同步主库的数据,当主库故障时,备库可切换为主库继续提供服务。

2.主备集群部署规划

1主1备1监视器3节点

3.部署准备

3.1测试磁盘速度

在部署之前需要对磁盘进行测速,查看是否合适安装部署

3.2操作系统配置

3.2.1内核参数

#修改内核参数
vi /etc/sysctl.conf
#在末尾添加这些参数
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_%t
vm.swappiness=10
vm.dirty_background_ratio = 0
vm.min_free_kbytes = 512000

让参数生效
sysctl -p

3.2.2用户组

为了系统安全,不能用root安装数据库

#创建用户组,并指定其组ID为2001,可以防止系统分配重复的组ID

groupadd dinstall -g 2001

useradd  -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba


#修改密码(刚创建的用户是没有密码的,要我们去加)

passwd dmdba
#密码:Dm@1357


3.2.3资源限制

解除操作系统对 dmdba 用户运行数据库进程的资源限制

\#永久生效配置

\#设置用户或用户组的资源限制

vi /etc/security/limits.conf

直接就在该文档末尾处添加配置即可。

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

#重启服务器生效
sudo reboot

\#切换到 dmdba 用户,查看是否生效

su - dmdba

ulimit -a


3.2.4关闭防火墙

在root用户下,关闭防火墙

su root
systemctl stop firewalld.service
systemctl status firewalld.service	
systemctl disable firewalld.service

3.2.5关闭透明大页、numa

vi /etc/default/grub
#找到对应的地方进行补充 numa=off transparent_hugepage=never
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"

3.2.6IO调度算法

对于SAS或STAT磁盘(机械硬盘),建议修改为deadline调度算法,对于SSD(固态硬盘),建议修改为NOOP调度算法。

#查看 `sda` 磁盘(通常是系统盘)当前的调度器
cat /sys/block/sda/queue/scheduler

image.png

#永久修改:
#运行 `grubby` 命令,将 `elevator=deadline` 参数添加到所有内核的启动参数中
grubby --update-kernel=ALL --args="elevator=deadline"
#重启生效
reboot

3.2.7关闭swap

vi /etc/fstab

找到swap那一行,注释掉即可
image.png

#禁用 /proc/swaps 中的所有交换区
swapoff -a

3.2.8环境变量(是在dmdba用户下)

执行以下命令,修改 dmdba 用户环境变量。

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

#添加完成后让它生效
source ~/.bash_profile

这是会影响后面的启动实例操作,配置完必须要source让它生效

4.数据库软件安装

要切换到root用户下进行下面的操作

cd  /opt
创建一个目录放达梦的安装文件,并且赋予权限给dmdba用户
mkdir /opt/dm
chown dmdba.dinstall /opt/dm
chmod 755 /opt/dm

上传镜像文件到这里/opt/dm,使用root用户挂载数据库软件的iso文件
mkdir -p /dmiso
mount -o loop dm8_20250528_x86_rh6_64.iso /dmiso
#切换dmdba用户
su - dmdba
#进入到挂载镜像的路径
cd /dmiso
#执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
./DMInstall.bin -i

image.png

安装成功后会提示创建DmAPService服务

su root
/home/dmdba/dmdbms/script/root/root_installer.sh

为数据库文件、归档日志和备份创建独立的目录,并赋予 dmdba 用户适当的权限。

#实例保存目录
mkdir -p /dmdata/data
#归档保存目录
mkdir -p /dmdata/arch
#备份保存目录
mkdir -p /dmdata/dmbak
#dmdba 用户可读写执行,同组用户可读执行,其他用户可读执行
chown -R dmdba:dinstall /dmdata/data
chown -R dmdba:dinstall /dmdata/arch
chown -R dmdba:dinstall /dmdata/dmbak
chmod -R 755 /dmdata/data
chmod -R 755 /dmdata/arch
chmod -R 755 /dmdata/dmbak

系统操作到这里就完成了,在测试环境,我们可以直接克隆一台数据库做为备库(记得修改ip),监视器的服务器对内核要求较低,不需要配置这些。

5.主备集群配置

5.1初始化实例

需要初始化主库和备库的实例
使用 dminit 工具初始化实例。

#切换到dmdba用户
su dmdba
#进入数据库安装bin目录下
cd /home/dmdba/dmdbms/bin

#初始化
./dminit path=/dmdata/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 log_size=2048 DB_NAME=dmdb INSTANCE_NAME=DW1  PORT_NUM=5236 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123


image.png
注意:
主节点安装数据库软件,初始化实例,并正常启动数据库一次,开启归档,启动数据库到mount状态。
备节点安装数据库软件,初始化实例,无需正常启动数据库一次,启动数据库到mount状态

#启动实例
dmserver /dmdata/data/dmdb/dm.ini(这个路径是指实例的路径)
出现system is ready表示启动成功

出现system is ready后输入exit停止数据库。
表示数据库停止成功
image.png

5.2脱机备份数据库(dmdba用户)

准备数据时,如果主库是新初始化的库,先正常启动并正常退出,主库数据库数据库服务处于关闭状态后,然后再使用备份还原方式准备备库数据。

主库


#在dmdba用户下执行
#
#启动dmrman工具
dmrman use_ap=2
#执行 backup 全库
backup database '/dmdata/data/dmdb/dm.ini' backupset '/home/dmdba/bakfull';
#校验备份
check backupset '/home/dmdba/bakfull';
#退出
RMAN> exit;


image.png

进入到备份的目录,可以看到已经生成了备份文件
注意

  1. 在搭建主备实时集群的时候,需要对主库数据进行脱机备份,主库部署完成DM8后需要开启一次,让dm.ini和dmarch.ini中相关的参数生效,之后再关闭数据库进程脱机备份
  2. 必须在主库上执行备份,且备份时主库实例要关闭(脱机状态);
  3. DMAP 服务一定要启动,否则备份会失败;
  4. 备份文件路径要记好,后续需要拷贝到备库,路径错误会导致备库还原失败。
    在备库创建对应的文件夹,将主库备份生成的文件放到备库

备库

#执行 restore
restore database '/dmdata/data/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
#执行 restore
recover database '/dmdata/data/dmdb/dm.ini' from backupset '/home/dmdba/bakfull';
# recover update db_magic
recover database '/dmdata/data/dmdb/dm.ini' update db_magic;
新数据库没有数据,提示找不到日志是正常的


image.png

5.3修改dm.ini参数(dmdba用户)

要修改数据库的配置文件/dmdata/data/dmdb/
主库

vi /dmdata/data/dmdb/dm.ini
# 修改以下参数
INSTANCE_NAME = dw1  
MAL_INI = 1  
ARCH_INI = 1  
ALTER_MODE_STATUS = 0  
ENABLE_OFFLINE_TS = 2
RLOG_APPEND_LOGIC = 1

备库

vi /dmdata/data/dmdb/dm.ini
# 修改以下参数
INSTANCE_NAME=dw2
MAL_INI=1
ARCH_INI=1
ALTER_MODE_STATUS=0
ENABLE_OFFLINE_TS=2
RLOG_APPEND_LOGIC=1

5.4配置归档配置文件 dmarch.ini(dmdba用户)

主库和备库在数据库实例下新建这个文件

vi /dmdata/data/dmdb/dmarch.ini

主库

[ARCHIVE_REALTIME1]  

ARCH_TYPE= REALTIME  #归档类型为实时

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

[ARCHIVE_LOCAL1]  #本地归档配置

ARCH_TYPE= LOCAL  

ARCH_DEST= /dmdata/arch

ARCH_FILE_SIZE = 2048  

ARCH_SPACE_LIMIT = 102400

备库

[ARCHIVE_REALTIME1]  

ARCH_TYPE= REALTIME

ARCH_DEST= dw1

  

[ARCHIVE_LOCAL1]  

ARCH_TYPE= LOCAL  

ARCH_DEST= /dmdata/arch

ARCH_FILE_SIZE = 2048  

ARCH_SPACE_LIMIT = 102400

5.5配置MAL系统配置文件 dmmal.ini(dmdba用户)

在主库和备库的数据库实例下新建dmmal.ini文件
主库和备库内容一样

vi /dmdata/data/dmdb/dmmal.ini
#文件内容
MAL_CHECK_INTERVAL   = 5    
MAL_CONN_FAIL_INTERVAL  = 15  

[MAL_INST1] 
  MAL_INST_NAME = dw1  
  MAL_HOST     = 10.0.0.100  
  MAL_PORT     = 7336  
  MAL_INST_HOST   = 192.168.155.111   
  MAL_INST_PORT   = 5236  
  MAL_DW_PORT   = 7436  
  MAL_INST_DW_PORT = 7536  
[MAL_INST2]  
  MAL_INST_NAME = dw2  
  MAL_HOST      = 10.0.0.101    
  MAL_PORT          = 7336  
  MAL_INST_HOST         = 192.168.155.113    
  MAL_INST_PORT         = 5236  
  MAL_DW_PORT  = 7436  
  MAL_INST_DW_PORT = 7536

MAL_CHECK_INTERVAL=5    
MAL_CONN_FAIL_INTERVAL=15  
[MAL_INST1]

MAL_INST_NAME=dw1
MAL_HOST=192.168.100.111

MAL_PORT=7336

MAL_INST_HOST=192.168.155.111

MAL_INST_PORT=5236

MAL_DW_PORT=7436

MAL_INST_DW_PORT=7536

[MAL_INST2]

MAL_INST_NAME=dw2

MAL_HOST=192.168.100.113

MAL_PORT=7336

MAL_INST_HOST=192.168.155.113

MAL_INST_PORT=5236

MAL_DW_PORT=7436

MAL_INST_DW_PORT=7536

5.6配置守护进程配置文件 dmwatcher.ini(dmdba用户)

dmwatcher.ini存放目录没有限制,一般和 dm.ini 存放在同一个目录。
在主库和备库的数据库实例下新建dmwatcher.ini文件
主库和备库内容一样

vi /dmdata/data/dmdb/dmwatcher.ini
#文件内容
[GRP_DW]  
DW_TYPE    = GLOBAL  
#DW_MODE参数,MANUAL表示手动切换,AUTO表示自动切换。
DW_MODE    = MANUAL  
DW_ERROR_TIME     = 30    #远程守护进程故障认定时间
INST_RECOVER_TIME  = 60 #主库守护进程启动恢复的间隔时间       
INST_ERROR_TIME   = 20  #本地实例故障认定时间

INST_OGUID         = 453331  
INST_INI           = /dmdata/data/dmdb/dm.ini  
INST_AUTO_RESTART  = 1     
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/DmServiceDW1 start


5.7以mount状态启动数据库实例(dmdba用户)

su - dmdba

cd /home/dmdba/dmdbms/bin/
--以mount状态启动数据库实例
./dmserver /dmdata/data/dmdb/dm.ini mount

-- 方法2:修改为 mount 启动(提前创建了实例服务下)
--cd /home/dmdba/dmdbms/bin/在这个目录修改配置
vi DmServicedmdb

START_MODE=mount

5.8设置 OGUID修改数据库模式(dmdba用户)

用新的终端disql进去

#进入到安装目录下
cd $DM_HOME/bin
#在新的终端使用 disql 工具连接数据库,用sysdba用户登录
./disql SYSDBA/'"Dameng123"':5236(==默认是5236,如果不是这个端口要加端口号来进入==)

#主备库都修改 oguid
# 允许手动修改
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); 
# 修改配置
sp_set_oguid(453331); 
alter database primary;/alter database standby;
# 不允许手动修改
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);


5.9注册并启动守护进程和实例服务

使用 root 用户,到数据库安装目录的script/root下。
主库和备库都要执行

注册守护进程和实例服务
cd /home/dmdba/dmdbms/script/root/
#注册守护进程服务(主备库都执行)。
./dm_service_installer.sh -t dmwatcher -p DW1 -watcher_ini /dmdata/data/dmdb/dmwatcher.ini
#注册数据库实例服务(主备库都执行)
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/dmdb/dm.ini -p DW1

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

5.10 启动监视器

5.10.1监视器虚拟机配置(在主备服务器以外的服务器上)

vi /home/dmdba/dmdbms/dmmonitor.ini

#内容为
MON_DW_CONFIRM    = 0 
MON_LOG_PATH    = /home/dmdba/dmdbms/log  
MON_LOG_INTERVAL  = 60  
MON_LOG_FILE_SIZE   = 200
MON_LOG_SPACE_LIMIT  = 1024   
[GRP_DW]  
 MON_INST_OGUID    = 453331   
# MON_DW_IP     = 10.0.0.100:7436 
 MON_DW_IP     = 192.168.100.111:7436
 MON_DW_IP     = 192.168.100.113:7436



5.10.2启动监视器

 --启动普通监视器,查看集群状态。
./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini

5.10.3用show查看监视的主备集群
image.png

社区地址:https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服