DM8-上线流程部署规范

DM8-上线流程部署规范

1. 操作系统检查

操作系统命令
操作系统版本查询uname -a
Linux gzjgdb01 4.19.90-23.8.v2101.ky10.aarch64 #1 SMP Mon May 17 17:07:38 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
操作系统版本查询cat /etc/redhat-release
操作系统查询cat /etc/os-release
服务器CPU查询lscpu
cat /proc/cpuinfo
检查内存free -h
free -m
检查磁盘df -h
检查用户id dmdba
检查是否UUID挂载/是否自动挂载cat /etc/fstab
磁盘调度算法cat /sys/block/sda/queue/scheduler
网速检查ethtool eth0
确认防火墙状态红帽6:service iptables status
红帽7:systemctl status firewalld.service
资源限制检查ulimit -a
服务器时间检查date -R
DD测试磁盘IO性能dd if=/dev/zero of=test bs=32k count=20k oflag=dsync
麒麟V10sp1检查 RemoveIPC 返回结果是否为NOsystemctl show systemd-logind | grep -i removeipc

2. 服务器配置检查

​ 检查数据库服务器配置是否能够满足上线系统功能和性能需求。例如cpu、内存、网络、存储是否能够满足系统扩展要求等。记录硬件测试的基准值:如网络的传输速度、存储的IO性能等。

​ 对于没有配置UPS备用电源的数据库服务器建议管不存储阵列(RAID卡)上的磁盘缓存。

模拟数据库读写小数据来测试磁盘硬件的IO
dd if=/dev/zero of=test bs=32k count=20k oflag=dsync

测试网络传输速度,注意要测试双向的网络传输速度(小于20-30mb/s就要发风险告知了)
scp local_file remote_username@remote_ip:remote_folder

3. 关闭numa检查

3.1 Centos6 系统

NUMA(Non-Uniform Memory Access)架构是为了解决多 CPU 下内存访问冲突,简单来说不在将整个物理内存作为一个整体,而是根据不同的 CPU 区分不同的内存块儿,如 2 颗 CPU 每颗 CPU 使用 64G 内存。当 NUMA 参数 zone_reclaim_mode 在设置为 1 时,内核将要求多路 CPU 尽量从距离较近的系统内存节点(服务器的整体内存在 numa 架构下将被分成若干个节点)分配内存而不是在整个服务器可访问内存的范围内进行内存分配,因此在较高内存占用压力下内存申请会触发内存频繁回收整理的机制严重影响了系统整体性能(长期处于内核态 sys 很高)。进而可能导致 SQL 卡顿问题的发生。

Centos6 系统默认numa是关闭的,如果被打开了,可用如下方法关闭:

1.编辑配置文件
vim /etc/grub.conf
在kernel行添加numa=off

2.查看是否开启numa
numactl --hardware
available:1 nodes(0) #如果是2或多个nodes就说明numa没关掉

在这里插入图片描述

3.2 Centos7 系统

操作前备份:

cp /etc/default/grub /etc/default/grub.bak

3.2.1 编辑配置文件

vim /etc/default/grub
如下图添加 numa=off

在这里插入图片描述

3.2.2 重新生成配置文件

grub2-mkconfig -o /etc/grub2.cfg

在这里插入图片描述

3.2.3 重启操作系统

reboot

3.2.4 重启之后确认

dmesg |grep -i numa

在这里插入图片描述

3.3 FT2000+麒麟v10

麒麟V10+FT2000 ZYJ下查看numa是否开启需要通过3个命令确认,3个命令的查询结构都是关闭的才可以。

1.cat /proc/sys/vm/zone_reclaim_mode
numa=0
验证是否关闭:0是关闭、1是开启

2.sysctl -a |grep -i numa
vm.numa_stat=0
验证是否关闭:0是关闭、1是开启

3.sysctl -a |grep -i numa
关闭的话最后一行显示如下
disable numa statistics,and clear numa counters

4.临时关闭方法
sysctl -w vm.numa_stat=0

5.永久关闭方法,重启生效
vim /etc/sysctl.conf
vm.numa_stat = 0

4. 禁用透明大页

为什么 Transparent HugePages(透明大页)对系统的性能会产生影响?
在 khugepaged 进行扫描进程占用内存,并将 4kPage 交换为 Huge Pages 的这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能。并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为 4k page 优化的程序来说,可能会造成随机的性能下降现象。

4.1 Centos6与rh6系统

4.1.1 编辑配置文件

vim /etc/grub.conf
在kernel的行最后追加 transparent_hugepage=never

在这里插入图片描述

