MySQL 上线检查单

 

 

 

一、检查部署架构图

说明:检查高可用方案, 灾备方案;并询问服务器架构,如果是虚拟机,需询问虚机的备份计划

 

 

 

二、确定部署信息

说明:ip/port/... 元信息

IP地址

截图

 

 

 

 

 

三、检查服务器初始化环境

3.1 检查服务器操作系统

# 操作系统

shell> cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)

 

# 提前修改主机名

shell> hostname test

 

# 配置主机名和ip的文件

shell> vi /etc/hosts 127.0.0.1

localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6localhost6.localdomain6

~

 

IP地址

截图

 

 

 

 

 

3.2 配置swap

数据库服务器必须降低 swap 的使用权重 ,Linux内核3.5-rc1及更高版本建议swappiness设置为1;Linux内核低于3.5-rc1版本建议swappiness设置为0

#检查服务器内核版本

shell> uname -r

 

#内核版本为3.5-rc1或更高版本

shell> vim /etc/sysctl.conf

vm.swappiness = 1

 

#内核版本低于3.5-rc1版本

shell> vim /etc/sysctl.conf

vm.swappiness = 0

 

# 保存后使其生效

shell> sysctl -p

 

 

IP地址

截图

 

 

 

 

 

 

3.3 MySQL运行用户的 ulimit 设置

