使用root用户进行创建,两节点执行
[root@dsc01 ~]# groupadd dinstall
[root@dsc01 ~]# mkdir -p /home/dmdba
[root@dsc01 ~]# useradd -g dinstall -m -d /home/dmdba/dm -s /bin/bash dmdba
[root@dsc01 ~]# echo dmdba| passwd --stdin dmdba
[root@dsc01 ~]# mkdir -p /dbbak/dmbak
数据库管理用户创建完成后,将数据库目录归属权限给dmdba
[root@dsc02 ~]# chown -R dmdba:dinstall /home/dmdba/ /dbbak/dmbak/
[root@dsc01 ~]# dd if=/dev/zero of=/dbdata/test bs=32k count=4k oflag=dsync
以上磁盘测试参数是每次写入32k大小文件,循环4千次,执行完成后会显示磁盘读写速度。根据以往项目经验30Mb/s为正常磁盘速度,如低于此数值特别多需要和磁盘厂商、操作系统进行确认是否合理。
[root@dsc01 ~]# systemctl status firewalld.service
[root@dsc01 ~]# systemctl stop firewalld.service
[root@dsc01 ~]# systemctl disable firewalld.service
cat <<-EOF>>/etc/security/limits.conf
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 131072
dmdba hard nproc 131072
dmdba soft nofile 131072
dmdba hard nofile 131072
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft memlock unlimited
dmdba hard memlock unlimited
EOF
这一步用于调整core文件路径、虚拟内存和swap使用策略、min_free_kbyte参数。
当内存很大的情况下建议关闭交换分区或最小化交换的使用,避免内核的内存申请到交换分区影响数据库性能over commit_memory配置为0。内存小于256GB时swapiness参数设置为10以下,大于256GB时关闭。
[root@dsc01 ~]# vi /etc/sysctl.conf
添加以下内容
kernel.core_pattern=/dbbak/core/core-e%-p%-t%-s%
vm.swappiness=10
vm.overcommit_memory=0
##当物理内存小于等于64G时,设置系统保留的最小空闲内存量为1153434(单位KB)
##当物理内存大于64G时,设置系统保留的最小空闲内存量为物理内存的2%;
vm.min_free_kbytes = 物理内存的2%(单位KB)
#保存后执行
[root@dsc01 ~]# sysctl -p
建议将IO调度算法设置为noop或deadline,优化数据库的磁盘性能。
如个人临时调整可参考以下方式:
#手动临时调整 sdc 为盘符,需要对应数据库使用的真实盘符
[root@dsc01 ~]# echo deadline > /sys/block/sdc/queue/scheduler
[root@dsc01 ~]# vim /home/dmdba/dm/dmdbms/bin/dmserverd
添加如下内容
#将其写入到数据库启动脚本中
export MALLOC_ARENA_MAX=1
注意:此配置是调整数据库启动脚本
#查看当前selinux的状态:
[root@dsc01 ~]# /usr/sbin/sestatus -v
[root@dsc01 ~]# vi /etc/selinux/config
设置SELINUX=disabled,重启机器生效。
1.编辑 /etc/default/grub 文件, 添加transparent_hugepage=never
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"
2. 重新生成/etc/grub2.cfg 配置文件:
grub2-mkconfig -o /etc/grub2.cfg
3. 重启操作系统。
reboot
4. 重启之后进行确认。
dmesg | grep -i numa
5. 再次确认。
cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never
略
vi /dbdata/dmdata/DAMENG/dm.ini
#修改以下参数
INSTANCE_NAME = DW01 #数据库实例名(长度不超过16个字符)
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 5536 #守护环境下,监听守护进程连接端口,dm7主备集群的dmmal.ini配置文件中没有MAL_INST_DW_PORT参数
DW_ERROR_TIME = 60 #接收守护进程消息超时时间,服务器认定守护进程未启动的时间,有效值范围(0~1800),单位为S,默认60s
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态,1表示允许,0表示不允许,此参数可动态修改,默认为1,数据守护环境下建议配置为0,避免用户手工干预。
ENABLE_OFFLINE_TS = 2 #不允许备库脱机表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
SVR_LOG=1 #打开SQLLOG配置
vi /dbdata/dmdata/DAMENG/dmmal.ini
#添加以下内容
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔,单位为S
MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间,单位为S
[MAL_INST1]#主库
MAL_INST_NAME = DW01 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = xxx.xxx.xxx.xxx #MAL系统监听TCP连接的IP地址
MAL_PORT = 5336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = xxx.xxx.xxx.xxx #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听TCP连接的端口
[MAL_INST2]#备库
MAL_INST_NAME = DW02
MAL_HOST = xxx.xxx.xxx.xxx
MAL_PORT = 5336
MAL_INST_HOST = xxx.xxx.xxx.xxx
MAL_INST_PORT = 5236
MAL_DW_PORT =5436
vi /dbdata/dmdata/DAMENG/dmarch.ini
#添加以下内容
ARCH_WAIT_APPLY = 0 #高性能模式,配置为1为事务一致模式
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW02 #实时归档目标实例名
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dbarch/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 204800 #单位Mb,根据现场磁盘情况修改,一般为 /dbarch/dmarch磁盘空间的80%
vi /dbdata/dmdata/DAMENG/dmwatcher.ini
#添加以下内容
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dbdata/dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD =/home/dmdba/dmdbms/bin/DmServiceDW01 start #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
dm7主备集群需要手动生成dmwatcher.ctl文件,并将其拷贝到主备库对应的文件夹下
./dmctlcvt TYPE=3 SRC=/dbdata/dmdata/DAMENG/dmwatcher.ini DEST=/dbdata/dmdata/DAMENG/
cp /dbdata/dmdata/DAMENG/GRP1/dmwatcher.ctl /dbdata/dmdata/DAMENG/
scp /dbdata/dmdata/DAMENG/GRP1/dmwatcher.ctl root@xxx.xxx.xxx.xxx:/dbdata/dmdata/DAMENG/
#以现场环境路径为准
BUF_TOTAL_SIZE = 102400 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 10240 #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT = 12 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = ../log #根据实际环境填写
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 256
ASYNC_FLUSH = 1
FILE_NUM = 100 #根据实际情况配置,至少保留3天的日志量
ITEMS = 0
SQL_TRACE_MASK = 2:3:23:25
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
#注册数据库服务
su - root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -i /dbdata/dmdata/DAMENG/dm.ini -p DW01
#注册守护进程服务
./dm_service_installer.sh -t dmwatcher -i /dbdata/dmdata/DAMENG/dm.ini -p DW01
vi /dbdata/dmdata/DAMENG/dm.ini
#修改以下参数
INSTANCE_NAME = DW02 #数据库实例名(长度不超过16个字符)
PORT_NUM = 5236 #数据库实例监听端口
DW_PORT = 5536 #守护环境下,监听守护进程连接端口,dm7主备集群的dmmal.ini配置文件中没有MAL_INST_DW_PORT参数
DW_ERROR_TIME = 60 #接收守护进程消息超时时间,服务器认定守护进程未启动的时间,有效值范围(0~1800),单位为S,默认60s
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态,1表示允许,0表示不允许,此参数可动态修改,默认为1,数据守护环境下建议配置为0,避免用户手工干预。
ENABLE_OFFLINE_TS = 2 #不允许备库OFFLINE表空间
MAL_INI = 1 #打开MAL系统
ARCH_INI = 1 #打开归档配置
SVR_LOG=1 #打开SQLLOG配置
vi /dbdata/dmdata/DAMENG/dmmal.ini
#添加以下内容
MAL_CHECK_INTERVAL = 10 #MAL链路检测时间间隔,单位为S
MAL_CONN_FAIL_INTERVAL = 10 #判定MAL链路断开的时间,单位为S
[MAL_INST1]#主库
MAL_INST_NAME = DW01 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = xxx.xxx.xxx.xxx #MAL系统监听TCP连接的IP地址
MAL_PORT = 5336 #MAL系统监听TCP连接的端口
MAL_INST_HOST = xxx.xxx.xxx.xxx #实例的对外服务IP地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听TCP连接的端口
[MAL_INST2]#备库
MAL_INST_NAME = DW02
MAL_HOST = xxx.xxx.xxx.xxx
MAL_PORT = 5336
MAL_INST_HOST = xxx.xxx.xxx.xxx
MAL_INST_PORT = 5236
MAL_DW_PORT =5436
vi /dbdata/dmdata/DAMENG/dmarch.ini
#添加以下内容
ARCH_WAIT_APPLY = 0 #高性能模式,配置为1为事务一致模式
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DW01 #实时归档目标实例名
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dbarch/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE = 2048 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 204800 #单位Mb,根据现场磁盘情况修改,一般为 /dbarch/dmarch磁盘空间的80%
vi /dbdata/dmdata/DAMENG/dmwatcher.ini
#添加以下内容
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dbdata/dmdata/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD =/home/dmdba/dmdbms/bin/DmServiceDW02 start #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
BUF_TOTAL_SIZE = 102400 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 10240 #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT = 12 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = ../log #根据实际环境填写
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 256
ASYNC_FLUSH = 1
FILE_NUM = 100 #根据实际情况配置,至少保留3天的日志量
ITEMS = 0
SQL_TRACE_MASK = 2:3:23:25
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
#注册数据库服务
su - root
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -i /dbdata/dmdata/DAMENG/dm.ini -p DW02
#注册守护进程服务
./dm_service_installer.sh -t dmwatcher -i /dbdata/dmdata/DAMENG/dm.ini -p DW02
cd /home/dmdba/dmdbms/bin
./dmrman
backup database '/dbdata/dmdata/DAMENG/dm.ini' backupset '/dbbak/dmbak/DB_FULL_BACKUP_20260318'
#发送备份至备库
scp -r /dbbak/dmbak/DB_FULL_BACKUP_20260318 root@xxx.xxx.xxx.xxx:/dbbak/dmbak/
cd /home/dmdba/dmdbms/bin
./dmrman
restore database '/dbdata/dmdata/DAMENG/dm.ini' from backupset '/dbbak/dmbak/DB_FULL_BACKUP_20260318'
recover database '/dbdata/dmdata/DAMENG/dm.ini' from backupset '/dbbak/dmbak/DB_FULL_BACKUP_20260318'
#修改服务启动脚本,将START_MODE参数由open修改为mount
vi DmServiceDW01
vi DmServiceDW02
#启动数据库服务
./DmServiceDW01 start
./DmServiceDW02 start
登录数据库,执行下面几条sql
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);
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);
./DmWatcherServiceDW01 start
./DmWatcherServiceDW02 start
守护进程启动后,进入Startup状态,此时实例都处于Mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并切换为Open状态。
确认监视器需要部署在除主备库之外的第三台机器,并注册系统服务后台启动
vi /home/dmdba/dmdbms/bin/dmmonitor.ini
#添加下面的内容
MON_DW_Confirm = 1 #确认监视器模式
MON_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = xxx.xxx.xxx.xxx:5436
MON_DW_IP = xxx.xxx.xxx.xxx:5436
cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmmonitor -i /home/dmdba/dmdbms/bin/dmmonitor.ini -p MON
#启动确认监视器
/home/dmdba/dmdbms/bin/DmMonitorServiceMON start
vi /home/dmdba/dmdbms/bin/dmmonitor_0.ini
#添加下面的内容
MON_DW_Confirm = 0 #确认监视器模式
MON_LOG_PATH =/home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = xxx.xxx.xxx.xxx:5436
MON_DW_IP = xxx.xxx.xxx.xxx:5436
#启动非确认监视
./dmmonitor dmmonitor_0.ini
非确认监视器(普通监视器)
生产环境最佳实践
文章
阅读量
获赞
