生产MySQL系统安装准备

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 生产MySQL系统安装准备

硬件标准化

标准化数据库专用服务器

帮助公司和运维团队,选择最合适MySQL数据库运行的服务器硬件,从品牌、CPU、MEM、IO设备、网络设备、存储设备等各个层次进行合理建议.而不是上采购人员、商务人员或根本不懂数据库的人员制定服务器标准。杜绝类似:内存小了、磁盘没法用、不符合最低3-5年扩展性硬件等此类问题出现。  

标准化服务器硬件带来的收益

出现业务系统故障或性能问题。可以让拍错或者优化时间大大缩减。帮助管理员可以快速根据基准值结合经验,定位瓶颈问题。

操作系统及配置标准化

标准化数据库操作系统

互联网企业广泛应用centos系列操作系统。并且在同一组集群架构的服务器系统都保持系统和内核版本一致。

标准化数据库稳定系统

采用Centos7.2以上双数版。并且安装同版本光盘稳定兼容较好的软件包  

标准化操作系统及硬件参数

关闭NUMA

a. bios级别:
在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能。
# numactl --hardware
available: 1 nodes (0) #如果是2或多个nodes就说明numa没关掉
b. OS grub级别:
vi /boot/grub2/grub.cfg
#/* Copyright 2010, Oracle. All rights reserved. */
default=0
timeout=5
hiddenmenu
foreground=000000
background=ffffff
splashimage=(hd0,0)/boot/grub/oracle.xpm.gz
title Trying_C0D0_as_HD0
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-128.1.16.0.1.el5 root=LABEL=DBSYS ro bootarea=dbsys
rhgb quiet console=ttyS0,115200n8 console=tty1 crashkernel=128M@16M numa=off
initrd /boot/initrd-2.6.18-128.1.16.0.1.el5.img
在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%;
c. 数据库级别:
mysql> show variables like '%numa%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| innodb_numa_interleave | OFF |
+------------------------+-------+
或者:
vi /etc/init.d/mysqld
找到如下行
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path"
$other_args >/dev/null &
wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
将$bindir/mysqld_safe --datadir="$datadir"这一行修改为:
/usr/bin/numactl --interleave all $bindir/mysqld_safe --datadir="$datadir" --pidfile="$mysqld_pid_file_path" $other_args >/dev/null & 
wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?  

image-ugjz.png

备注: Non-Uniform Memory Access (NUMA) 是一种针对多处理器系统(包括多核心系统)的体系结构设计,它将内存分为不同的区域,每个区域可以被给定的一个或多个处理器访问。在这种设计中,由于不同区域的内存访问延迟不同,因此需要优化数据访问的方式,同时这种机制也会产生一定的性能开销。


在数据库场景中,通常需要大量的内存访问,而 NUMA 机制在分配内存时可能会产生由于不同区域内存访问延迟的差异而导致的性能瓶颈。因此,在一些数据库场景中,关闭 NUMA 可以提高整体性能。


需要注意的是,是否关闭 NUMA 取决于具体的应用场景和硬件环境。在某些情况下,开启 NUMA 可以提高性能。因此,在进行相应的调整之前,需要进行充分的测试和评估。

开启CPU高性能模式

关闭THP

THP 介绍

THP是Transparent Huge Pages的缩写,是一种Linux内核的特性。当THP启用时,操作系统会自动将内存页合并为更大的“超级页”,这样可以减少页面表的大小,降低内存管理的开销,从而提高内存管理的性能。
在数据库场景中,由于数据库常常需要大量的内存管理操作,开启THP可能会导致一些问题。例如:
1. THP可能会占用大量内存空间,这可能会影响数据库的性能。
2. THP可能会导致不可预测的性能问题,例如内存调度和缓存管理问题。
3. 由于THP会改变页面分配的方式,因此可能会导致应用程序无法发现重要的内存错误。
因此,在一些数据库场景中,关闭THP可能是一种更好的选择。但是,需要注意的是,这也取决于具体的硬件环境和应用场景,因此在关闭THP之前,需要先进行充分的测试和评估。 

具体操作

vi /etc/rc.local
在文件末尾添加如下指令:
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
[root@master ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@master ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never] 

网卡绑定

bonding技术,业务数据库服务器都要配置bonding继续。建议是主备模式(mode1),交换机堆叠。

