本文目錄一覽:
怎麼實現 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-tw/n/129214.html