本文目錄一覽:
怎麼實現 MySQL數據庫性能優化? 舉例說明
在mysql安裝目錄下,比如: D:\Program Files\MySQL\MySQL Server 5.1
裡面有幾個配置文件,只要修改名字成為 my.ini 即可,比如:
my-huge.ini 巨型服務器
my-large.ini 大型
my-medium.ini 中型
my-small.ini 小型
備份原來的,並重命名,重新啟動即可。其中,[mysqld] 這一節是mysql服務器的配置信息。
如何做好MySQL安全策略
摘至網頁鏈接
常見Mysql配置文件:linux系統下是my.conf,windows環境下是my.ini;
數據庫整體安全需求:機密性、完整性、可用性;
下面以mysql 5.7版本為例,介紹mysql常見的安全策略、配置、加固方式等等,有些策略可能只針對Linux操作系統,更多策略可以參考CIS Mysql Benchmark相關文檔:
1、操作系統級別安全配置
1.1不要將數據庫放在系統分區
Windows系統:直接檢查是否將數據庫放置在C盤。
Linux系統:
在終端連接上mysql數據庫,執行如下命令:
show variables where variable_name = ‘datadir’;
然後返回shell命令行:
df -h datadir
其中datadir是上一條命令的返回值。
上述命令的返回值不應是/、/var、/usr
1.2使用專用的最小權限賬號運行mysql數據庫進程
Windows系統:直接打開任務管理器,查看運行mysql進程的操作系統賬號,不能為administrator賬號。
Linux系統:
Shell命令行運行如下命令:
ps -ef | grep mysql
查看mysql服務的運行賬號是否為root或其他高權限賬號,如果是的,則需要創建一個非管理員專用賬號來運行mysql服務。
1.3禁止使用mysql命令行歷史記錄
Linux系統:
執行如下命令:
find / -name “.mysql_history”
查看是否存在mysql的歷史命令記錄文件,如果存在,則需要進行如下加固:
(1)刪除.mysql_history文件;
(2)設置環境變量MYSQL_HISTFILE為/dev/null,並添加到shell的初始化腳本中,創建mysql_history到/dev/null的鏈接:
ln -s /dev/null $HOME/.mysql_history
1.4 確保MYSQL_PWD環境變量未設置敏感信息
Windows系統下進入cmd命令行,使用如下命令:
Set
查看是否設置了環境變量MYSQL_PWD。
Linux系統下使用如下命令:
grep MYSQL_PWD /proc/*/environ
查看MYSQL_PWD環境變量是否設置了敏感信息。
確認那個配置文件或腳本設置了MYSQL_PWD環境變量。
2、安裝
2.1使用數據庫專用服務器
使用專用的服務器安裝mysql服務可以減少mysql服務的攻擊面,盡量卸載或刪除操作系統上的不必要的應用或服務,減少其他應用的安裝可能給mysql的運行帶來的安全風險。
2.2 不要復用數據庫賬號
運行mysql服務的操作系統賬號不要用來運行其他應用或服務,這樣可以避免其他應用或服務器被攻擊給mysql服務帶來影響。
2.3 歷史命令行密碼設置為不可見
使用如下命令:
mysql -u admin -p password
連接mysql數據庫服務,退出後查看歷史命令,確認password是否為明文。
建議使用如下命令方式登錄:
(1)先輸入mysql -u admin -p
(2)根據命令行提示輸入密碼;
而不要在一整條命令中輸入密碼。
另外要控制mysql配置文件訪問權限。
3、文件權限控制
3.1 控制數據目錄的訪問權限
數據目錄是mysql數據庫存放的位置,在mysql命令行界面下執行如下命令:
show variables where variable_name = ‘datadir’;
在終端命令行下執行如下命令:
ls -l datadir/.. | egrep “^d[r|w|x]{3}——\s*.\s*mysql\s*mysql\s*\d*.*mysql”
其中datadir是第一條命令的執行結果
如果存在問題,linux環境下在終端執行如下命令進行加固:
chmod 700 datadir
chown mysql:mysql datadir
3.2 控制二進制日誌文件的權限
mysql的運行會產生很多日誌,例如二進制日誌、錯誤日誌、慢查詢日誌等等,Mysql命令行下執行如下命令:
show variables like ‘log_bin_basename’;
在終端命令行執行如下命令:
ls log_bin_basename.*
對於發現的每一個文件,執行如下命令:
ls -l log_bin_basename.nnnnn | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”
根據輸出確認日誌文件的權限設置是否存在問題。
對於每個日誌文件,修改其權限和屬組如下:
chmod 660 log file
chown mysql:mysql log file
3.3 控制錯誤日誌文件的權限
Mysql命令行下執行如下命令:
show variables like ‘log_error’;
在終端命令行執行如下命令:
ls log_error.*
對於發現的每一個文件,執行如下命令:
ls -l log_error | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”
根據輸出確認日誌文件的權限設置是否存在問題。
對於每個日誌文件,修改其權限和屬組如下:
chmod 660 log file
chown mysql:mysql log file
3.4控制慢查詢日誌文件的權限
Mysql命令行下執行如下命令:
show variables like ‘slow_query_log_file’;
在終端命令行執行如下命令:
ls slow_query_log_file.*
對於發現的每一個文件,執行如下命令:
ls -l slow_query_log_file | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”
根據輸出確認日誌文件的權限設置是否存在問題。
對於每個日誌文件,修改其權限和屬組如下:
chmod 660 log file
chown mysql:mysql log file
3.5控制通用日誌文件的權限
Mysql命令行下執行如下命令:
show variables like ‘general_log_file’;
在終端命令行執行如下命令:
ls general_log_file.*
對於發現的每一個文件,執行如下命令:
ls -l general_log_file | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”
根據輸出確認日誌文件的權限設置是否存在問題。
對於每個日誌文件,修改其權限和屬組如下:
chmod 660 log file
chown mysql:mysql log file
3.6控制審計日誌文件的權限
Mysql命令行下執行如下命令:
show global variables where variable_name = ‘audit_log_file’;
在終端執行如下命令:
ls -l audit_log_file | egrep “^-rw[-x]rw[-x][-r][-w][-x][ \t]*[0-9][ \t]*mysql[
\t]*mysql.*$”
根據輸出確認日誌文件的權限設置是否存在問題。
對於每個日誌文件,修改其權限和屬組如下:
chmod 660 audit_log_file
chown mysql:mysql audit_log_file
4、通用安全
4.1安裝最新的補丁
在mysql命令行下查詢MySQL的版本:
SHOW VARIABLES WHERE Variable_name LIKE “version”;
確認是否由需要安裝的補丁包,如果有請安裝。
4.2 刪除test數據庫
Mysql數據庫默認安裝好後,存在一個名為test的數據庫,如果存在,請執行如下命令刪除:
Drop database “test”
4.3 確保讀取本地文件的參數設置為失效
Mysql命令行下,使用如下命令:
SHOW VARIABLES WHERE Variable_name = ‘local_infile’;
查看結果是否為OFF。
如果該命令為ON,則數據庫用戶可以通過LOAD DATA INFILE 或者 SELECT local_file 讀取到數據庫所在操作系統本地的文件,在這種情況下,需要在mysql配置文件中新增一行:
Local-infile=0;
然後重啟數據庫服務。
5、權限配置
5.1控制可以訪問所有數據庫的賬號
Mysql數據庫下的user表和db表中存放着可以授予數據庫用戶的權限,確保只有管理員賬號才能訪問所有數據庫。可以訪問mysql數據庫的用戶或許可以查看密碼哈希值、修改用戶權限等等。
使用如下sql語句:
SELECT user, host FROM mysql.user
WHERE (Select_priv = ‘Y’) OR (Insert_priv = ‘Y’) OR (Update_priv = ‘Y’)
OR (Delete_priv = ‘Y’) OR (Create_priv = ‘Y’) OR (Drop_priv = ‘Y’);
SELECT user, host FROM mysql.db WHERE db = ‘mysql’
AND ((Select_priv = ‘Y’) OR (Insert_priv = ‘Y’) OR (Update_priv = ‘Y’)
OR (Delete_priv = ‘Y’) OR (Create_priv = ‘Y’) OR (Drop_priv = ‘Y’));
確保返回結果只能是數據庫管理員賬號。
5.2限制非管理員用戶的權限
Mysql.user表中的權限列有:
file_priv:表示是否允許用戶讀取數據庫所在主機的本地文件;
Process:表示是否允許用戶查詢所有用戶的命令執行信息;
Super_priv:表示用戶是否有設置全局變量、管理員調試等高級別權限;
Shutdown_priv:表示用戶是否可以關閉數據庫;
Create_user_priv:表示用戶是否可以創建或刪除其他用戶;
Grant_priv:表示用戶是否可以修改其他用戶的權限;
應確保只有數據庫管理員才有上述權限,使用如下sql語句查看擁有各個權限的數據庫賬號:
select user, host from mysql.user where File_priv = ‘Y’;
select user, host from mysql.user where Process_priv = ‘Y’;
select user, host from mysql.user where Process_priv = ‘Y’;
SELECT user, host FROM mysql.user WHERE Shutdown_priv = ‘Y’;
SELECT user, host FROM mysql.user WHERE Create_user_priv = ‘Y’;
SELECT user, host FROM mysql.user WHERE Grant_priv = ‘Y’;
SELECT user, host FROM mysql.db WHERE Grant_priv = ‘Y’;
確保查詢結果中不存在非管理員用戶。
如果存在非管理員用戶,使用如下命令進行權限回收:
REVOKE FILE ON *.* FROM ‘user’;
REVOKE PROCESS ON *.* FROM ‘user’;
REVOKE SUPER ON *.* FROM ‘user’;
REVOKE SHUTDOWN ON *.* FROM ‘user’;
REVOKE CREATE USER ON *.* FROM ‘user’;
REVOKE GRANT OPTION ON *.* FROM user;
其中user為上述查詢到的非管理員用戶。
5.3合理控制DML/DDL操作授權
DML/DDL語句包括創建或修改數據庫結構的權限,例如insert、update、delete、create、drop和alter語句,在任何數據庫中都要控制用戶的此類權限,確保只授權給有業務需求的非管理員用戶。Mysql命令行下執行如下命令:
SELECT User,Host,Db FROM mysql.db WHERE Select_priv=’Y’
OR Insert_priv=’Y’ OR Update_priv=’Y’ OR Delete_priv=’Y’ OR Create_priv=’Y’
OR Drop_priv=’Y’ OR Alter_priv=’Y’;
上述查詢到的用戶只能對特地的數據庫才有相關的權限,使用如下命令進行相關權限的回收:
REVOKE SELECT ON host.database FROM user;
REVOKE INSERT ON host.database FROM user;
REVOKE UPDATE ON host.database FROM user;
REVOKE DELETE ON host.database FROM user;
REVOKE CREATE ON host.database FROM user;
REVOKE DROP ON host.database FROM user;
REVOKE ALTER ON host.database FROM user;
其中user為查詢到的未授權的用戶,host為相關主機,database為相關數據庫。
6、審計和日誌
6.1開啟錯誤日誌審計功能
錯誤日誌包括數據庫運行和停止過程中的一系列活動信息,有助於分析數據庫運行過程中的一些異常活動,一般情況下需要開啟錯誤日誌記錄功能,使用如下命令查詢:
SHOW variables LIKE ‘log_error’;
確保返回結果為非空,如果為空,需要在mysql數據庫配置文件中增加相關配置。
6.2確保日誌存放在非系統區域
日誌文件隨着數據庫的運行會不斷增加,如果存放在系統區域,則會影響系統的正常運行,使用如下命令進行查詢:
SELECT @@global.log_bin_basename;
確保返回結果不是如下路徑:/、/var、/usr
6.3關閉原始日誌功能
原始日誌選項會決定一些敏感信息是否會被明文寫進日誌中,例如查詢日誌、慢查詢日誌、二進制日誌,確保數據庫配置文件中存在如下配置項:
Log-raw = OFF
7、認證
7.1 Old_passwords環境變量設置
Old_passwords決定了使用PASSWORD()函數和IDENTIFIED BY 、CREATE USER 、GRANT 等語句是時的hash算法:
0 – authenticate with the mysql_native_password plugin
1 – authenticate with the mysql_old_password plugin
2 – authenticate with the sha256_password plugin
設置為mysql_old_password代表弱hash算法,可以快速通過密碼字典進行暴力破解。使用如下命令查詢相關值:
SHOW VARIABLES WHERE Variable_name = ‘old_passwords’;
確保返回值不為1。
7.2 secure_auth 選項設置
如果客戶端採用Old_passwords發起連接請求,如果服務器端設置了secure_auth,則客戶端會拒絕連接請求,可以根據安全需求在配置文件中做相應配置。
7.3 密碼保存
確保密碼沒有明文保存在全局配置文件中。
7.4 確保所有用戶都要求使用非空密碼登錄
執行如下語句查詢是否有用戶不需要密碼即可登錄:
SELECT User,host
FROM mysql.user
WHERE (plugin IN(‘mysql_native_password’, ‘mysql_old_password’)
AND (LENGTH(Password) = 0
OR Password IS NULL))
OR (plugin=’sha256_password’ AND LENGTH(authentication_string) = 0);
7.5不存在空賬號
使用如下命令查詢是否存在空賬號:
SELECT user,host FROM mysql.user WHERE user = ”;
8、網絡設置
如果mysql數據庫服務器與應用是跨信任域部署的,則需要考慮在數據庫服務器與應用服務器之間建立ssl通道進行數據傳輸,不過這種場景一般很少見,在此不詳細描述。
9、數據庫備份
php mysql分布式數據庫如何實現
當前做分布式的廠商有幾家,我知道比較出名的有“華為雲分布式數據庫DDM”和“阿里雲分布式數據庫”,感興趣可以自行搜素了解下。
分布式數據庫的幾點概念可以了解一下。
數據分庫:
以表為單位,把原有數據庫切分成多個數據庫。切分後不同的表存儲在不同的數據庫上。
以表中的數據行記錄為單位,把原有邏輯數據庫切分成多個物理數據庫分片,表數據記錄分布存儲在各個分片上。
路由分發:
在分布式數據庫中,路由的作用即將SQL語句進行解析,並轉發到正確的分片上,保證SQL執行後得到正確的結果,並且節約QPS資源。
讀寫分離:
數據庫中對計算和緩存資源消耗較多的往往是密集或複雜的SQL查詢。當系統資源被查詢語句消耗,反過來會影響數據寫入操作,進而導致數據庫整體性能下降,響應緩慢。因此,當數據庫CPU和內存資源佔用居高不下,且讀寫比例較高時,可以為數據庫添加只讀數據庫。
扛得住的MySQL數據庫架構
數據庫優化是系統工程,性能的提升靠整體。本課程將面面俱到的講解提升數據庫性能的各種因素,讓你在最短的時間從小白到資深,將數據庫整體架構瞭然於胸
第1章 實例和故事 試看7 節 | 50分鐘
決定電商11大促成敗的各個關鍵因素。
收起列表
視頻:1-1 什麼決定了電商雙11大促的成敗 (04:04)試看
視頻:1-2 在雙11大促中的數據庫服務器 (06:03)
視頻:1-3 在大促中什麼影響了數據庫性能 (07:55)
視頻:1-4 大錶帶來的問題 (14:13)
視頻:1-5 大事務帶來的問題 (17:27)
作業:1-6 【討論題】在日常工作中如何應對高並發大數據量對數據庫性能挑戰
作業:1-7 【討論題】在MySQL中事務的作用是什麼?
第2章 什麼影響了MySQL性能 試看30 節 | 210分鐘
詳細介紹影響性能各個因素,包括硬件、操作系統等等。
收起列表
視頻:2-1 影響性能的幾個方面 (04:08)試看
視頻:2-2 CPU資源和可用內存大小 (10:54)
視頻:2-3 磁盤的配置和選擇 (04:44)
視頻:2-4 使用RAID增加傳統機器硬盤的性能 (11:30)
視頻:2-5 使用固態存儲SSD或PCIe卡 (08:35)
視頻:2-6 使用網絡存儲SAN和NAS (07:16)
視頻:2-7 總結:服務器硬件對性能的影響 (03:27)
視頻:2-8 操作系統對性能的影響-MySQL適合的操作系統 (03:50)
視頻:2-9 CentOS系統參數優化 (11:43)
視頻:2-10 文件系統對性能的影響 (03:29)
視頻:2-11 MySQL體系結構 (05:29)
視頻:2-12 MySQL常用存儲引擎之MyISAM (13:23)
視頻:2-13 MySQL常用存儲引擎之Innodb (10:44)
視頻:2-14 Innodb存儲引擎的特性(1) (15:24)
視頻:2-15 Innodb存儲引擎的特性(2) (08:44)
視頻:2-16 MySQL常用存儲引擎之CSV (09:19)
視頻:2-17 MySQL常用存儲引擎之Archive (06:08)
視頻:2-18 MySQL常用存儲引擎之Memory (10:40)
視頻:2-19 MySQL常用存儲引擎之Federated (11:21)
視頻:2-20 如何選擇存儲引擎 (04:33)
視頻:2-21 MySQL服務器參數介紹 (08:04)
視頻:2-22 內存配置相關參數 (09:24)
視頻:2-23 IO相關配置參數 (10:01)
視頻:2-24 安全相關配置參數 (06:13)
視頻:2-25 其它常用配置參數 (03:41)
視頻:2-26 數據庫設計對性能的影響 (04:36)
視頻:2-27 總結 (01:32)
作業:2-28 【討論題】你會如何配置公司的數據庫服務器硬件?
作業:2-29 【討論題】你認為對數據庫性能影響最大的因素是什麼
作業:2-30 【討論題】做為電商的DBA,建議開發選哪種MySQL存儲引擎
第3章 MySQL基準測試8 節 | 65分鐘
了解基準測試,MySQL基準測試工具介紹及實例演示。
收起列表
視頻:3-1 什麼是基準測試 (02:20)
視頻:3-2 如何進行基準測試 (09:00)
視頻:3-3 基準測試演示實例 (11:18)
視頻:3-4 Mysql基準測試工具之mysqlslap (13:30)
視頻:3-5 Mysql基準測試工具之sysbench (11:07)
視頻:3-6 sysbench基準測試演示實例 (17:11)
作業:3-7 【討論題】MySQL基準測試是否可以體現出業務系統的真實性能
作業:3-8 【實操題】參數不同取值對性能的影響
第4章 MySQL數據庫結構優化14 節 | 85分鐘
詳細介紹數據庫結構設計、範式和反範式設計、物理設計等等。
收起列表
視頻:4-1 數據庫結構優化介紹 (06:52)
視頻:4-2 數據庫結構設計 (14:49)
視頻:4-3 需求分析及邏輯設計 (11:00)
視頻:4-4 需求分析及邏輯設計-反範式化設計 (06:44)
視頻:4-5 範式化設計和反範式化設計優缺點 (04:06)
視頻:4-6 物理設計介紹 (05:17)
視頻:4-7 物理設計-數據類型的選擇 (18:59)
視頻:4-8 物理設計-如何存儲日期類型 (13:37)
視頻:4-9 物理設計-總結 (02:37)
圖文:4-10 說明MyISAM和Innodb存儲引擎的5點不同
作業:4-11 【討論題】判斷表結構是否符合第三範式要求?如不滿足要如何修改
作業:4-12 【實操題】請設計一個電商訂單系統的數據庫結構
作業:4-13 【討論題】以下那個字段適合作為Innodb表的主建使用
作業:4-14 【討論題】請為下表中的字段選擇合適的數據類型
第5章 MySQL高可用架構設計 試看24 節 | 249分鐘
詳細介紹二進制日誌及其對複製的影響、GTID的複製、MMM、MHA等等。
收起列表
視頻:5-1 mysql複製功能介紹 (04:58)
視頻:5-2 mysql二進制日誌 (22:05)
視頻:5-3 mysql二進制日誌格式對複製的影響 (09:37)
視頻:5-4 mysql複製工作方式 (03:08)
視頻:5-5 基於日誌點的複製 (20:06)
視頻:5-6 基於GTID的複製 (22:32)
視頻:5-7 MySQL複製拓撲 (13:58)
視頻:5-8 MySQL複製性能優化 (09:23)
視頻:5-9 MySQL複製常見問題處理 (08:31)
視頻:5-10 什麼是高可用架構 (14:09)
視頻:5-11 MMM架構介紹 (08:09)
視頻:5-12 MMM架構實例演示(上) (09:16)試看
視頻:5-13 MMM架構實例演示(下) (18:55)
視頻:5-14 MMM架構的優缺點 (08:01)
視頻:5-15 MHA架構介紹 (10:02)
視頻:5-16 MHA架構實例演示(1) (13:11)
視頻:5-17 MHA架構實例演示(2) (16:54)
視頻:5-18 MHA架構優缺點 (05:14)
視頻:5-19 讀寫分離和負載均衡介紹 (11:42)
視頻:5-20 MaxScale實例演示 (18:25)
作業:5-21 【討論題】MySQL主從複製為什麼會有延遲,延遲又是如何產生
作業:5-22 【實操題】請為某互聯網項目設計99.99%MySQL架構
作業:5-23 【討論題】如何給一個已經存在的主從複製集群新增一個從節點
作業:5-24 【討論題】給你三台數據庫服務器,你如何設計它的高可用架構
第6章 數據庫索引優化8 節 | 65分鐘
介紹BTree索引和Hash索引,詳細介紹索引的優化策略等等。
收起列表
視頻:6-1 Btree索引和Hash索引 (20:09)
視頻:6-2 安裝演示數據庫 (01:19)
視頻:6-3 索引優化策略(上) (17:33)
視頻:6-4 索引優化策略(中) (13:02)
視頻:6-5 索引優化策略(下) (12:30)
作業:6-6 【討論題】一列上建立了索引,查詢時就一定會用到這個索引嗎
作業:6-7 【討論題】在定義聯合索引時為什麼需要注意聯合索引中的順序
作業:6-8 【實操題】SQL建立索引,你會考慮那些因素
第7章 SQL查詢優化9 節 | 62分鐘
詳細介紹慢查詢日誌及示例演示,MySQL查詢優化器介紹及特定SQL的查詢優化等。
收起列表
視頻:7-1 獲取有性能問題SQL的三種方法 (05:14)
視頻:7-2 慢查詢日誌介紹 (08:57)
視頻:7-3 慢查詢日誌實例 (08:27)
視頻:7-4 實時獲取性能問題SQL (02:21)
視頻:7-5 SQL的解析預處理及生成執行計劃 (16:02)
視頻:7-6 如何確定查詢處理各個階段所消耗的時間 (09:35)
視頻:7-7 特定SQL的查詢優化 (10:34)
作業:7-8 【討論題】如何跟據需要對一個大表中的數據進行刪除或更新
作業:7-9 【討論題】如何獲取需要優化的SQL查詢
第8章 數據庫的分庫分表5 節 | 48分鐘
詳細介紹數據庫分庫分表的實現原理及演示案例等。
收起列表
視頻:8-1 數據庫分庫分表的幾種方式 (04:34)
視頻:8-2 數據庫分片前的準備 (13:53)
視頻:8-3 數據庫分片演示(上) (11:40)
視頻:8-4 數據庫分片演示(下) (17:02)
作業:8-5 【討論題】對於大表來說我們一定要進行分庫分表嗎
第9章 數據庫監控7 節 | 29分鐘
介紹數據庫可用性監控、性能監控、MySQL主從複製監控等
收起列表
視頻:9-1 數據庫監控介紹 (04:46)
視頻:9-2 數據庫可用性監控 (07:20)
視頻:9-3 數據庫性能監控 (09:39)
視頻:9-4 MySQL主從複製監控 (06:16)
作業:9-5 【討論題】QPS是否可以真實的反映出數據庫的負載情況
作業:9-6 【討論題】如何正確評估數據庫的當前負載狀況
作業:9-7 【實操題】開發一個簡單監控腳本,監控mySQL數據庫阻塞情況
數據庫如何優化
body{
line-height:200%;
}
如何優化MySQL數據庫
當MySQL數據庫邂逅優化,它有好幾個意思,今天我們所指的是性能優化。
我們究竟該如何對MySQL數據庫進行優化呢?下面我就從MySQL對硬件的選擇、Mysql的安裝、my.cnf的優化、MySQL如何進行架構設計及數據切分等方面來說明這個問題。
1.服務器物理硬件的優化
1)磁盤(I/O),MySQL每一秒鐘都在進行大量、複雜的查詢操作,對磁盤的讀寫量可想而知,所以推薦使用RAID1+0磁盤陣列,如果資金允許,可以選擇固態硬盤做RAID1+0;
2)cpu對Mysql的影響也是不容忽視的,建議選擇運算能力強悍的CPU。
2.MySQL應該採用編譯安裝的方式
MySQL數據庫的線上環境安裝,我建議採取編譯安裝,這樣性能會較大的提升。
3.MySQL配置文件的優化
1)skip
-name
-resolve,禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間;
2)back_log
=
384,back_log指出在MySQL暫時停止響應新請求之前,短時間內的多少個請求可以被存在堆棧中,對於Linux系統而言,推薦設置小於512的整數。
3)如果key_reads太大,則應該把my.cnf中key_buffer_size變大,保持key_reads/key_read_requests至少在1/100以上,越小越好。
4.MySQL上線後根據status狀態進行適當優化
1)打開慢查詢日誌可能會對系統性能有一點點影響,如果你的MySQL是主-從結構,可以考慮打開其中一台從服務器的慢查詢日誌,這樣既可以監控慢查詢,對系統性能影響也會很小。
2)MySQL服務器過去的最大連接數是245,沒有達到服務器連接數的上限256,應該不會出現1040錯誤。比較理想的設置是:Max_used_connections/max_connections
*
100%
=85%
5.MySQL數據庫的可擴展架構方案
1)MySQL
cluster,其特點為可用性非常高,性能非常好,但它的維護非常複雜,存在部分Bug;
2)DRBD磁盤網絡鏡像方案,其特點為軟件功能強大,數據可在底層塊設備級別跨物理主機鏡像,且可根據性能和可靠性要求配置不同級別的同步。
原創文章,作者:PJ1NO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129214.html