DM8 主备部署方案
一、环境规划
准备两台主机作为本次主备部署机器
1、安装路径
安装项 | 路径 |
软件安装路径 | /opt/dmdbms/dmdbms |
数据文件目录 | /opt/dmdbms/data |
归档文件目录 | /opt/dmdbms/dmarch |
备份文件目录 | /opt/dmdbms |
/opt/dmdbms/dmsqllog | |
CORE文件路径 | /opt/dmdbms/core |
2、初始化库参数设置
项 | 值 |
数据库端口 | 5236 |
页大小 | 32 |
簇大小 | 32 |
大小写敏感 | 不敏感 |
库名 | DMDB |
实例名 | DBSERVER01/02 |
安装用户(是否root安装) | 否 |
字符集 | GB18030 |
是 |
二、安装部署步骤
(一)基础环境配置步骤(每台机器均需执行)
编号 | 说明 |
1 | 创建dmdba用户,主组群为dinstall 创建主组群:groupadd dinstall 创建用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 设置密码:passwd dmdba |
2 | 创建目录 mkdir -p /opt/dmdbms/dmdbms mkdir /opt/dmdbms/dmarch mkdir /opt/dmdbms/dmsqllog mkdir /opt/dmdbms/data mkdir /opt/dmdbms mkdir /opt/dmdbms/core chmod -R 755 /opt/dmdbms/dmdbms /opt/dmdbms/dmarch /opt/dmdbms/dmsqllog /opt/dmdbms/data /opt/dmdbms /opt/dmdbms/core chown -R dmdba:dinstall /opt/dmdbms/dmdbms /opt/dmdbms/dmarch /opt/dmdbms/dmsqllog /opt/dmdbms/data /opt/dmdbms /opt/dmdbms/core |
3 | vi /etc/security/limits.conf添加上 dmdba soft core unlimited dmdba hard core unlimited dmdba soft nofile 65536 dmdba hard nofile 65536 dmdba soft nproc 65536 dmdba hard nproc 65536 dmdba soft stack 65536 dmdba hard stack 65536 备注:/etc/systemd/system.conf的DefaultLimitNOFILE参数修改为65535 |
4 | 变更环境变量 vi /home/dmdba/.bash_profile 添加以下内容: export DM_HOME=/opt/dmdbms/dmdbms export PATH=$PATH:$DM_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin |
5 | 关闭swap交换区(未分配SWAP空间) swapoff -a 将/etc/fstab中的swap关闭掉,如内存少于128G不关闭 |
6 | 检查是否配置时钟同步--信息口如无得话,可跳过该步骤 chronyc sources -v vi /etc/chrony.conf server 10.10.47.245 iburst driftfile /var/lib/chrony/drift makestep 10 3 重启chronyd服务 systemctl restart chronyd.service 设置开机启动 systemctl enable chronyd.service date检查时间 |
7 | ODBC未安装,需上传安装包并安装--如不需要同步,可不安装 ODBC 的安装: (1)解压 [root@KylinDCA03 opt]# tar -zxvf unixODBC-2.3.0.tar.gz (2)源码安装三部曲(配置、编译、安装) [root@KylinDCA03 opt]# cd unixODBC-2.3.0/ [root@KylinDCA03 unixODBC-2.3.0]# ./configure [root@KylinDCA03 unixODBC-2.3.0]# make [root@KylinDCA03 unixODBC-2.3.0]# make install |
8 | 上传nmon工具,设置每天0、6、12、18点开启采集,间隔5秒采集一次,一次采集4320次,日志文件保留5天。--监控使用,无需求跳过 0 0,6,12,18 * * * /home/dmdba/nmon -f -t -s 5 -c 4320 -m /opt/dmdbms/nmon_output 0 0 * * * find /opt/dmdbms/nmon_output -type f -mtime +5 -exec rm -f {} \; |
9 | 关闭操作系统防火墙及selinux(已关闭) systemctl stop firewalld.service systemctl disable firewalld.service vi /etc/selinux/config 将SELINUX=enable改为SELINUX=disabled 然后执行sentence 0 |
10 | 检查磁盘调度算法,--如是和操作系统混合使用,可跳过 cat /sys/block/sd*/queue/scheduler 磁盘调度算法已配置,需要将以下命令 echo deadline > /sys/block/sd*/queue/scheduler 设置到/etc/rc.d/rc.local中 |
11 | 修改麒麟信号量 检查/etc/systemd/logind.conf文件RemoveIPC参数,设置为NO,重启服systemctl daemon-reload;systemctl restart systemd-logind |
12 | 关闭防火墙 systemctl stop firewalld systemctl disable firewalld |
(二)数据库安装与初始化实例
上传对应的key文件与达梦数据库安装包至两台服务器上。 数据库安装参考DM8单机安装操作手册,此处暂略。 初始化实例(以下步骤每台机器都执行) su - dmdba cd /opt/dmdbms/dmdbms/bin 初始化实例根据最初规划进行 ./dminit path=/opt/dmdbms/data PAGE_SIZE=32 DB_NAME=DMDB INSTANCE_NAME=DW PORT_NUM=5236 BLANK_PAD_MODE=1 启动数据库后,disql登陆数据库,分别输入以下命令查看: 查看数据库版本:SELECT ID_CODE; 查看License:SELECT * FROM V$LICENSE; |
(三)主库脱机备份并scp到备库
*.11--主库: 关闭数据库实例 cd /opt/dmdbms/dmdbms/bin 启动ap服务 ./DmAPService start ./dmrman backup database '/opt/dmdbms/data/DMDB/dm.ini' full backupset '/opt/dmdbms/db_full_bak'; exit; scp -r /opt/dmdbms/db_full_bak dmdba@192.168.80.14: /opt/dmdbms/ |
(四)备库脱机还原
*.12 --备库: 关闭数据库实例 cd /opt/dmdbms/dmdbms/bin 启动ap服务 ./DmAPService start ./dmrman check backupset '/opt/dmdbms/db_full_bak'; restore database '/opt/dmdbms/data/DMDB/dm.ini' from backupset '/opt/dmdbms/db_full_bak'; recover database '/opt/dmdbms/data/DMDB/dm.ini' from backupset '/opt/dmdbms/db_full_bak'; recover database '/opt/dmdbms/data/DMDB/dm.ini' update db_magic; |
(五)配置实例的dm.ini文件
1、主库
vi /opt/dmdbms/data/DMDB/dm.ini
INSTANCE_NAME =DBSERVER01 |
2、备库
vi /opt/dmdbms/data/DMDB/dm.ini
INSTANCE_NAME = DBSERVER02 |
(六)配置归档配置文件dmarch.ini
1、主库
vi /opt/dmdbms/data/DMDB/dmarch.ini
[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = DW02 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST =/opt/dmdbms/dmarch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 1024 |
2、备库
vi /opt/dmdbms/data/DMDB/dmarch.ini
[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = DW01 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST =/opt/dmdbms/dmarch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 1024 |
(七)配置MAL系统配置文件dmmal.ini
主备库文件内容相同
vi /opt/dmdbms/data/DMDB/dmmal.ini
MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_INST1] MAL_INST_NAME = DBSERVER01 MAL_HOST = 192.168.80.13 MAL_PORT = 61141 MAL_INST_HOST = 192.168.80.13 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 [MAL_INST2] MAL_INST_NAME = DBSERVER02 MAL_HOST =192.168.80.14 MAL_PORT = 61142 MAL_INST_HOST = 192.168.80.14 MAL_INST_PORT = 5236 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 |
(八)配置守护进程配置文件dmwatcher.ini
主库备库文件内容相同
vi /opt/dmdbms/data/DMDB/dmwatcher.ini
[GRP1] DW_TYPE = GLOBAL DW_MODE = MANUAL DW_ERROR_TIME = 120 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 120 INST_OGUID = 453331 INST_INI = /opt/dmdbms/data/DMDB/dm.ini INST_AUTO_RESTART = 0 INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0 |
(九)以mount的方式启动数据库实例
主备依次执行: ./dmserver /opt/dmdbms/data/DMDB/dm.ini mount |
disql连接数据库,主备库都修改oguid
主库 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); |
(十)启动守护进程
主备依次执行 ./dmwatcher /opt/dmdbms/data/DMDB/dmwatcher.ini |
(十一) 配置监视器
vi /opt/dmdbms/dmdbms/bin/dmmonitor.ini MON_DW_CONFIRM = 1 #确认监视器模式 |
三、验证
1、查看数据集群状态:
$ su - dmdba $ cd /opt/dmdbms/dmdbms/bin $ ./dmmonitor /opt/dmdbms/dmdbms/bin/dmmonitor.ini show 守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 REALTIME,归档状态 RSTAT 为VALID。 |
2、主备切换
打开监视器,切换主备 switchover [group_name[.]] [db_name](切换指定组的指定库为Primary库) show 查看是否主库切换为备库,备库切换为主库,切换两次 |
四、其他配置
1、设置core路径
两台都执行 echo "kernel.core_pattern=/opt/dmdbms/core/core-%e-%p-%t" >> /etc/sysctl.conf sysctl -p kill -s 11 $$ 验证core路径是否配置成功 |
2、开启SQL日志
两台都执行 cd /opt/dmdbms/dmdata/DMDB/ vi dm.ini SVR_LOG=1 vi sqllog.ini BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000) BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600) BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100) [SLOG_ALL] FILE_PATH = /opt/dmdbms/dmsqllog PART_STOR = 0 SWITCH_MODE = 2 SWITCH_LIMIT = 512 ASYNC_FLUSH = 1 FILE_NUM = 80 ITEMS = 0 SQL_TRACE_MASK = 2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:22:24:25:26:27:28:29 MIN_EXEC_TIME = 100 USER_MODE = 2 USERS = |
3、调整redo大小
两节点执行:
alter database resize logfile 'DMDB01.log' to 2048;
alter database resize logfile 'DMDB02.log' to 2048;
学习社区: 达梦在线服务平台(https://eco.dameng.com)