存储多路径

使用独立SAN存储设备的话,需要配置多路径软件:

使用linux 自带多路径或者厂商提供的多路径软件

系统层面参数优化

a. 更改文件句柄和进程数
内核优化 /etc/sysctl.conf
vm.swappiness = 5(也可以设置为0)
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10
net.ipv4.tcp_max_syn_backlog = 819200
net.core.netdev_max_backlog = 400000
net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=0
b. 防火墙
禁用selinux : /etc/sysconfig/selinux 更改SELINUX=disabled.
iptables如果不使用可以关闭。可是需要打开MySQL需要的端口号
c. 文件系统优化
推荐使用XFS文件系统
MySQL数据分区独立 ,例如挂载点为: /data
mount参数 defaults, noatime, nodiratime, nobarrier 如/etc/fstab:
/dev/sdb /data xfs defaults,noatime,nodiratime,nobarrier 1 2
这个字符串是让系统在启动时自动挂载/dev/sdb分区到/data目录,使用XFS文件系统,并且指定了一些挂载选项:defaults表示使用默认参数,noatime和nodiratime表示禁用文件访问时间的记录以提高性能,nobarrier表示禁用写入缓存以提高性能但也增加了数据丢失的风险。"1 2" 表示在启动时按照顺序挂载,数字代表处理特殊情况的顺序,1表示根目录 "/", 2表示其他需要挂载的文件系统。
d. 不使用LVM
在数据库场景下,使用LVM(逻辑卷管理)作为磁盘管理技术可能会带来一些不必要的问题,如下:
1. 额外的性能开销:LVM需要在磁盘和文件系统之间添加一层逻辑层,这会带来一定的性能开销。
2. 维护复杂度:使用 LVM 会增加磁盘管理的复杂度,诊断问题和维护时也会变得更加困难。
3. 数据丢失风险:LVM 可能会导致磁盘故障期间数据的丢失,而在数据库场景下数据是极其重要的,所以这是一个不可接受的风险。
4. 难以进行最小化部署:数据库服务器通常需要遵循最小化安装的最佳实践,使用 LVM 可能会扩大最终的部署规模。
因此,在数据库场景下,建议使用专用存储解决方案或硬件RAID,以最大程度地降低数据丢失的风险并提高性能。
e. io调度
SAS : deadline
SSD&PCI-E: noop
centos 7 默认是deadline
cat /sys/block/sda/queue/scheduler
#临时修改为deadline(centos6)
echo deadline >/sys/block/sda/queue/scheduler
vi /boot/grub/grub.conf
更改到如下内容:  

预装MySQL前硬件烤机压测

stress 进行CPU、IO、MEM烤机压测

a. 安装
yum install -y epel-release
yum install -y stress
b. 烤机CPU
[root@slave1 ~]# stress -c 4
c. 烤机 MEM
stress -m 3 --vm-bytes 300M
d. 烤机多参数
stress -c 4 -m 2 -d 1  

FIO 进行定制化IO烤机压测

FIO 介绍

FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。
磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写,混合读写两大类。
FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。
FIO是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能(也包含文件系统:如针对网络文件系统 NFS 的IO测试)。
FIO压测可以帮助管理员,提前预知磁盘瓶颈,及时作出扩容建议。也可以作为有效烤机的 

FIO压测

a. 环境准备
mkdir -p /testio
mkfs.xfs /dev/sdb
mount /dev/sdb /testio
dd if=/dev/zero of=/testio/test bs=16k count=512000
b. 安装
yum install libaio libaio-devel fio
c. 各类压测
# 测试随机写:
fio --filename=/testio/test --iodepth=4 --ioengine=libaio -direct=1 --rw=randwrite --bs=16k --size=2G --numjobs=64 --runtime=20 --group_reporting --name=test-rand-write
# 测试顺序读取:
fio --filename=/testio/test -iodepth=64 -ioengine=libaio --direct=1 --rw=read --bs=1m --size=2g --numjobs=4 --runtime=10 --group_reporting --name=test-read
# 测试顺序写性能
fio --filename=/testio/test.big -iodepth=64 -ioengine=libaio -direct=1 -rw=write-bs=1m -size=2g -numjobs=4 -runtime=20 --group_reporting -name=test-write
测试随机读:
fio --filename=/testio/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randread -bs=4k -size=2G -numjobs=64 -runtime=20 --group_reporting -name=test-rand-read
# 16k,70%读取,30%写入:
fio --filename=/dev/sdb --direct=1 --rw=randrw --refill_buffers --norandommap --randrepeat=0 --ioengine=libaio --bs=4k --rwmixread=70 --iodepth=16 --numjobs=16 --runtime=60 --group_reporting --name=73test
# 重要参数解读:
--filename 需要压测的磁盘或者测试文件。
--direct=1 是否绕过文件系统缓存
-ioengine=libaio 采用异步或者同步IO
-iodepth=64 IO队列深度。一次发起多少个IO请求,一般SSD或者flash可以较大。
--numjobs=16 测试并发线程数。在RAID10或Raid5可加大参数。
--rwmixread=70 混合读写,read的比例。一般读写比例28或者37。
--group_reporting 统计汇总结果展示。
--name 起个名。
--rw=randrw 测试类型. 

