如何實現mysql數據庫可用性(數據庫的實用性)

本文目錄一覽:

怎麼實現 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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PJ1NO的頭像PJ1NO
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • Django ORM如何實現或的條件查詢

    在我們使用Django進行數據庫操作的時候,查詢條件往往不止一個,一個好的查詢語句需要考慮我們的查詢要求以及業務場景。在實際工作中,我們經常需要使用或的條件進行查詢,本文將詳細介紹…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python一次性輸入10個數如何實現?

    Python提供了多種方法進行輸入,可以手動逐個輸入,也可以一次性輸入多個數。在需要輸入大量數據時,一次性輸入十個數就非常方便。下面我們從多個方面來講解如何一次性輸入10個數。 一…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • 如何實現van-picker點擊遮罩不關閉

    van-picker是一個非常實用的Vue組件,但默認情況下,點擊遮罩會自動關閉選擇器。本文將介紹如何通過代碼實現van-picker點擊遮罩不關閉的功能。 一、通過覆蓋遮罩實現 …

    編程 2025-04-27
  • Think-ORM數據模型及數據庫核心操作

    本文主要介紹Think-ORM數據模型建立和數據庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係數據庫之…

    編程 2025-04-27

發表回復

登錄後才能評論