(0.2.1)mysql数据库环境-操作系统配置

 

【1】mysql数据库运行环境准备-最优配置

【1.1】如何查看官方文档了解环境要求

  https://www.mysql.com/support/supportedplatforms/database.html  

  参考:https://www.modb.pro/db/167688

【1.2】安装虚拟机环境与操作系统

  redhat linux as 6/7,oracle linux 6/7,centos 6/7

【2】操作系统最优配置9大步骤

  (1)主机名(hosts文件)

  【1】hostname new_hostname  #直接修改本地主机名

  【2】vi  /etc/sysconfig/network  #修改网络上的主机名

      

    把hostname= 改成如上图我们设置的新名称

  【3】vi /etc/hosts    #修改hosts文件,达到本机的网络主机名与本机IP地址映射

    

   这一步也可以 echo "192.168.1.121 db1" >> /etc/hosts

  (2)配置操作系统英文环境

    echo "export LANG=en_US" >> ~/.bash_profile

  (3)修改资源限制参数

# 永久生效,需要重启
vi /etc/security/limits.conf     nproc:用户创建进程数限制 建议65535     nofile:进程打开文件次数限制 建议65535     stack:存放变量的指针 建议65535     软硬限制(soft/hard,软限制到了阈值会警告,硬限制则就是不能再继续做了),*代表所有用户
* soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 * soft stack 65535 * hard stack 65535
  

 

--可以通过以下代码去检验
ulimit -a
  
#如果要临时 生效,请使用 ulimit -参数  这个参数就是上图后面的缩写,例如修改打开文件限制为65535
ulimit -n 65535
#进程数限制,默认有限制,默认清空

echo "* - nproc 65535" > /etc/security/limits.d/90-nproc.conf

  

  (4)设置系统安全策略(SELINUX|防火墙)

    (4.1)SELinux(linux安全认证的一个东西)

      vi /etc/selinux/config       把参数设置为  SELINUX=disable  

echo "SELINUX=disable" >> /etc/selinux/config
cat /etc/selinux/config
setenforce 0        #刷新生效

 


    (4.2)关防火墙

      #公网,建议要开防火墙iptables,设置比较合理的安全规则,限制外网访问。

      service iptables stop     #关闭防火墙

      chkconfig --level 2345 iptables off       #开启启动关闭

    (4.3)控制资源分配限制

      echo "session required pam_limits.so" >> /etc/pam.d/login

      cat /etc/pam.d/login

         

 

  (5)关闭NUMA功能(避免内存平均分配到CPU,这对数据库DB是不好的)

    (5.1)修改内核参数达到目的

      numastat  #查看

      vi /etc/grub.conf  设置 numa=off

      查看每个节点的分配情况

        【1】numastat  【2】numactl --show

      然后重启生效,reboot

      (注意,要写在内核后)

      

 

 

CentOS7.x中可以通过下面的方式关闭 numa:

  最佳实践一条命令解决:grubby --update-kernel=ALL --args="numa=off"       

    reboot

    #核验 

      dmesg | grep -i numa

1. 编辑 /etc/default/grub 文件,如下图所示加上:numa=off

2. 重新生成 /etc/grub2.cfg 配置文件:

grub2-mkconfig -o /etc/grub2.cfg

3. 重启操作系统

  reboot

4. 重启之后进行确认:

  dmesg | grep -i numa

 

再次确认:cat /proc/cmdline

 

  (6)IO调度算法与IO优化(全是单次生效)

IO调度算法:mysql服务器一定不要使用默认的CFQ调度算法。如果是SSD,那么应该使用NOOP调度算法,如果是磁盘,就应该使用Deadline调度算。    

    【1】IO调度算法: /sys/block/sd*/queue/scheduler

    【2】IO预读:/sys/block/sd*/queue/read_ahead_kb

    【3】IO队列:/sys/block/sd*/queue/nr_requests 

  一共4种,默认是CFQ(完全随机访问,相对来说这种算法对于mysql来说不是很好,会造成小IO的延时增加,msql官网建议算法换成deadline算法,这种IO比较稳定)。

    (6.1)查看默认调度算法:cat /sys/block/sd*/queue/scheduler

    --如果是sas/stat使用如下

      (6.2)修改默认调度算法:echo 'deadline' > /sys/block/sd*/queue/scheduler

    --如果是ssd使用如下

      (6.2)修改默认调度算法:echo 'NOOP' > /sys/block/sd*/queue/scheduler

      (改好后如下)

        

    减少IO的预读和队列

    (6.3)队列与预读:

      cat /sys/block/sd*/queue/read_ahead_kb  #查看预读

      echo '16' > /sys/block/sd*/queue/read_ahead_kb     #减少预读 (默认128)

      cat  /sys/block/sd*/queue/nr_requests  #查看队列数

      echo '512' > /sys/block/sd*/queue/nr_requests        #增大队列  (默认128)

      (查看单个磁盘)

      

      (查看全部磁盘)

      

 

    (6.3)队列数设置重启生效:修改这个文件 vi /etc/rc.local  (把上面的队列与预读代码加上来)

