# 关闭SELinux
vi /etc/selinux/config
SELINUX=disabled
setenforce 0
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 优化内核参数,根据机器内存优化这里每台机器4GB
vi /etc/sysctl.conf
# 添加以下内容:
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
vm.swappiness = 0
vm.min_free_kbytes=51200
kernel.shmall = 470898
kernel.shmmax = 1928798208
kernel.shmmni = 4096
kernel.sem = 500 2048000 200 4096
vm.dirty_background_ratio = 3
vm.dirty_ratio = 20
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
# 生效配置
sysctl -p
# 调整资源限制
vi /etc/security/limits.conf
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
#启用资源限制
# vi /etc/pam.d/login
#session required pam_limits.so
echo "session required pam_limits.so" >>/etc/pam.d/login
# 禁用透明大页和NUMA
vi /etc/default/grub
GRUB_CMDLINE_LINUX="... numa=off transparent_hugepage=never"
grub2-mkconfig -o /etc/grub2.cfg
#根据磁盘类型调整。
SSD:磁盘调度算法推荐设置为noop或none
HDD:磁盘调度算法推荐设置为deadline或mq-deadline
临时生效:
#SSD
echo "noop" >/sys/block/sd*/queue/scheduler
#HDD
echo "deadline" >/sys/block/sd*/queue/scheduler
永久生效:
#SSD
# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never elevator=noop"
#HDD
# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never elevator=deadline"
生效
grub2-mkconfig -o /etc/grub2.cfg
重启服务器
reboot
groupadd -g 10001 dinstall useradd -u 10001 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba mkdir -p /dm/dmdbms mkdir -p /dmdata/{data,backup,arch} chown dmdba.dinstall -R /dm/dmdbms chown dmdba.dinstall -R /dmdata
su - dmdba
vi ~/.bash_profile
# 添加:
export DM_HOME=/dm/dmdbms
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/dmdbms/bin"
export DM_INSTALL_TMPDIR=/tmp
export PATH=$DM_HOME/bin:$PATH
source ~/.bash_profile
# 解压安装包
unzip dm8_20250506_x86_rh7_64.zip
mount -o loop dm8_20250506_x86_rh7_64.iso /mnt
# 命令行安装
cd /mnt
./DMInstall.bin -i
# 按提示完成安装
# root用户执行脚本
/dm/dmdbms/script/root/root_installer.sh
cd /dm/dmdbms/bin
./dminit path=/dmdata/data/ db_name=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=32141 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
目录类型 | 路径 | 说明 |
---|---|---|
数据库安装路径 | /dm/dmdbms/bin |
数据库软件安装位置,包含可执行文件 |
实例安装路径 | /dmdata/data/DAMENG |
数据库实例文件存放位置(包含dm.ini等配置文件) |
归档目录 | /dmdata/arch |
数据库归档日志存储位置 |
备份目录 | /dmdata/bak |
数据库备份文件存放位置 |
数据目录 | /dmdata/data |
数据库数据存储位置 |
实例名 | PORT_NUM(数据库端口) | MAL_INST_DW_PORT(实例守护端口) | MAL_HOST(MAL通信IP) | MAL_PORT(MAL通信端口) | MAL_DW_PORT(守护监听端口) | MAL_INST_HOST(实例服务IP) |
---|---|---|---|---|---|---|
GRP1_RT_01 | 32141 | 33141 | 192.168.**.6 | 61141 | 52141 | 192.168.**.6 |
GRP1_RT_02 | 32142 | 33142 | 192.168.**.7 | 61142 | 52142 | 192.168.**.7 |
# 主库执行
mkdir /dmdata/fullbak
./dmrman
backup database '/dmdata/data/DAMENG/dm.ini' full backupset '/dmdata/fullbak/DB_full_first' compressed level 1 parallel 8;
# 拷贝到备库
scp -r /dmdata/fullbak/DB_full_first root@备库IP:/dmdata/
# 备库执行
chown -R dmdba:dinstall /dmdata/DB_full_first
./dmrman
restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/DB_full_first' task thread 16;
recover database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/DB_full_first';
recover database '/dmdata/data/DAMENG/dm.ini' update db_magic;
# dm.ini
INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 32141
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
# dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 51200
# dmmal.ini
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.**.6
MAL_PORT = 61141
MAL_INST_HOST = 192.168.31.6
MAL_INST_PORT = 32141
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.**.7
MAL_PORT = 61142
MAL_INST_HOST = 192.168.**.7
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
# dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver
# dm.ini
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 32142
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
# 其他配置文件类似主库,注意修改IP和端口指向
# 主库
./dmserver /dmdata/data/DAMENG/dm.ini mount
./disql SYSDBA/SYSDBA@localhost:32141
SP_SET_OGUID(453331);
ALTER DATABASE PRIMARY;
# 备库
./dmserver /dmdata/data/DAMENG/dm.ini mount
./disql SYSDBA/SYSDBA@localhost:32142
SP_SET_OGUID(453331);
ALTER DATABASE STANDBY;
# 启动守护进程(主备都执行)
./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini
# 配置监视器(dmmonitor.ini)
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dmdata/monitor/log
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.**.6:52141
MON_DW_IP = 192.168.**.7:52142
# 启动监视器
./dmmonitor /dmdata/monitor/dmmonitor.ini
# 主库
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p GRP1_RT_01 -m mount
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p GRP1_RT_01
# 备库
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p GRP1_RT_02 -m mount
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p GRP1_RT_02
./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/monitor/dmmonitor.ini -p GRP1
# 启动顺序
systemctl start DmServiceGRP1_RT_01 # 主库实例
systemctl start DmServiceGRP1_RT_02 # 备库实例
systemctl start DmWatcherGRP1_RT_01 # 主库守护
systemctl start DmWatcherGRP1_RT_02 # 备库守护
systemctl start DmMonitorGRP1 # 监视器
# 停止顺序
systemctl stop DmMonitorGRP1 # 监视器
systemctl stop DmWatcherGRP1_RT_02 # 备库守护
systemctl stop DmWatcherGRP1_RT_01 # 主库守护
systemctl stop DmServiceGRP1_RT_02 # 备库实例
systemctl stop DmServiceGRP1_RT_01 # 主库实例
-- 检查实例状态
SELECT STATUS$, MODE$ FROM V$INSTANCE;
-- 检查归档状态
SELECT ARCH_MODE FROM V$DATABASE;
-- 检查主备同步
SELECT * FROM V$ARCH_STATUS;
-- 进入数据库安装路径
cd /dm/dmdbms/bin
-- 前台启动监视器(注意MON_DW_CONFIRM = 1的确认监视器只能开启一个)
/dm/dmdbms/bin/dmmonitor path=/dmdata/data/monitor/dmmonitor.ini
-- 检查主备同步
show
本文档详细介绍了DM8主备集群的安装部署流程,包括:
通过以上步骤,可以搭建一个高可用的DM8主备集群环境。实际部署中需要根据具体硬件配置和业务需求调整参数,建议在测试环境验证后再进行生产部署。
文章
阅读量
获赞