前言
通常大流量的 WordPress 最先遇到的問題就是數據庫的壓力過大,導致網站無法正常運作。這時候就需要對數據庫進行分流,例如讓主數據庫專注於寫入,而從數據庫專注於讀取。 平衡負載有很多不同的方法,例如使用 SQL Proxy,使用數據庫的主從式架構,使用數據庫的叢集等。這裡介紹一個 WordPress 外掛 HyperDB,可以幫助我們實現數據庫的平衡負載。
HyperDB 是一個進階的數據庫類,支援數據庫的複製、故障切換、負載平衡和分區。HyperDB 支援多個數據庫服務器,可以根據不同的條件對數據庫進行分流,提高數據庫的可用性和性能。
例如,可以將所有的讀取操作分流到從數據庫,寫入操作分流到主數據庫,這樣可以有效降低主數據庫的讀取壓力,提升用戶體驗。 也可以檢測數據庫的可用性,當主數據庫發生故障時,可以自動切換到從數據庫,保證數據庫的可用性。
不過該外掛已經有一段時間沒有更新了,所以在使用時需要注意。
安裝方式
下載 HyperDB 並解壓縮外掛。
設定好數據庫的連接資訊,然後將 db.php
檔案複製到 WordPress 的 wp-content
檔案夾下,將 db-config.php
檔案複製到 WordPress 的根目錄下就可以了。
|
|
複製 db.php 檔案
解壓縮後會得到一個 hyperdb
檔案夾,裡面有一個 db.php
檔案,將這個檔案複製到 WordPress 的 wp-content
檔案夾下。
|
|
複製 db-config.php 檔案
在跟 wp-config.php
同級的目錄下創建一個 db-config.php
檔案,用來組態數據庫的連接資訊。
|
|
組態 db-config.php 檔案
主要需要設定的是數據庫的連接資訊,例如主數據庫的連接資訊,從數據庫的連接資訊,數據庫的分流策略等。
使用 $wpdb->add_database()
方法來新增數據庫服務器,可以新增多個數據庫服務器,根據不同的條件進行分流。
可以用 write
和 read
來設置主從數據庫,write
為 1 表示允許寫入,read
為 1 表示允許讀取。
可以新增多個數據庫服務器,來進行負載平衡。
|
|
參考資料
如果只是單純想要實現數據庫的主從式架構,可以參考這篇文章:透過 MySQL 主從式架構,進行平衡負載,提高數據庫的可用性和性能
使用主從式架構的話,可以使用 MySQL 的內建功能來實現,不需要使用 HyperDB 這個外掛,在不同的伺服器中設定 WordPress 讀取的數據庫,可以做到簡單的平衡負載。
但由於單純使用主從架構,而沒有讀寫分離的功能,所以 HyperDB 這個外掛還是有它的用武之地。
另外也不建議為瞭解決讀寫分離問題而使用 MySQL 的 Master Master Replication,因為這樣有可會導致數據庫的同步問題,可能會導致數據庫的數據不一致。