mysql-5.7.xx在lcentos7下的安裝以及mysql在windows以及linux上的性能差異

前言:

在centos上安裝mysql,整整折騰了將近一天,因為是第一次安裝,的確是踩了不少坑,這裡詳細記錄下來,方便各位有同樣需求的小夥伴參考。

該選擇什麼版本?

mysql5.7有很多小版本,但是,從5.7.18版本開始,是一個分界線,因為從5.7.18版本及以後版本,安裝包裡面的的support-files文件夾下,便沒有default.cnf了,所以這裡導致5.7.18以前的版本和5.7.18及以後版本的安裝,是略有不同的。我這裡安裝選擇5.7.28版本,當然,如果您選擇其他版本安裝也是可以的,但是我建議還是選擇5.7.18以後的版本。

安裝準備

mysql官網同時提供了32位版本和64位版本的安裝包,我這裡centos是64位的,所以這裡下載的是64位的mysql安裝包。【注意:如果懵懵懂懂的就去安裝,在64位系統上安裝了32位的mysql,安裝過程中會報各種錯誤,如果您再去百度這些錯誤去解決,就走了一個大大的彎路,很遺憾,筆者就犯了這個錯誤,折騰了一個小時,才又重新下載64位的安裝包,引以為戒啊】

網盤地址:  鏈接://pan.baidu.com/s/1PgMzZITE4BciEYUEh_Sphg    提取碼:2n5t    【網盤速度很慢,也可以用這個地址://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

 

具體安裝過程

1.卸載自帶的mariadb

 執行:

 rpm -qa | grep mariadb

 

 

發現系統已經默認安裝了mariadb,根據系統查詢出來的資訊,進行刪除

    執行:

 yum remove mariadb-libs-5.5.56-2.e17.x86_64 

 

 

2.卸載已經安裝的mysql

執行:

 

rpm -qa | grep mysql

 

 

 

 

 我的系統以前沒有安裝過mysql,所以不需要做任何操作。 如果您的系統以前安裝過mysql,可以參考centos下徹底刪除mysql這篇文章進行徹底刪除

 

 

3.下載mysql-5.7.28安裝包並解壓

您可以用我百度網盤裡面的地址拷貝下來,並粘貼到linux伺服器相應地址,也可以使用該地址://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

關於安裝地址的選擇,我們顯然需要將mysql安裝在大磁碟里,

執行腳本:

df -h

 

 

 

 根據腳本執行結果來看,我的系統/home掛載點空間較大,所以我將mysql安裝在/home 下【您可以根據您的需求安裝在其他位置,如/usr/local也是不錯的選擇】

依次執行腳本:

cd /home            
mkdir mysql   
cd mysql      
wget //mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

 

tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz      
mv  mysql-5.7.28-linux-glibc2.12-x86_64   mysql-5.7.28  

 

    執行ls腳本,可以發現mysql文件夾下已經有了mysql-5.7.28文件夾

 


  4.在/usr/local/目錄下創建到/home/mysql/mysql-5.7.28的軟鏈接


cd /usr/local                       
ln -s /home/mysql/mysql-5.7.28 mysql  

 

 

 

5.添加mysql用戶,修改mysql目錄許可權,並用此用戶執行應用
useradd -s /bin/false -M mysql     
cd /home/mysql                   
chown -R mysql:mysql mysql-5.7.28 

 


6.拷貝配置文件,將mysql的配置文件拷貝為/etc/目錄下的my.cnf,並修改配置文件
這裡特別注意:/etc文件夾下並沒有my.cnf文件,沒有關係,我們直接執行:

vi /etc/my.cnf 

 


並下下面的內容拷貝到編輯框裡面,並執行 :wq 進行保存
 
[mysqld]
# binlog 配置
log-bin=/usr/local/mysql/logs/mysql-bin.log
expire-logs-days=14
max-binlog-size=500M
server-id=1
# GENERAL
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
user=mysql
default-storage-engine=InnoDB
character-set-server=utf8lower_case_table_names = 1explicit_defaults_for_timestamp=true
[mysqld_safe]
log-error=/usr/local/mysql/mysql-error.log
pid-file=/usr/local/mysql/mysqld.pid
[client]
socket=/usr/local/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

 

7.安裝mysql,進入mysql目錄執行以下命令

yum -y install autoconf          
cd /home/mysql/mysql-5.7.28     
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  

 


執行腳本如果報以上錯誤,請執行以下腳本解決:


mkdir logs
touch mysql-bin.index
chgrp -R mysql /home/mysql/mysql-5.7.28

 


再次執行:

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 

 

 

 出現以上提示,則表示安裝成功,記錄下默認密碼:fa&fJH-Wt0FQ 

 

8.拷貝啟動程式,將mysql的啟動程式拷貝到/etc/init.d/目錄下


cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

 

9.安裝完,啟動mysql服務
service mysqld start

 

 

 

 

 出現以上錯誤,說明日誌文件沒有創建,創建日誌文件並修改許可權即可

cd /home/mysql/mysql-5.7.28
touch mysql-error.log
chown mysql:mysql mysql-error.log

 

 

再次執行: 

service mysqld start

 


 說明mysql已經安裝成功

 

10.配置環境變數,編輯/etc/profile,方便在任何地方用mysql命令


vim /etc/profile 
在文件的最後面加入
#mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

 

 

 重新編譯:


source /etc/profile

11.登錄mysql,修改密碼

首次登錄沒有密碼,提示輸入密碼時,輸入第7步安裝時生成的密碼:fa&fJH-Wt0FQ 

mysql -uroot -p

 


使用alter user重置密碼:

mysql> alter user 'root'@'localhost' identified by '******';
mysql> flush privileges;

 

配置遠程訪問:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;

 

至此,mysql安裝完成。

 

 

後記:

因為對linux鑽研的不是十分透徹,所以,一直有抵觸心理,以至於安裝mysql時,百度了一下看看mysql在windows上和linux上的差異,大部分人說的是差異並不大。 我妥協了,把mysql安裝在了windows server 2016 上,但是性能並不十分出眾,雖然也勉強能用,但是絕對不是最優。 身為資深碼農,就是不能怕困難,所以我決定擁抱linux,把mysql裝在linux上,並比較性能差異:

 

指標 windows server 2016下時間(16核32GB) cnetos7下時間(16核32GB)
1200萬+數據取count的時間 10.711秒 2.939秒
600萬+數據取count時間 3.216秒 1.303
175萬+數據取count的時間 3.025秒 0.671秒
1200萬+數據創建索引1個索引時間 1300秒 237秒
600萬+數據取count時間 700秒 120秒
175萬+數據取count的時間 130秒 28秒

 

         經過比較得出的結論,同樣的配置,linux下的mysql各項性能指標,是windows的3-7倍之間。  所以,身為程式設計師,我們要選擇最優的,不要妥協,不要將就,不要糾結,mysql就裝在linux上吧,人家剛誕生時,就是裝在linux上的,linux和mysql本身就是天生一對,我們不要拆散他。