4.1.2 重启生效

reboot

4.1.3 检查

cat /sys/kernel/mm/transparent_hugepage/enabled

在这里插入图片描述

4.2 Centos7与rh7系统

4.2.1 编辑配置文件

vim /etc/sysconfig/grub
如下图添加 transparent_hugepage=never

在这里插入图片描述

4.2.2 重新生成配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

在这里插入图片描述

4.2.3 重启操作系统

reboot

4.2.4 检查

cat /sys/kernel/mm/transparent_hugepage/enabled

在这里插入图片描述

5. 检查内存池

​ 达梦数据库针对从操作系统申请的内存资源进行内存池管理,所有的数据库线程从自己的内存池中进行处理,但是操作系统libc版本大于2.10的话会给数据线程再分配一个内存池,这个内存池数据库是无法管理和释放的。

​ 所以导致数据库进程的VIRT(虚拟内存)占用过高,通过添加操作系统参数MALLOC_ARENA_MAX=4,禁止操作系统额外为数据库线程分配内存,数据库相关线程只是从数据库已申请的内存池中进行资源分配,从而有效控制内存资源使用大小。

vim DmServiceDMSERVER
最后一行添加以下内容,DmServiceDMSERVER是注册服务的名称。
export MALLOC_ARENA_MAX=4

⚠️从数据库8.1.2.94版本(10月月度版)开始,MALLOC_ARENA_MAX已经加入到服务启动脚本中。

6. 防火墙检查

1.检查防火墙状态
systemctl status firewalld
service iptables status

2.暂时关闭防火墙
systemctl stop firewalld
service iptables stop

3.永久关闭防火墙
systemctl disable firewalld
service iptables oof

7. 操作系统资源限制

vim /etc/security/limits.conf
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba hard data unlimited
dmdba soft data unlimited
dmdba hard fsize unlimited
dmdba soft fsize unlimited
dmdba soft core unlimited
dmdba hard core unlimited
vim /etc/systemd/system.conf
最后一行追加以下内容
DefaultLimitCORE=infinity
DefaultLimitNOFILE=100000
DefaultLimitNPROC=100000

8. 操作系统内存参数检查

执行以下命令查看结果是否为0,如果为1或2可能会出现操作系统物理内存有空余,但数据库服务无法申请内存的严重情况。

1.检查是否为0,为0则不用修改
cat /proc/sys/vm/overcommit_memory
0

2.不为0的修改方法(临时修改)
echo 0 > /proc/sys/vm/overcommit_memory

3.永久生效
vim /etc/sysctl.conf
在最后一行追加如下内容
vm.overcommit_memory=0

4.使配置文件生效
sysctl -p

9. 磁盘调度算法检查

​ 查看对应的调度算法:cat /sys/block/{DEVICE-NAME}/queue/scheduler,注意把{DEVICE-NAME}替换回数据库所使用的对应的磁盘名称,以下以sda为例。

9.1 Centos6

9.1.1 查看磁盘调度算法

cat /sys/block/sda/queue/scheduler

在这里插入图片描述

上图选中的调度算法是[cfg],需要修改调度算法为deadline

9.1.2 修改磁盘算法

1.临时更改I/O调度方法,重启后失效:
echo deadline > /sys/block/sda/queue/scheduler

2.永久更改I/O调度算法
vi /boot/grub/menu.lst
更新下图内容:

在这里插入图片描述

9.1.3 确认

cat /sys/block/sda/queue/scheduler

在这里插入图片描述

9.2 Centos7

9.2.1 查看磁盘调度算法

cat /sys/block/sda/queue/scheduler

在这里插入图片描述

如果上图中的调度算法是[cfg],则需要修改调度算法为deadline

9.2.2 修改磁盘算法

1.临时更改I/O调度方法,重启后失效:
echo deadline > /sys/block/sda/queue/scheduler

2.永久更改I/O调度方法:
grubby --update-kernel=ALL --args="elevator=deadline"

3.重启
reboot

9.2.3 确认

cat /sys/block/sda/queue/scheduler

在这里插入图片描述

10. 禁用swap分区

在 Linux 下,SWAP 的作用类似 Windows 系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当 SWAP 分区(虚拟成内存)使用,从而解决内存容量不足的情况。
数据库系统一般都对响应延迟比较敏感,如果使用 swap 代替内存,数据库服务性能必然不可接受。对于响应延迟极其敏感的系统来讲,延迟太大和服务不可用没有任何区别,比服务不可用更严重的是,swap 场景下进程就是不死,这就意味着系统一直不可用,再想想如果不使用 swap 直接 oom,是不是一种更好的选择。
注:swap 的关闭需要视情况而定,内存充裕(较大)关闭,内存太小不关闭。