选用GA版本mysql

1、稳定版:选择开源的社区版的稳定版GA版本。
2、选择mysql数据库GA版本发布后6个月-12个月的GA双数版本,大约在15-20个小版本左右。
3、要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本。
4、要考虑开发人员开发程序使用的版本是否兼容你选的版本。
5、作为内部开发测试数据库环境,跑大概3-6个月的时间。
6、优先企业非核心业务采用新版本的数据库GA版本软件。
7、向DBA高手请教,或者在技术氛围好的群里和大家一起交流,使用真正的高手们用过的好用的GA版本产品。
最终建议: 8.0.20是一个不错的版本选择。向后可以选择双数版。 

image-kukf.png

其他数据库工具

官方工具:
workbench
mysql-shell
第三方:
PXB
PT
binlog2sql
FIO
sysbench
stress
navicat/sqlyog 


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
12月前
|
SQL 关系型数据库 MySQL
CentOS 7.5系统安装使用Mysql 5.7数据库
CentOS 7.5系统安装使用Mysql 5.7数据库
403 0
|
关系型数据库 MySQL Linux
百度搜索:蓝易云【Linux系统安装MySQL详细教程】
这是一个基本的MySQL安装和配置过程的概述。请注意,具体的步骤可能因您使用的Linux发行版和版本而有所不同。如果您在执行过程中遇到问题,请参考相关Linux发行版的文档或MySQL的官方文档,或者寻求社区的帮助。
549 1
|
12月前
|
数据可视化 Java 数据安全/隐私保护
食品生产管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
食品生产管理系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
110 0
|
2月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
4月前
|
安全 关系型数据库 MySQL
Centos、OpenEuler系统安装mysql
Centos、OpenEuler系统安装mysql
|
5月前
|
监控 NoSQL Java
java云MES 系统源码Java+ springboot+ mysql 一款基于云计算技术的企业级生产管理系统
MES系统是生产企业对制造执行系统实施的重点在智能制造执行管理领域,而MES系统特点中的可伸缩、信息精确、开放、承接、安全等也传递出:MES在此管理领域中无可替代的“王者之尊”。MES制造执行系统特点集可伸缩性、精确性、开放性、承接性、经济性与安全性于一体,帮助企业解决生产中遇到的实际问题,降低运营成本,快速适应企业不断的制造执行管理需求,使得企业已有基础设施与一切可用资源实现高度集成,提升企业投资的有效性。
96 5
|
5月前
|
网络协议 关系型数据库 MySQL
Linux Ubuntu系统安装MySQL并实现公网连接本地数据库【内网穿透】
Linux Ubuntu系统安装MySQL并实现公网连接本地数据库【内网穿透】
|
5月前
|
SQL 关系型数据库 MySQL
MySQL生产问题实践总结
MySQL生产问题实践总结
56 1
MySQL生产问题实践总结
|
关系型数据库 MySQL 数据库
在win10系统安装mysql 8.0.21
win10系统安装mysql 8.0.21
96 0
|
SpringCloudAlibaba 关系型数据库 MySQL
SpringCloud Alibaba学习(四):Linux版Nacos+MySQL生产环境配置
SpringCloud Alibaba学习(四):Linux版Nacos+MySQL生产环境配置
510 1
SpringCloud Alibaba学习(四):Linux版Nacos+MySQL生产环境配置

热门文章

最新文章