

因为世运会在成都举办,昨天在客户现场值守到了快大半夜,一天除了工作以外,就是画了一张图。

画这张图的主要原因其实是最近和一些小伙伴聊到在国产化硬件或者使用国产基于Linux发展的OS上运行各种数据库时候遇到了一些问题,因此想着总结一下。本期内容不一定包含所有检查、操作项的所有解释及操作流程,如有缺失请自行查阅相关信息;如有遗漏或不合理之处可留言反馈。
关于防火墙,无论是firewalld还是念旧使用iptables,我们一般都会选择将其关闭以避免出现主机无法访问的情况;在一些特定场合需要限制网络访问时,需要通过防火墙对IP和端口进行限制。 SELinux全称为安全增强式 Security-Enhanced Linux(SELinux),是一个在内核中实践的强制存取控制(MAC)安全性机制。SELinux的机制就不做过多深入介绍了,在大多数情况下开启SELinux会导致各种软件无法运行,一般需要关闭,当然也有像Oracle这类的可以在SELinux开启的情况下正常运行;当然在一些特定场合下还是得配置SELinux。
感觉在很多地方都没有配置主机名和/etc/hosts,这个确实是一个按需的操作,但其实这是个很好用的配置内容,类似于DNS可以让你输入网址而不是IP。在一些集群配置中使用主机名管理也更加方便,稍微麻烦一点的是当全局主机出现增减时需要同步更新hosts文件。
这里就不多讲了,不同的数据库需要不同的系统参数,一般通过/etc/sysctl.conf进行配置,其中也包含大页配置。
这里包含创建用户,设置密码,有时候还需要配置一下用户组。然后就是对安全进行配置,比如通过配置PAM限制su、指定密码强度等;和SSH的配置,比如加密算法、root禁登等。
在用户配置完成后一般会根据需求配置其相关的一些限制,比如打开文件数、信号量、进程、内存等限制。主要在以下文件/目录进行配置:
/etc/security/limits.conf
/etc/security/limits.d/xxx.conf
一般来说大多数数据库运行要求需要关闭透明大页(Transparent HugePages),以避免出现性能或者运行问题。可以通过以下命令检查,输出为[never]即为关闭。
[oracle@svXXX ~]$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
#如果上面返回结果不是never则需要进行以下配置
cat >>/etc/rc.d/rc.local <<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local
reboot
在运行某些特定程序的时候可能需要对内核进行升级或增加额外编译内容。
在多核心CPU环境下有时候是需要配置NUMA的,主要涉及关闭或开启以及策略配置。可以在GRUB中配置NUMA是否开启、使用numactl配置策略。
一些数据库为了避免性能出现抖动要求关闭SWAP,或者直接不配置SWAP分区。在开启SWAP的情况下对其大小也会有一定要求。
大多数情况下会自动选择,
# cat /sys/block/<设备名>/queue/scheduler
[oracle@ ~]$ cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
[oracle@svXXX ~]$ cat /sys/block/nvme0n1/queue/scheduler
[none] mq-deadline kyber
按需安装软件包,有些数据库软件会自带并自动安装(当然有些数据库安装也会自动完成对操作系统的部分配置)。
创建数据库安装、数据或日志目录,并配置对应的权限。
选择chronyd或ntpd完成时间同步,这是必须的!不止是数据库,不止集群,而是所有主机。
其实这个才是本篇文章比较重要的部分,在部分国产CPU上操作系统选择了错误的时钟源导致性能十分低下的线下,可以通过下面两个文件查看可用时钟源和当前时钟源:
[oracle@svXXX ~]$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
[oracle@svXXX ~]$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
关于时钟源相关的解释和相关配置需要注意的内容,OceanBase有一篇比较详尽的介绍,这里直接贴出来供大家查阅:
https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002356016
本期通过一张图,简单介绍了安装数据库的Linux操作系统需要检查、操作的配置内容。 老规矩,知道写了些啥。