由 1 个主库(Primary)和 1 个或多个备库(Standby)组成的高可用架构,主库对外提供读写服务,备库实时同步主库的数据,当主库故障时,备库可切换为主库继续提供服务。
1主1备1监视器3节点
在部署之前需要对磁盘进行测速,查看是否合适安装部署
#修改内核参数
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
为了系统安全,不能用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
解除操作系统对 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
在root用户下,关闭防火墙
su root
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service
vi /etc/default/grub
#找到对应的地方进行补充 numa=off transparent_hugepage=never
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"
对于SAS或STAT磁盘(机械硬盘),建议修改为deadline调度算法,对于SSD(固态硬盘),建议修改为NOOP调度算法。
#查看 `sda` 磁盘(通常是系统盘)当前的调度器
cat /sys/block/sda/queue/scheduler
#永久修改:
#运行 `grubby` 命令,将 `elevator=deadline` 参数添加到所有内核的启动参数中
grubby --update-kernel=ALL --args="elevator=deadline"
#重启生效
reboot
vi /etc/fstab
找到swap那一行,注释掉即可
#禁用 /proc/swaps 中的所有交换区
swapoff -a
执行以下命令,修改 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让它生效
要切换到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
安装成功后会提示创建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),监视器的服务器对内核要求较低,不需要配置这些。
需要初始化主库和备库的实例
使用 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
注意:
主节点安装数据库软件,初始化实例,并正常启动数据库一次,开启归档,启动数据库到mount状态。
备节点安装数据库软件,初始化实例,无需正常启动数据库一次,启动数据库到mount状态
#启动实例
dmserver /dmdata/data/dmdb/dm.ini(这个路径是指实例的路径)
出现system is ready表示启动成功
出现system is ready后输入exit停止数据库。
表示数据库停止成功
准备数据时,如果主库是新初始化的库,先正常启动并正常退出,主库数据库数据库服务处于关闭状态后,然后再使用备份还原方式准备备库数据。
主库
#在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;
进入到备份的目录,可以看到已经生成了备份文件
注意
备库
#执行 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;
新数据库没有数据,提示找不到日志是正常的
要修改数据库的配置文件/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
主库和备库在数据库实例下新建这个文件
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
在主库和备库的数据库实例下新建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
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
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
用新的终端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);
使用 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。
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
--启动普通监视器,查看集群状态。
./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini
5.10.3用show查看监视的主备集群
社区地址:https://eco.dameng.com
文章
阅读量
获赞