数据库使用的系统资源会很多,默认 1024 的最大文件句柄数、线程数不足以支持数据库的运行,需要设置(公司DMP及BALM产品自动进行ulimit配置;非公司产品,根据实际MySQL运行用户进行调整

shell> vim /etc/security/limits.d/mysql.conf

mysql soft nofile 65535

mysql hard nofile 65535

mysql soft nproc 65535

mysql hard nproc 65535

 

IP地址

截图

 

 

 

 

 

3.4 文件系统

① 如果客户环境可由我们自行规划文件系统,可进行以下规划

A. 检查数据盘是LVM还是数据盘

a.  lsblk

b.  lvdisplay

B. 数据盘使用逻辑卷(LVM)方式管理,便于扩展

C. 文件系统

  1. a.  redhat8/centos8 推荐使用 xfs
  2. b.  redhat7/centos7 推荐使用 xfs
  3. c.  redhat6/centos6 推荐使用 ext4

D. redhat8/centos8 磁盘调度算法

  1. a.  SAS设备使用 mq-deadline
  2. b.  SSD设备使用 none

E. 磁盘调度算法

  1. a.  SAS设备使用 deadline
  2. b.  SSD设备使用 noop

F. 挂载参数

  1. a.  默认值,noatime,nodiratime,nobarrier

 F.查看磁盘UUID

 

  1. a.  lsblk -f
  2. b.  blkid

# 修改磁盘调度算法

shell> echo "deadline" > /sys/block/sdb/queue/scheduler

shell> vi /etc/rc.local

echo "deadline" > /sys/block/sdb/queue/scheduler

 

# 修改挂载参数

shell> mount -oremount,noatime,nodiratime,nobarrier /dev/sdb /data   

shell> vim /etc/fstab                                               

UUID=de86ba8a-914b-4104-9fd8-f9de800452ea   /data   ext4  defaults,noatime,nodiratime,nobarrier  1 1    

 

 

② 如要上线RDS系统的数据库节点,还需配置如下(非RDS环境上线略过

Quota配置

注意:不支持分区盘

l  准备⼀块已经格式化或者lvm,修改/etc/fstab, 对需要挂载的路径添加usrquota,grpquota 属性

shell> vim /etc/fstab

UUID=9a31aa5d-3e05-473d-bb17-05101bbc9bec   /    xfs   defaults  0 0

UUID=de86ba8a-914b-4104-9fd8-f9de800452ea            /data   ext4    defaults,usrquota,grpquota  1   2

 

l   mount -a 挂载 (如已挂载,需先卸载再挂载)(注:xfs ⽂件系统跳过步骤 3,4)

shell>  mount -a

 

l  创建quota配置⽂件 (data 为 2 中挂载的路径 )

shell>  quotacheck -cug /data

 

l  设置quota 启用

shell>  quotacheck -auvg

 

l  完成上述步骤后代表 quota 磁盘已经设置完成,磁盘分区下会有aquota.group ,aquota.user两个文件,此时可以使⽤磁盘隔离。

 

IP地址

截图

 

 

 

 

 

 

 

3.5 配置ntp服务

备注:[以下两种采用一种形式即可]

 

同步时间有两种形式,ntp与ntpdate+crontab。

      ntp使用服务的方式同上级同步时间;

      ntpdate是使用命令,直接同时间服务同步时间,经常与crontab联合使用.

 

如下是配置ntp服务的方式来进行时间同步:

根据实际的 ntp 服务器地址修改配置

shell> vim /etc/ntp.conf

# Please consider joining the pool (http://www.pool.ntp.org/join.html).

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

 

# 改为

# Please consider joining the pool (http://www.pool.ntp.org/join.html).

server 100.65.0.1 iburst

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

 

##  启动服务:  ##

# 先手工对时一下:

shell> ntpdate 100.65.255.1

# redhat6/centos6

shell> service ntpd start

shell> chkconfig ntpd on

 

# redhat7/centos7

shell> systemctl start ntpd

shell> systemctl enable ntpd

 

# 注:修改时间后须手动重启crontab,cron的执行时间才会同步

shell> systemctl restart crond

 

IP地址

截图

 

 

 

 

3.6 检查时区是否为东八区

# 查看时区,如果不是东八区需要按时区进行校准

shell> date -R

Wed, 06 Mar 2019 14:17:16 +0800

 

# 设置软连接,进行时区校准

shell> ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

# 注:修改时间后须手动重启crontab,cron的执行时间才会同步

shell> systemctl restart crond

 

IP地址

截图

 

 

 

 

3.7 关闭 iptables 及 selinux

服务器上的 iptables 应该是关闭的,否则规则可能对数据库服务造成影响,需要与客户确认

# 关闭iptables

# redhat6/centos6

shell> /etc/init.d/iptables stop

shell> chkconfig iptables off

 

# redhat7/centos7

shell> systemctl stop firewalld.service

shell> systemctl disable firewalld.service

 

# 关闭selinux

临时关闭

shell> setenforce 0

永久关闭

shell> vi /etc/selinux/config

SELINUX=disabled

SELINUXTYPE=targeted

 

IP地址

截图

 

 

 

 

 

3.8 核对 umask

查看/ etc / profile并搜索umask关键字,查看以下代码是否被扩展

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

     umask 002

else

    umask 022

fi

#查看当前系统umask的值,确保与文件中的值一致

shell>  umask

0022

 

IP地址

截图

 

 

 

 

3.9 配置sar

3.9.1创建sar、pidstat的数据存放目录

shell> mkdir /var/log/sysstat_action

 

3.9.2校验sadc、sar、pidstat命令的绝对路径:(用于下面数据的采集使用)

shell> find / -name sadc  && which sar   && which pidstat

3.9.3配置sar数据采集以及生成报告,在/etc/cron.d/sysstat 配置文件下添加如下两项配置:(sadc、sar命令根据环境的绝对路径填写)

*/1 * * * * root /usr/lib64/sa/sadc -F -L -S ALL 1 1 /var/log/sysstat_action/sa

53 23 * * * root /usr/bin/sar -A -f /var/log/sysstat_action/sa > /var/log/sysstat_action/sar

说明: 第一行每分钟生成sa报告, 第二行每天将sa格式转为sar(人类可读格式)

 

3.9.4配置pidstat数据采集,在/etc/cron.d/sysstat配置文件里添加如下配置。(pidstat命令根据环境的绝对路径填写)

*/1 * * * * root /usr/bin/pidstat -urdw -p ALL >>/var/log/sysstat_action/pidstat

 

3.9.5在/etc/logrotate.d目录下分别创建pidstat、sa文件,内容如下:

shell> cat /etc/logrotate.d/pidstat

/var/log/sysstat_action/pidstat {

    missingok

    notifempty

    daily

    compress

    maxsize 400M

    rotate 31

    dateext

    dateformat -%Y_%m_%d_%H_%s

    create 0600 root root

参数说明:

compress-------压缩方式gzip,以一个小时的量进行压缩,压缩率接近10:1

maxsize 400M-----按照pidstat的采集方式,一个小时产生的数据量大致12M左右,一天的量288M

rotate 31-------------保留副本数量

 

shell> cat /etc/logrotate.d/sa

/var/log/sysstat_action/sa {

    missingok

    notifempty

    daily

    compress

}

/var/log/sysstat_action/sar {

    missingok

    notifempty

    daily

    compress

    rotate 31

    dateext

    dateformat -%Y_%m_%d_%H

}

参数说明:

daily--------------------sar采集的数据文件,一天rotate一次。由于在下次复用该文件之前,已经生成相应的报告,因此不需要设置rotate数量。

3.9.6在/etc/cron.d/sysstat 配置logrotate计划任务

* */1 * * * root /usr/sbin/logrotate -v /etc/logrotate.d/pidstat /etc/logrotate.d/sa

 

3.9.7容量评估:

结论:/var/log/sysstat_action至少留有2G以上空间

注意:如果在使用cron过程中,时间格式、命令都正确的前提下,无法触发执行计划,请重启计划任务服务!!!!

 

容量评估办法:

 

sar 大小预估:通过一分钟生成的sa数据量解析成文本,评估一分钟产生的文件大小,之后可以评估出一天的量,因为服务器的配置不一样,因此具体到某个环境,需要单独评估

pidstat大小预估:因为服务器运行的进程数量、进程信息不一样,因此pidstat获得的报告,需要根据具体的服务器运行的进程,通过一分钟获取文件的大小来评估一天的量。

 

IP地址

截图

 

 

 

 

 

 

3.10 配置历史

让 history 记录更多历史操作记录,并记录时间戳和执行用户

shell> vi /etc/bashrc  # 在末尾添加:

export HISTFILESIZE=500000000

export HISTSIZE=1000000

export PROMPT_COMMAND="history -a"

export HISTTIMEFORMAT='%F %T '

export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  `whoami`  "

 

# 使配置生效:

shell> source /etc/bashrc

 

 

IP地址

截图

 

 

 

 

 

3.11 卸载系统自带旧版本MySQL相关RPM包

某些服务系预装了 MySQL,但是版本是5.1,避免客户端版本差异带来的影响,应该卸载这类rpm包

shell> rpm -qa|grep mysql -i

shell> rpm -e --nodeps mysql-xxx-5.1..x86_64

shell> mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d`

如系统中存在perl-DBD-MySQL-4.013-3.el6.x86_64mysql-libs-5.1.73-3.el6_5.x86_64可保留不卸载

 

IP地址

截图

 

 

 

 

 

3.12 关闭numa

服务器关闭numa会影响所有进程,关闭numa主要是解决MySQL服务器swap严重以及内存泄漏的问题。需要注意的是MySQL5.7.9。 。如果使用MySQL5.7.9之后的版本,可以不用关闭服务器的numa。

 

3.12.1. 修改 grub.conf

RHEL/CentOS 6:

在 /boot/grub/grub.conf 文件中修改 kernel 行(添加numa=off):

shell> vi /etc/default/grub

GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_vm-210/root rd.lvm.lv=rhel_vm-210/swap vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rhgb quiet numa=off

 

 

对于RHEL 7:

1、在/etc/default/grub 文件中修改 kernel 行:

shell> vi /etc/default/grub

GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_vm-210/root rd.lvm.lv=rhel_vm-210/swap vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rhgb quiet numa=off

 

2、RHEL7/CentOS7 必须要重建 GRUB 配置文件才能生效:

shell> grub2-mkconfig -o /etc/grub2.cfg

 

IP地址

截图

 

 

 

 

 

3.13关闭透明大页面(THP)

3.13.1 查询系统是否开启了 THP 命令

shell> cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

shell> cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

如果括号中的是 always 表示开启了,never 则表示未开启

 

3.13.2 实时生效关闭方案

shell> echo never >> /sys/kernel/mm/transparent_hugepage/enabled

shell> echo never >> /sys/kernel/mm/transparent_hugepage/defrag

 

3.13.3 写进配置文件(需要重启)

在/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

 

执行以下操作,使rc.local可以在系统引导期间执行

shell> chmod +x /etc/rc.d/rc.local

 

IP地址

截图

 

 

 

 

 

3.14 检查系统网卡信息

3.14.1 检查IP是否为静态绑定

需要检查网卡是否为静态绑定,如果是dhcp,会导致IP丢失,或者服务器IP绑定成vip,导致DMP由于ping不通真实IP,出现停机

正确的配置:

shell> cat /etc/sysconfig/network-scripts/ifcfg-bond1

DEVICE = bond1

NAME = bond1

TYPE = Bond

BONDING_MASTER = yes

IPADDR = 10.252.205.120

GATEWAY = 10.252.205.1

NETMASK = 255.255.255.0

ONBOOT = yes

BOOTPROTO = static#也许使用dhcp

METRIC = 0

NM_CONTROLLED = no

PEERDNS = no

MACADDR = 28:7b:09:c1:f4:5a

BONDING_OPTS ='mode = 4 miimon = 100 use_carrier = 1'

 

错误的配置:

shell> cat /etc/sysconfig/network-scripts/ifcfg-bond1

DEVICE = bond1

NAME = bond1

TYPE = Bond

BONDING_MASTER =是

IPADDR =

GATEWAY =

NETMASK =

ONBOOT =是

BOOTPROTO = dhcp        #也许使用dhcp

METRIC = 0

NM_CONTROLLED =否

PEERDNS =否

MACADDR = b4:fb:f9:7d:de:39

BONDING_OPTS ='mode = 4 miimon = 100 use_carrier = 1'

 

IP地址

截图

 

 

 

 

3.14.2检查网卡名是否过长

网卡名过长会导致DMP绑定不了SIP的情况

DMP版本

网卡名长度

<3.19.05.1

<5

>=3.19.05.1

<10

 

IP地址

截图

 

 

 

 

3.15 检查系统虚拟内存超配参数

虚拟机环境的宿主机超配,cpu超配。并给客户提出风险告知。

检查系统虚拟内存超配参数

 

shell> sysctl -A | grep "vm.overcommit_memory"

sysctl: reading key "net.ipv6.conf.all.stable_secret"

sysctl: reading key "net.ipv6.conf.default.stable_secret"

sysctl: reading key "net.ipv6.conf.eth0.stable_secret"

sysctl: reading key "net.ipv6.conf.lo.stable_secret"

vm.overcommit_memory = 0

 

确认vm.overcommit_memory为0, 如果为其他值, 需报备

(场景, 若vm.overcommit_memory为2, 虚拟内存超配受到vm.overcommit_ratio限制, 可能无法分配足够大的内存)

 

IP地址

截图

 

 

 

 

3.16 用户密码过期时间

# 检查用户密码过期时间,默认99999

shell> cat /etc/login.defs |grep ^PASS_MAX_DAYS

PASS_MAX_DAYS   99999

 

 

# 查看用户actiontech-universe的密码过期时间是多少

shell> chage -l actiontech-universe

Last password change                : Feb 19, 2020

Password expires                    : never

Password inactive                   : never

Account expires                     : never

Minimum number of days between password change      : 0

Maximum number of days between password change      : 99999

Number of days of warning before password expires   : 7

 

IP地址

截图

 

 

 

 

 

3.17 检查服务器cpu是否处于低耗能模式

IP地址

截图

 

 

 

 

3.18glibc版本检查

shell> ldd --version |grep "GNU libc"

ldd (GNU libc) 2.17

# 版本不应低于glibc-2.12-1.167

 

IP地址

截图

 

 

 

3.19 关闭MySQL开机启动

#RHEL/CentOS 6:

chkconfig --list ##查看当前开机自启

chkconfig mysql off  ##关闭mysql开机自启

##RHEL/CentOS7:这两种开机自启方式都要检查一下

chkconfig --list ##查看当前开机自启

chkconfig mysql off  ##关闭mysql开机自启

systemctl list-unit-files |grep mysql ##disabled为关闭 enabled为开启

systemctl disable mysqld_3306.service  ##关闭开机自启

IP地址

截图

 

 

 

 

3.20如操作系统是centos8,在上线检查时,需检查是否有正确的MySQL client依赖的动态链接库

 1)CentOS8升级了ncurses-libs的版本. 导致文件名发生变更

 2)MySQL client依赖libtinfo.so.5, 但是CentOS8文件名为libtinfo.so.6.1

 3)需使用软链强制将MySQL client使用6.1版本的ncurses-libs

 4)默认路径如下,也可根据实际实况进行修改

 

#检查操作系统版本

shell> cat /etc/redhat-release

CentOS Linux release 8.1.1911 (Core)

  

#检查是否有MySQL client依赖的libtinfo.so.5文件

shell>  ls /usr/lib64/libtinfo.so.5            

ls: cannot access '/usr/lib64/libtinfo.so.5': No such file or directory      //没有libtinfo.so.5文件,需要进行软链接

/usr/lib64/libtinfo.so.5                                                     //已经有了libtinfo.so.5文件,不需要进行软链接

  

#检查libtinfo.so.6.1的文件是否存在

shell> rpm -qf /usr/lib64/libtinfo.so.6.1

ncurses-libs-6.1-7.20180224.el8.x86_64                                       //libtinfo.so.6.1文件存在,可以进行软链

error: file /usr/lib64/libtinfo.so.6.1: No such file or directory            //libtinfo.so.6.1文件不存在,无法进行软链接

  

#如果没有libtinfo.so.5文件,需使用软链将MySQL client使用6.1版本的ncurses-libs

shell> ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

  

#检查是否链接成功

shell>  ls /usr/lib64/libtinfo.so.5

/usr/lib64/libtinfo.so.5                                                     //链接成功,已有MySQL client依赖的文件

IP地址

截图

 

 

 

3.21 检查字符集

[root@dmpdb01 system]# locale | grep en

LANG=en_US.UTF-8

LC_CTYPE="en_US.UTF-8"

LC_NUMERIC="en_US.UTF-8"

LC_TIME="en_US.UTF-8"

LC_COLLATE="en_US.UTF-8"

LC_MONETARY="en_US.UTF-8"

LC_MESSAGES="en_US.UTF-8"

LC_PAPER="en_US.UTF-8"

LC_NAME="en_US.UTF-8"

LC_ADDRESS="en_US.UTF-8"

LC_TELEPHONE="en_US.UTF-8"

LC_MEASUREMENT="en_US.UTF-8"

LC_IDENTIFICATION="en_US.UTF-8"

[root@dmpdb01 system]# echo $LANG

en_US.UTF-8

IP地址

截图

 

 

3.22 检查是否存在旧的MySQL实例

 

shell> /systemd/system|grep mysql|grep service|awk -F '_' '{print $2}'|awk -F '.' '{print $1}'|sort -u               #针对注册了service服务的实例  空为正常

 

shell> netstat -nlp |grep mysqld|grep -v sock|awk '{print $4}'|awk -F ':' '{print $4}'     #针对未注册service服务,手工安装的实例  空为正常

 

IP地址

截图

 

 

 

 

3.23 配置fs.aio-max-nr

系统默认fs.aio-max-nr为65536,若需部署单机多实例,可导致mysql服务因系统范围异步 I/O 请求数超过fs.aio-max-nr而启动失败,建议调整为1048576

 

# 检查系统aio数值,fs.aio-max-nr默认为65536

shell> sysctl -a|grep fs.aio

# 设置系统fs.aio-max-nr数值

shell> echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf

shell> sysctl -p

IP地址

截图

 

 

 

 

3.24 查看是否开启传统大页

如开启传统大页,要和运维人员确定大页用途,如专门给MySQL使用,需关闭传统大页。

查看是否开启传统大页:

# 0为未开启传统大页

shell>  cat /proc/sys/vm/nr_hugepages

0

 

#sysctl.conf文件中为空或者为0

shell> vim /etc/sysctl.conf

vm.nr_hugepages = 0

关闭传统大页:

#临时:

shell>  echo 0 > /proc/sys/vm/nr_hugepages

 

#持久:sysctl.conf文件中设置为0或为空

shell> vim /etc/sysctl.conf

vm.nr_hugepages = 0

 

shell> sysctl -p #重新加载配置

IP地址

截图

 

 

 

 

 

3.25 重启服务器

IP地址

截图

 

 

 

 

 

 

四、对服务器进行基准性能测试

说明:sysbench iops(测试环境省略)

IP地址

截图

 

 

 

 

 

 

五、检查服务器网络配置

5.1 检查网络端口开放策略是否正确

# 使用相关网络命令进行检查netstat -tln、ping ——无误

# windows下ping Linux主机

# 以及检查端口telnet 198.28.2.82(umc ip):5799

 

shell> netstat -tln 10.186.60.32

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address       Foreign Address     State      

tcp        0      0 127.0.0.1:25        0.0.0.0:*         LISTEN     

tcp        0      0 0.0.0.0:111         0.0.0.0:*         LISTEN      

tcp        0      0 0.0.0.0:22          0.0.0.0:*         LISTEN     

tcp6       0      0 ::1:25              :::*             LISTEN     

tcp6       0      0 :::5722             :::*             LISTEN     

tcp6       0      0 :::5701             :::*             LISTEN     

tcp6       0      0 :::5702             :::*             LISTEN     

tcp6       0      0 :::5703             :::*             LISTEN     

tcp6       0      0 :::3306             :::*             LISTEN     

tcp6       0      0 :::5706             :::*             LISTEN     

tcp6       0      0 :::5710             :::*             LISTEN     

tcp6       0      0 :::111              :::*             LISTEN     

tcp6       0      0 :::22               :::*             LISTEN

 

IP地址

截图

 

 

 

 

5.2 检查网络是否与外网打通,ping是否正常

# 三台主机互ping,内网环境,测试无法ping通外网。

# 本次测试在内网环境应无法ping通外网

 

shell> ping www.baidu.com   

PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.           

64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=51 time=8.39 ms

64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=51 time=7.16 ms

^C

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1008ms

rtt min/avg/max/mdev = 7.160/7.776/8.393/0.622 ms

 

IP地址

截图

 

 

 

 

5.3 检查网络丢包率是否正常

# 1、ping IP  +  ctrl+c

shell> ping 10.186.60.32

PING 10.186.60.32 (10.186.60.32) 56(84) bytes of data.

64 bytes from 10.186.60.32: icmp_seq=1 ttl=64 time=0.022 ms

64 bytes from 10.186.60.32: icmp_seq=2 ttl=64 time=0.029 ms

64 bytes from 10.186.60.32: icmp_seq=3 ttl=64 time=0.034 ms

64 bytes from 10.186.60.32: icmp_seq=4 ttl=64 time=0.040 ms

64 bytes from 10.186.60.32: icmp_seq=5 ttl=64 time=0.028 ms

64 bytes from 10.186.60.32: icmp_seq=6 ttl=64 time=0.031 ms

64 bytes from 10.186.60.32: icmp_seq=7 ttl=64 time=0.028 ms

64 bytes from 10.186.60.32: icmp_seq=8 ttl=64 time=0.031 ms

64 bytes from 10.186.60.32: icmp_seq=9 ttl=64 time=0.032 ms

64 bytes from 10.186.60.32: icmp_seq=10 ttl=64 time=0.029 ms

64 bytes from 10.186.60.32: icmp_seq=11 ttl=64 time=0.039 ms

64 bytes from 10.186.60.32: icmp_seq=12 ttl=64 time=0.032 ms

64 bytes from 10.186.60.32: icmp_seq=13 ttl=64 time=0.031 ms

64 bytes from 10.186.60.32: icmp_seq=14 ttl=64 time=0.036 ms

^C

 

--- 10.186.60.32 ping statistics ---

14 packets transmitted, 14 received, 0% packet loss, time 13043ms

rtt min/avg/max/mdev = 0.022/0.031/0.040/0.007 ms

 

 

# 2、IP包的重传率 =(segments retransmited) /(segments send out) * 100 %

shell> netstat -s |grep segments

    131324843 segments received

    142738071 segments send out

    28204 segments retransmited

    40 bad segments received.

 

IP地址

截图

 

 

 

 

5.4 检查tcp keepalive是否打开

shell> sysctl -a | grep keepalive

net.ipv4.tcp_keepalive_intvl = 75

net.ipv4.tcp_keepalive_probes = 9

net.ipv4.tcp_keepalive_time = 7200

sysctl: reading key "net.ipv6.conf.all.stable_secret"

sysctl: reading key "net.ipv6.conf.default.stable_secret"

sysctl: reading key "net.ipv6.conf.eth0.stable_secret"

sysctl: reading key "net.ipv6.conf.lo.stable_secret"

 

IP地址

截图

 

 

 

 

 

5.5 检查tcp连接以及随机端口参数

# 表示开启重用(通过timestamp 递增性,客户端和服务器能够处理outofbind fin包)。允许将TIME-WAIT sockets重新用于新的TCP连接

shell > cat /proc/sys/net/ipv4/tcp_tw_reuse

1

 

# 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭 。注意: Linux 从4.12内核版本开始移除了 tcp_tw_recycle 配置

shell > cat /proc/sys/net/ipv4/tcp_tw_recycle

0    

 

# 查看网络随机端口参数的值,如果参数范围包含DMP平台端口5690-5800(会有可能导致产品组件端口被占用)或者MySQL的端口范围,建议修改

shell > cat /proc/sys/net/ipv4/ip_local_port_range 

32768 60999        # 默认值

 

# 指定为已知的第三方应用程序保留的端口。这些端口将不会被自动端口分配使用(例如,使用端口号0调用connect()或bind()时)。

# 防呆参数,如果有ip_local_port_range 可不配置此参数,显式端口分配行为不受此影响。

shell > cat /proc/sys/net/ipv4/ip_local_reserved_ports     # 注意:内核版本要大于2.6.18-164,否则不支持该参数。

 

 

shell >  vim /etc/sysctl.conf            # 修改系统配置信息

net.ipv4.tcp_tw_reuse = 1               # 默认为空,表示关闭,建议为1,表示允许将TIME-WAIT sockets重新用于新的TCP连接

net.ipv4.tcp_tw_recycle = 0             # 默认为空,表示关闭,建议关闭

ip_local_port_range  = 32768 60999      # 默认为32768 60999,如ip_local_port_range中为默认值,则本行无需填写

ip_local_reserved_ports  = 5690-5800    # 默认为空,表示无保留端口

 

shell > sysctl -p     # 配置生效

 

问题涉及工单: ATK-884

 

六、确定备份策略

说明:xtrabackup/binlog

 

 

 

 

七、确定MySQL主机容量规划

前提:开启 innodb_file_per_table

 

容量规划

7.1 数据文件大小估算

 

项目

说明

举值列

容量规划的目标周期

数据库在下次做容量调整前, 计划运行多久

3年/156周

现在数据库的容量大小

SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) "DB Size in MB" FROM information_schema.tables;

2013 MB

当前的全备大小

只包括全备大小

1177 MB

上一周期 (比如上周) 的全备大小

只包括全备大小

936 MB

全备大小差异

 

241MB/每周

保留备份份数

 

2

估算数据文件大小

 

(全备大小差异) * (现在数据库的容量大小) * (容量规划的目标周期) / (上一周期 的全备大小) = ((1177 - 936) x 2013 x 156)/936 = 80856 MB ~= 81 GB after 3 years

2

 

7.2 binlog文件大小估算

计算每小时的binlog增量, 可手工统计, 或使用event定期进行flush logs:

mysql> USE mysql;

mysql> CREATE EVENT flush_binlog ON SCHEDULE EVERY 1 HOUR STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 2 HOUR

COMMENT 'Flush binlogs per hour for the next 2 hours'

DO FLUSH BINARY LOGS;

 

举例: 每小时的binlog增量为562 MB, binlog的容量预估为:

mysql> SELECT (562 * 24 * @@expire_logs_days);

+---------------------------------+

| (562 * 24 * @@expire_logs_days) |

+---------------------------------+

|                           94416 |

+---------------------------------+

 

 

7.3 redo log容量计算

mysql> select @@innodb_log_file_size*@@innodb_log_files_in_group/1024/1024/1024 as 'Size in GB';

+----------------+

| Size in GB     |

+----------------+

| 0.500000000000 |

+----------------+

1 row in set (0.00 sec)

 

 

7.4 临时文件容量计算

检查配置是否有最大值,如ibtmp1:12M:autoextend:max:500M,按最大值计算.

mysql> select @@innodb_temp_data_file_path;

+------------------------------+

| @@innodb_temp_data_file_path |

+------------------------------+

| ibtmp1:12M:autoextend        |

+------------------------------+

1 row in set (0.00 sec)

 

如没有最大值, 可检查当前值 (需在业务运行一段时间后)

mysql> SELECT FILE_NAME, TABLESPACE_NAME, ENGINE, INITIAL_SIZE, TOTAL_EXTENTS*EXTENT_SIZE

    ->        AS TotalSizeBytes, DATA_FREE, MAXIMUM_SIZE FROM INFORMATION_SCHEMA.FILES

    ->        WHERE TABLESPACE_NAME = 'innodb_temporary'\G

*************************** 1. row ***************************

      FILE_NAME: ./ibtmp1

TABLESPACE_NAME: innodb_temporary

         ENGINE: InnoDB

   INITIAL_SIZE: 12582912

 TotalSizeBytes: 12582912

      DATA_FREE: 8388608

   MAXIMUM_SIZE: NULL

1 row in set (0.00 sec)

 

 

7.5 其他日志容量估算

检查如下日志:

l  general log

l  slow log

l  error log

是否有较大的日志存在, 如有, 需要按照监控历史进行容量评估; 如没有较大日志, 则用常量替代估算, 如1G.

 

 

7.6 备份空间估算

备份时, 需备份所有数据文件、所有Redo log、部分binlog

 

估算备份的临时空间大小 = 评估周期结束时, (所有数据文件大小 + 所有Redo log大小 + 1小时的binlog增量大小) = (81 G + 0.5 G + 562 MB) ~= 82 G

 

估算全备文件的大小 = 估算备份的临时空间 * 压缩比(经验值) ~= 82G * 0.6 = 49.2 G

 

估算增备文件的大小 = 一个周期内全备大小差异 * 系数(经验值) ~= 936 M * 1.2 ~= 1123.2 M. 如不配置增备, 可忽略

 

估算备份的总空间 = (备份的临时空间大小) + 保留备份份数 * [(全备文件的大小) + (增备文件的大小)] = 82G+ 2 * (49.2G+ 1123.2) ~= 182.6 G

 

 

7.7 总空间估算

估算总空间 = 数据文件大小估算 + binlog 文件大小 + Redo log 容量 + 临时文件容量 + 其他日志容量 + 备份的总空间

= 81G + 94416 M + 0.5G + 12582912 bytes + 1 G + 182.6 G ~= 369.1 G

 

IP地址

截图

 

 

 

 

 

 

八、确定告警通道

 

 

 

 

九、确定my.cnf

说明:一般以DMP默认my.cnf

IP地址

截图

 

 

 

 

 

 

十、确定数据迁移方案

 

 

 

 

 

十一、检查是否存在DMP的旧版本组件

IP地址

截图

 

 

 

 

 

 

十二、对于uproxy实施: 确定前后端连接数限制

说明:默认客户端连接256

IP地址

截图

 

 

 

 

 

 

 

 

十三、对于dble实施配置检查

13.1确定数据分片规则

IP地址

截图

 

 

 

 

13.2确定内存参数

项目

公式

理论值

实际近似值

可用物理内存

 

64G

64G

DBLE总内存

0.6*可用物理内存

38.4G

40G(取整易于计算)

JVM-Xmx(wrapper.conf)

0.4 * dble总内存

15.36G

16G

MaxDirectMemorySize (wrapper.conf)

0.6 * dble总内存

23.04G

24G

bufferPoolPageNumber (server.xml)

0.8 * MaxDirectMemorySize / 2M

9216

9600

 

IP地址

截图

 

 

 

 

13.3确定前后端连接数限制

IP地址

截图

 

 

 

 

 

 

十四、umon监控数据容量规划

节点类型

Umon: 监控节点

硬件要求

CPU:8Cores ;内存:8G ;硬盘:500G

操作系统类型

OS:RHEL6.4/CentOS6.4 以上; Kernel:2.6.3 以上

支持部署数

1

系统配置要求

集群内时间同步:NTP

软件依赖(RHEL7/CentOS7)  

sudo vi less which wget net-tools fontconfig libaio hwloc lib-pciaccess lsof

软件依赖(RHEL6/CentOS6)

sudo vi less which wget net-tools fontconfig libaio hwloc lib-pciaccess lsof libtool-ltdl

备注

Umon的磁盘规划:

 

Umon磁盘容量规划影响因素为:M*N*L*120%

单实例24h产生监控数据量为M

监控实例个数为N

监控数据保存周期为L

增加20%的冗余空间

单实例24h的监控数据量约为20M/天;如规划1000个数据库实例的集群;保存周期为30天;

则至少需要规划20*1000*30*1.2=720G的存储空间

 

IP地址

截图

 

 

 

 

 

 

 

十五、业务账号密码设置

说明:按照客户要求进行配置。

IP地址

截图

 

 

 

 

 

 

十六、确定udb的高可用方案

IP地址

截图

 

 

 

 

 

 

十七、RDS实施配置检查

1、在申请RDS数据库实例之前,在元数据里确认延迟检测参数是否开启及默认延迟检测阈值

l  在RDS上默认是开启延迟检测并且阈值为500秒(过长)

l  确认是否有开启延迟检测的需求,并且确认延迟检测的阈值

 

 

十八、上线

1、上线一个月内, 安排日/周巡检, 并记录巡检结果

2、上线一个月后, 每月安排巡检

3、上线后, 需要每天处理告警

 

posted @ 2021-02-20 18:12  屠魔的少年  阅读(9)  评论(0)    收藏  举报