6.linux->MySQL 安裝及效能測試

LLSS發表於2021-06-17
-- 下載目錄
cd /.
mkdir study
cd study

-- 下載MySQL7的版本
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
-- 下載MySQL8的版本
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz

-- 解壓
tar -zvxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

-- /usr/local 目錄下建立資料夾存
mkdir /usr/local/msyql
-- 移動
mv mysql-5.7.26-linux-glibc2.12-x86_64/* /usr/lcoal/mysql

-- 新增mysql組和mysql 使用者:
-- 新增mysql組:
groupadd mysql

-- 新增mysql使用者:
useradd -r -g mysql mysql

-- 配置MySQL
cd /usr/local/mysql

-- 主:從5.7.18開始不在二進位制包中提供my-default.cnf檔案
-- 進入MySQL的bin目錄
-- 檢視MySQL對於配置檔案的查詢路徑,越左優先查詢
/bin/mysql --help | grep 'Default options' -A 1

-- 建立配置檔案
touch /usr/local/mysql/etc/my.cnf

新增內容

[client]
port=3307
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-grant-tables
port=3307
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
max_allowed_packet=16M
-- 設定開機啟動
-- 複製啟動指令碼到資源目錄
cp ./support-files/mysql.server /etc/rc.d/init.d/mysql
-- 增加 mysqld 服務控制指令碼執行許可權
chmod +x /etc/rc.d/init.d/mysql
-- 將 mysqld 服務加入到系統服務
chkconfig --add mysql
-- 檢查mysqld服務是否已經生效
chkconfig --list mysql

-- 啟動MySQL
service mysql start

-- 環境變數配置
vim /etc/profile

新增如下內容 大概在52行左右

PATH = $PATH:/usr/local/mysql/bin
export
-- 重新整理
source /etc/profile
-- 檢測
echo $PATH

-- 修改登入密碼
mysql

mysql> usr mysql;
mysql> update user set authentication_string=PASSWORD('你的密碼') where User='root';
mysql> alter user 'root'@'localhost' identified by 'root';
mysql> flush privileges;
mysql> quit;

-- 修改/usr/local/mysql/etc/my.cnf 檔案
-- 註釋skip-grant-tables
-- 重啟MySQL
service mysql restart

-- 測試
mysql -u root -p

-- 配置遠端訪問
-- 防火牆埠設定,便於遠端訪問
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
-- 檢視埠
firewall-cmd --list-ports

啟動防火牆服務:systemctl ummask firewalld
啟動防火牆:systemctl start firewalld

-- 進入MySQL
mysql> grant all privileges  on *.* to root@'%' identified by "password";
mysql> flush privileges;

-- 如果沒有效果可以嘗試重啟一下MySQL

2. 影響mysql效能的要素點

  1. 系統(靠錢)CPU記憶體

  2. I/O,mysql程式狀態,mysql伺服器週期變化 => mysql版本 以及 電腦處理

  3. 業務
    資料庫設計 => 六大正規化 (三大正規化) => join

    在效能角度來說:不是正規化越高越好 適量選擇與冗餘一些欄位

    專案中sql語句編寫以及索引建立

    業務分析 不當 專案預期設計 效能

    論壇文章統計 => 實時更新文章總數量

    select count(*) from 論壇文章; 100w

    大量 2000w 查詢時間 12s

    物化檢視

    分析->業務

    100w/2

    需求變更 => 功能

    業務程式碼

mysql優化->思路

資料庫-資料表的設計結構->sql語句優化->資料庫引數配置(事務日誌)->源頭(原始碼角度 c++)(擴充套件)->硬體(充值)

效能優化:俗氣 摳門 ; 合理利用可用的資源

3. 怎麼去思考效能問題(魚骨圖 - 思考問題方法)

4. linux 常見的分析系統效能方法工具

ps,top,vmstat,sar,free命令 => 瞭解 引數

5. mysql效能測試

show status

show processlist

show variables

mysqlslap是mysql自帶的基準測試工具,優點:查詢資料,語法簡單,靈活容易使用.該工具可以模擬多個客戶端同時併發的向伺服器發出查詢更新,給出了效能測試資料而且提供了多種引擎的效能比較.msqlslap為mysql效能優化前後提供了直觀的驗證依據,建議系統運維和DBA人員應該掌握一些常見的壓力測試工具,才能準確的掌握線上資料庫支撐的使用者流量上限及其抗壓性等問題。

mysqlslap -h 127.0.0.1 -u root -p -c 100 -i 1 –create-schema tipaskx -q “select count(*) from ask_users” -e innodb –number-of-queries=5000

6. 第三方測試的工具

ab官網 httpd.apache.org/docs/2.0/programs/...

ab命令對發出負載的計算機要求很低,既不會佔用很多CPU,也不會佔用太多的記憶體,但卻會給目標伺服器造成巨大的負載,因此是某些DDOS攻擊之必備良藥,老少皆宜。自己使用也須謹慎。否則一次上太多的負載,造成目標伺服器直接因記憶體耗光當機,而不得不硬重啟,得不償失。

JMeter是一個java應用程式,可以載入其他應用並測試其效能。它雖然是設計用來測試Web應用的,但也可以用於測試其他諸如FTP伺服器,或者通過JDBC進行資料庫查詢測試。

JMeter比ab要複雜的多。例如他可以通過控制預熱時間等引數更加靈活地模擬真實使用者的訪問。JMeter擁有繪圖介面,還可以對測試進行記錄,然後離線重演測試結果。

注意需要下載java的jdbc jar包
-

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章