MySQL Expert REVIEW
RHEL7.X
MySQL 5.7.X 數據庫
安裝手冊
目 錄
系統需求
本文介紹的是在linux RHEL 7.x版本的操作系統上,安裝 mysql 5.7 安裝步驟。
安裝方式:
- Mysql 2進制bin 包安裝在服務器本地磁盤上。
- 數據文件都存放在本地磁盤中
mysql-5.7.27-el7-x86_64.tar
下載鏈接:
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.27-el7-x86_64.tar
mysql 用戶創建
groupadd mysql
useradd -g mysql mysql
以下目錄供參考:
目錄 |
文件系統路徑 |
備註 |
basedir |
/mysql |
Mysql 軟件目錄 |
datadir |
/data |
Mysql 數據文件目錄 |
tmpdir |
/data/tmp |
Mysql 臨時文件目錄 |
建議使用 xfs 文件系統:
1.初始化磁盤空間
pvcreate /dev/sdb
pvdisplay
vgcreate mysqlvg /dev/sdb
vgdisplay
lvcreate -L 3999G -n mysql /dev/mysqlvg
2.格式化成xfs文件系統:
mkfs.xfs /dev/mysqlvg/mysql
mount –o rw,noatime,nodiratime,nobarrier,logbufs=8,logbsize=32k /dev/mysqlvg/mysql /data
#vi /etc/fstab
/dev/mysqlvg/mysql /data ext4 defaults 1 2
文件系統屬主設置:
chown mysql:mysql /mysql
chown -R mysql:mysql /data
MySQL 安裝
解壓mysql安裝包:
tar xvf mysql-5.7.XXX.tar –C /mysql
初始化mysql:
使用-initialize-insecure 爲 root@local 用戶生成空密碼,後續需要設置密碼;
cd /mysql
./bin/mysqld --no-defaults --user=mysql --basedir=/mysql
--datadir=/data --initialize-insecure
配置mysql my.cnf 配置文件:
My.cnf 優化調整了部分參數,具體部分參數需要結合實際環境適當調整;
vi /etc/my.cnf
[client]
port = 3306
socket = /data/mysql.sock
[mysql]
prompt='mysql [\h] {\u} (\d) > '
[mysqld]
# basic settings #
user = mysql
port = 3306
socket = /data/mysql.sock
basedir = /mysql
datadir = /data/
character-set-server = utf8mb4
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
max_allowed_packet = 64M
event_scheduler = 1
query_cache_size = 0
query_cache_type = 0
open_files_limit = 65535
# connection #
interactive_timeout = 1800
wait_timeout = 1800
lock_wait_timeout = 1800
skip_name_resolve = 1
max_connections = 1024
max_connect_errors = 1000000
# table cache performance settings
table_open_cache = 4096
table_definition_cache = 4096
table_open_cache_instances = 64
# session memory settings #
read_buffer_size = 16M
read_rnd_buffer_size = 32M
sort_buffer_size = 32M
tmp_table_size = 64M
join_buffer_size = 128M
thread_cache_size = 64
# innodb settings #
#根據服務器實際內存配置 一般不要超過服務器總內存 80%
innodb_buffer_pool_size = 32G
# 8 default to buffer pool size / 2GB (so 16 for 32g pool) if concurrency is high
innodb_buffer_pool_instances = 16
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 4096
innodb_lock_wait_timeout = 5
# 根據您的服務器IOPS能力適當調整
# 一般配普通SSD盤的話,可以調整到 10000 - 20000
# 配置高端PCIe SSD卡的話,則可以調整的更高,比如 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_log_file_size = 2G
innodb_log_files_in_group = 3
innodb_log_buffer_size = 64M
innodb_write_io_threads = 16
innodb_read_io_threads = 16
innodb_purge_threads = 4
innodb_large_prefix = 1
##>=5.6 打印死鎖信息到error log
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 128M
innodb_file_per_table = 1
innodb_stats_persistent_sample_pages = 64
#auto-inc lock set:
innodb_autoinc_lock_mode = 2
innodb_online_alter_log_max_size= 4G
innodb_open_files=4000
# for SSD:if you have SSD storage
# Set to 0 data on SSDs, 1 for spinning disks. If mixed, 0 is probably best.
#innodb_flush_neighbors = 0
[mysqldump]
quick
max_allowed_packet = 32M
single-transaction
啓動mysql:
cd /mysql/
bin/mysqld_safe &
修改mysql 超級用戶密碼:
/mysql/bin/mysql
set password for root@localhost=password("mysql");
OS 優化配置
vi /etc/selinux/config ==>SELINUX=disabled
#停止firewall
systemctl stop firewalld.service
#禁止firewall開機啓動
systemctl disable firewalld.service
# systemctl stop avahi-daemon.socket avahi-daemon.service
# systemctl disable avahi-daemon.socket avahi-daemon.service
# systemctl stop postfix
# systemctl disable postfix
vi /etc/grub.conf 添加elevator=deadline,需重啓機器生效。
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,1)
# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-LogVol01
# initrd /initrd-[generic-]version.img
#boot=/dev/sda1
device (hd0) HD(1,800,64000,e1fc1233-0f25-467e-9461-0739facbf83c)
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/LogVol01 SYSFONT=latarcyrheb-sun16 crashkernel=128M KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=VolGroup/LogVol00 rd_NO_DM rhgb quiet transparent_hugepage=never elevator=deadline
initrd /initramfs-2.6.32-431.el6.x86_64.img
修改 /etc/sysctl.conf
vm.swappiness=1
修改之後使用sysctl –p命令使得修改生效
修改 /etc/security/limits.conf
mysql soft nofile 8192
mysql hard nofile 65536