echo '512' > /sys/block/sdb/queue/nr_requests
echo '512' > /sys/block/sdc/queue/nr_requests

 


  

  (7)虚拟内存与保留内存

    (7.1)配置文件:vi /etc/sysctl.conf     

         虚拟内存参数:(设置物理内存低于10%的时候,才做页面交换使用虚拟内存)

          vm.swappiness = 10

        保留内存参数(即保留给操作系统使用):

          vm.min_free_kbytes=51200 --给操作系统预留50M,建议测试环境

          vm.min_free_kbytes=512000 --给操作系统预留500M,建议给生成环境

      

 

    (7.2)设置生效: sysctl -p   #看,我们刚设置的2行就出来了

        

  (8)内存

深入主机内存配置详解:https://wenku.baidu.com/view/64dd549f1937f111f18583d049649b6648d70986.html

net.nf_conntrack_max = 1048576
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 0
vm.min_free_kbytes = 67584
vm.overcommit_memory = 2
vm.overcommit_ratio = 85
kernel.sysrq = 1
net.nf_conntrack_max = 1048576

 


【3】操作系统YUM环境配置

  (1)挂载光驱

    --下次重启还需要重新手工挂载否则用不了,除非使用(如果想重启后快速挂载,修改 /etc/fstab 配置加载文件,详情见挂载与文件系统命令4.4

    mount /dev/cdrom /mnt

  (2)构造yum源文件

    cd /etc/yum.repos.d  #进入yum源目录

    mkdir bk         #构建备份目录

    mv *.repo bk/     #把现有的配置文件移动到刚新建的bk目录下面去

    vi itpux.repo

  (3)修改文件

    [OEL6]

    name=linux6.9

    baseurl=file:///mnt

    gpgcheck=0

    enabled=1

    分析释义:--------  name:名称  baseurl:yum源路径  gpgcheck:是否验证加密与签名  enabled:是否启用yum源

  (4)测试验证yum源 

    yum list

 

【4】Mysql所需磁盘与分区最规范的配置

  (1)磁盘目录

    安装目录:/mysql/app

    数据目录:/mysql/data

    日志目录:/mysql/log

    备份目录:/mysql/backup

  (2)文件系统,使用LVM,最好使用 raid10

    (LVM操作使用

    然后给root目录、根目录,以及上面几个目录分别给分区

    

 

#参考代码

#创建PV
pvcreate /dev/sdb /dev/sdc

#创建VG
vgcreate mysqlvg /dev/sdb
vgcreate bakvg /dev/sdc

#创建LV
lvcreate -n mysqllv -L 10G mysqlvg
lvcreate -n datalv -L 20G mysqlvg
lvcreate -n loglv -L 20G mysqlvg
lvcreate -n baklv -L 50G bakvg

#格式化
mkfs.ext4 /dev/mysqlvg/mysqllv
mkfs.ext4 /dev/mysqlvg/datalv
mkfs.ext4 /dev/mysqlvg/loglv
mkfs.ext4 /dev/bakvg/baklv

#建立目录
mkdir -p /mysql/app
mkdir -p /mysql/data
mkdir -p /mysql/log
mkdir -p /mysql/backup


#挂载
mount /dev/mysqlvg/mysqllv /mysql/app
mount /dev/mysqlvg/datalv /mysql/data
mount /dev/mysqlvg/loglv /mysql/log
mount /dev/bakvg/baklv /mysql/backup
#df -h 查看结果

#修改 /etc/fstab 以便可以重启自动挂载
/dev/mysqlvg/mysqllv /mysql/app ext4 defaults 0 0
/dev/mysqlvg/datalv /mysql/data ext4 defaults 0 0
/dev/mysqlvg/loglv /mysql/log ext4 defaults 0 0
/dev/bakvg/backuplv /mysql/backup ext4 defauls 0 0


#reboot 查看效果

 

相关参考:https://www.cnblogs.com/zhouwanchun/p/11191312.html 

posted @ 2019-01-20 20:20  郭大侠1  阅读(698)  评论(0编辑  收藏  举报