永久禁用swap分区,修改后重启服务器生效
vim /etc/fstab
注释掉swap分区那一行

11. 数据库层面检查

11.1 数据库版本检查

DM7:
select * from v$version;

DM8:(2选1即可,推荐第一个)
select build_version from v$instance;
select id_code();

11.2 授权信息检查+序列号

select * from v$license;

11.3 数据库数据文件总大小

select '数据文件总大小', TOTAL_SIZE*PAGE/1024/1024||'MB' from v$database;

11.4 归档大小+归档上线

select '是否启用归档',DECODE(ARCH_MODE,'Y','是','N','否') from v$database;

11.5 查询授权到期时间

select expired_date from v$license;

11.6 替换Key授权

call sp_load_lic_info();

12. 数据库安装

⚠️KEY文件改名,移至DM安装目录的bin下

cp /xxx/*.key /dm8/bin/dm.key

1.创建用户组
groupadd dinstall

2.创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

3.修改密码
passwd dmdba

4.下载安装包
wget https://download.dameng.com/eco/adapter/DM8/202207/dm8_20220902_x86_rh6_64_ent.zip

5.创建安装目录
mkdir -p /dm8

6.解压
unzip -d /opt/ dm8_20220701_x86_rh6_64_ent.zip

7.修改目录所有者
chown -R dmdba:dinstall /dm8/

8.挂载镜像
mount -o loop /opt/dm8_20220701_x86_rh6_64_ent/dm8_20220701_x86_rh6_64_ent_8.1.2.128.iso /mnt

9.切换用户启动
[root@dm01 ~]# su - dmdba
[dmdba@dm01 ~]$ cd /mnt/
[dmdba@dm01 /mnt]$ ./DMInstall.bin -i		#普通安装
[dmdba@dm01 /mnt]$ ./DMInstall.bin			#图形化安装

10.创建 DmAPService,否则会影响数据库备份(使用root用户)
[root@dm01 ~]# /dm8/script/root/root_installer.sh

11.初始化
[dmdba@dm01 /dm8/bin]$ ./dminit path=/dm8 PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236

12.注册服务(root用户)
[root@dm01 ~]# cd /dm8/script/root/
[root@dm01 /dm8/script/root]# ./dm_service_installer.sh -t dmserver -dm_ini /data/DAMENG/dm.ini -p DMSERVER

13.手动配置归档
vim /dm8/data/DAMENG/dm.ini
修改ARCH_INI=1
编辑 dmarch.ini 文件,保存在 dm.ini 所在的目录
vim /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL 
ARCH_DEST = /home/dmdba/dmarch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 20480

14.前台启动
./dmserver path=/dm8/data/DAMENG/dm.ini

13. 备份策略

每周六晚上00:30全备

每天晚上03:00增量备份

删除180天之前的备份

--创建代理环境
SP_INIT_JOB_SYS(1);

--fullbak 每周六凌晨00:30全备
call SP_CREATE_JOB('FULBAK',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('FULBAK');

call SP_ADD_JOB_STEP('FULBAK', 'ST1', 6, '01000000/opt/dmdbms/data/backup', 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('FULBAK', 'st2', 1, 2, 1, 1, 0, '00:30:00', NULL, '2020-12-04 16:36:55', NULL, '');

call SP_JOB_CONFIG_COMMIT('FULBAK');


--increbak  每天凌晨3:30增备
call SP_CREATE_JOB('INCREBAK',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('INCREBAK');

call SP_ADD_JOB_STEP('INCREBAK', 'st2', 6, '11000000/opt/dmdbms/data/backup/|/opt/dmdbms/data/backup', 1, 2, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('INCREBAK', 'st2', 1, 2, 1, 126, 0, '03:30:00', NULL, '2020-12-04 16:39:23', NULL, '');

call SP_JOB_CONFIG_COMMIT('INCREBAK');


--delbak 删除180天之前的备份
call SP_CREATE_JOB('DELBAK',1,0,'',0,0,'',0,'');

call SP_JOB_CONFIG_START('DELBAK');

call SP_ADD_JOB_STEP('DELBAK', 'ST2', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/data/DAMENG/backup'');
call SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-22);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('DELBAK', 'ST2', 1, 2, 1, 4, 0, '06:30:00', NULL, '2020-12-09 14:00:25', NULL, '');
call SP_JOB_CONFIG_COMMIT('DELBAK');

详情请参考:https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值