centos 7.x 安装 mysql 的优化设置

mysql 用户

centos 7 默认是安装了 mariadb的,需要先卸载 mariadb,并删除 mysql 用户

# yum list installed|grep -i mysql
akonadi-mysql.x86_64                       1.9.2-4.el7                 @anaconda
perl-DBD-MySQL.x86_64                      4.023-5.el7                 @anaconda
qt-mysql.x86_64                            1:4.8.5-13.el7              @anaconda

# yum list installed|grep -i mariadb
mariadb.x86_64                             1:5.5.56-2.el7              @anaconda
mariadb-libs.x86_64                        1:5.5.56-2.el7              @anaconda
mariadb-server.x86_64                      1:5.5.56-2.el7              @anaconda

# cat /etc/group |grep -i mysql
mysql:x:27:

# cat /etc/passwd|grep -i mysql
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

卸载 mariadb

# yum remove mariadb mariadb-libs mariadb-server

======================================================================================================================================
 Package                            Arch                       Version                            Repository                     Size
======================================================================================================================================
Removing:
 mariadb                            x86_64                     1:5.5.56-2.el7                     @anaconda                      49 M
 mariadb-libs                       x86_64                     1:5.5.56-2.el7                     @anaconda                     4.4 M
 mariadb-server                     x86_64                     1:5.5.56-2.el7                     @anaconda                      58 M
Removing for dependencies:
 akonadi-mysql                      x86_64                     1.9.2-4.el7                        @anaconda                     9.6 k
 perl-DBD-MySQL                     x86_64                     4.023-5.el7                        @anaconda                     323 k
 postfix                            x86_64                     2:2.10.1-6.el7                     @anaconda                      12 M
 qt-mysql                           x86_64                     1:4.8.5-13.el7                     @anaconda                      74 k

Transaction Summary
======================================================================================================================================
Remove  3 Packages (+4 Dependent packages)

Installed size: 124 M
Is this ok [y/N]: 

删除了4个相关依赖的 rpm包( akonadi-mysql perl-DBD-MySQL postfix qt-mysql )

删除mysql用户

# userdel mysql

# cat /etc/group |grep -i mysql
# cat /etc/passwd |grep -i mysql

创建 mysql 用户
建议不管是 yum 安装还是 make 安装,都先创建用户
用户组和用户的id均为 10000 ,用户目录为 /home/mysql/,不要使用 /var/lib/mysql/

# groupadd -g 10000 mysql;
# useradd -u 10000 -g mysql mysql -s /sbin/nologin -d /home/mysql

# cat /etc/group |grep -i mysql
mysql:x:10000:
# cat /etc/passwd |grep -i mysql
mysql:x:10000:10000::/home/mysql:/sbin/nologin

epel

# wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
# yum clean all ; yum makecache ;

yum install

# yum install wget zip unzip dos2unix pigz iputils iftop git tree sysstat \
gcc gcc-c++ make cmake automake autoconf *gcc* libaio libaio-devel \
bz bison libtool ncurses  \
perl-DBI perl-DBD-MySQL perl-JSON perl-Time-HiRes perl-devel \
numactl* bzip2 openssl openssl-devel

还是依赖安装了 mariadb-libs

grub

调整 io scheduler,numa,thp

# vi /etc/default/grub
ipv6.disable=1 numa=off transparent_hugepage=never elevator=deadline

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

临时设置 io scheduler,仅记录一下

# echo "deadline" > /sys/block/sda/queue/scheduler

sysctl

# vi /etc/sysctl.conf

#内存分配方式,不允许超分配
vm.overcommit_memory = 2
vm.overcommit_ratio = 90
vm.swappiness = 1

security

# vi  /etc/security/limits.conf

root     soft nofile  655360 # The maximum number of open file descriptors
root     hard nofile  655360
mysql    soft nofile  655360
mysql    hard nofile  655360

root     soft nproc   655360 # The maximum number of processes available to a single user
root     hard nproc   655360
mysql    soft nproc   655360
mysql    hard nproc   655360

* soft memlock unlimited # The maximum size that may be locked into memory
* hard memlock unlimited
* soft core    unlimited # The maximum size of core files created
* hard core    unlimited
* soft stack   unlimited  
* hard stack   unlimited 

selinux

# vi /etc/sysconfig/selinux
SELINUX=DISABLED

或者

# vi /etc/selinux/config
SELINUX=disabled

sshd中关闭UseDNS

# vi /etc/ssh/sshd_config

UseDNS no
systemctl restart sshd

networking

修改 NOZEROCONF

# vi /etc/sysconfig/network
NOZEROCONF=YES

禁止ipv6

# vi /etc/sysconfig/network
NETWORKING_IPV6=no

# vi /etc/hosts
#::1 localhost localhost6 localhost6.localdomain6

重启系统,再次确认

# lsmod |grep –i ipv6
# ifconfig |grep -i inet6

service

确保 cron,sshd,network 这几个是start,enable的

# systemctl list-unit-files|grep -Ei "cron|sshd|networking"

fstab

mysql data 目录 mount时添加一些选项,强烈建议使用 lvm,xfs

# fdisk /dev/sdb
# pvcreate /dev/sdb1 /dev/sdb2
# vgcreate vgoradata /dev/sdb1 /dev/sdb2
# lvcreate -L 90G -n lvoradata01 vgoradata
# which mkfs[tab]
# mkfs.xfs /dev/vgoradata/lvoradata01

# mkdir -p /data
# mount -o defaults,noatime,nodiratime,nobarrier,inode64 /dev/vgoradata/lvoradata01  /data
# df -hT
# vi /etc/fstab

/dev/vgoradata/lvoradata01 /data           xfs    defaults,noatime,nodiratime,nobarrier,inode64        0       0

environment

# vi /etc/profile
export PATH=/usr/local/mysql/bin:$HOME/bin:$PATH

ld library

# vi /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/local/mysql/lib

oom

# renice -19 -p `pidof mysqld`

或者在启动时

# nice --19 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

你可能感兴趣的:(#,mysql,os,setting)