# MySQL安裝規范
該文檔解釋歸:知數堂 http://zhishutang.com
##系統安裝規范
###bois中
1. 禁用系統的numa
2. 關閉節能模式& 關閉NUMA、C-states、C1E
3. CPU,內存處在高性能模式
###Raid控制器
1. 使用WB模式,可能選擇force wb
2. 優先選擇Raid10,次優先選擇Raid5
3. 關閉Raid卡預讀機制
##系統優化
1. 更改文件句柄和進程數
2. 內核優化 /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
```
3. 禁用selinux : /etc/sysconfig/selinux 更改SELINUX=disabled.
4. iptables如果不使用可以關閉。可是需要打開MySQL需要的端口號
##文件系統優化
1. 推薦使用XFS文件系統
2. MySQL數據分區獨立 ,例如掛載點為: /data
3. mount參數 defaults, noatime, nodiratime, nobarrier 如/etc/fstab:
```
/dev/mapper/vg_data-lv_data /data xfs defaults,noatime,nodiratime,nobarrier 1 2
```
4. io調度
SAS : deadline
SSD&PCI-E: noop
##MySQL版本選擇
特別注意,不要使用yum,apt-get直接安裝。 建議從官方下載指定的二進制版本安裝。
對于安裝版本猶豫不決的,推薦加入QQ群:581702903 咨詢。
現在推薦: MySQL-5.7.22 (2018.4月)
##MySQL安裝路徑
1. 基本準備
* 下載mysql
```
cd /data
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
```
* MySQL軟件放置 :
```
mkdir /opt/mysql
cd /opt/mysql/
tar zxvf /data/mysql/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
```
* basedir: /usr/local/mysql
```
ln -s /opt/mysql/mysql-xxx /usr/local/mysql
```
2. 創建數據庫相關目錄:
```
mkdir /data/mysql/ -p
mkdir /data/mysql/mysql3306/{data,logs,tmp} -p
```
3. 創建mysql用戶
```
groupadd mysql
useradd -g mysql -s /sbin/nologin -d /usr/local/mysql -MN mysql
```
4. 更改權限
```
chown -R mysql:mysql /data/mysql/mysql3306
chown -R mysql:mysql /opt/mysql/
chown -R mysql:mysql /usr/local/mysql
```
5. 配置文參考 /data/mysql/mysql3306/my3306.cnf
參考URL
6. 初始化
```
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize
```
確認沒有錯誤提示,從error log中找到初始化的密碼。
```
grep "password" /data/mysql/mysql3306/data/error.log
```
7. 第一次啟動MySQL
```
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &
```
進入mysql更改密碼。
```
/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -p
```
輸入剛才查看到的密碼。
```
mysql>alter user user() identified by 'zstzst';
```
*恭喜到此MySQL安裝畢*
##MySQL啟動及關閉
1. 啟動mysql
```
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &
```
2. 關閉mysql
* 利用mysqladmin關閉
```
mysqladmin -S /tmp/mysql3306.sock -p shutdown
```
輸入密碼關閉
* 另一種在命令行關閉,在MySQL輸入shutdown關閉,需要有shutdown權限
```
/usr/local/mysql/bin/mysql -S /tmp/mysql3306.sock -p
mysql>shutdown;
```