天天看點

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

WordPress是一種非常流行的部落格網站平台,也可以當作一個内容管理系統(CMS)來使用, 是世界上使用最廣泛的部落格系統之一。WordPress有非常多優秀的插件,使得這個開源産品變得非常容易擴充,滿足不同的需求。

我準備利用一個系列的文章,來展示如果利用阿裡雲的各種産品(彈性計算,資料庫,安全等等),搭建一個完整的WordPress網站。内容包括:

四、資料庫緩存和管理

當網站業務量逐漸增加,資料庫往往是整個系統中第一個遇到性能瓶頸的元件。這個時候需要通過對資料庫進行優化和管理,來提高資料庫的吞吐能力。

針對網站類應用,讀多寫少是常态,是以針對性地進行資料庫讀寫分離往往是一個好辦法。阿裡雲RDS資料提供的讀寫分離功能可以對外提供一個單一的資料庫讀寫入口,對系統的侵入性很小,是個非常理想的解決方案。除此之外,業界最常用的方法應該是在整個架構中增加記憶體資料庫來進行資料緩存,一般來說會選用Redis資料庫來進行實施。由此,系統的資料部分變得越來越複雜,是以還需要利用DMS這種管理工具來進行友善的運維。

這個部分的架構圖如下,基于上一個版本增加了:

  • MySQL資料庫讀寫分離:存放使用者向WordPress上傳的附件
  • CDN:通過CDN邊緣節點的緩存機制加速附件靜态檔案的讀取
    利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

用DMS管理背景資料

阿裡雲的DMS資料管理産品(

https://www.aliyun.com/product/dms

)在官網上的口号是“比phpMyAdmin更強大,比Navicat更易用”,還是挺霸氣的。其主要作用當然是聚合所有資料庫的管理(無論在不在阿裡雲上),友善DBA對庫表進行各種操作和維護。此外比較讨喜的功能是利用DSQL(通過Dlink)進行跨庫查詢,在微服務架構應用中進行資料驗證的時候常常會用到。這裡簡單示範一下免費版本的基本功能,專業版和企業版需要額外購買,同時也去除掉一些限制并提供一些額外功能,詳見:

https://help.aliyun.com/document_detail/48109.html

最簡單登陸DMS的方法是在RDS上面點選“登陸資料庫”,輸入使用者名和密碼即可。為了示範友善,我就直接用了之前設定的高權限賬号root。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

在界面的昨天可以看到資料庫選擇和資料表清單,通過這裡我們可以發現WordPress的資料結構還是很簡單的,基本上可以通過表名猜測到該表的用途,比如“wp_posts”自然就是存儲文章啦。注意“wp_”這個字首是可以定制的哦,如果不知道怎麼做的同學注意回看這個系列的第一篇。

試着寫個SELECT語句看看裡面的内容,很容易可以找到WordPress在安裝時預設po的第一篇hello world的文章。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

回到頁面上修改内容一下,儲存,然後再回到DMS重跑一次SQL,可以看到新的内容已經寫入了資料表中。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

MySQL讀寫分離

MySQL讀寫分離這個功能,如果是自建資料庫的話,需要利用Mycat做主從同步,做心跳檢測,還得自己運維,還是比較麻煩的。阿裡雲MySQL直接提供這個功能還是很貼心,在資料庫執行個體的“資料庫代理”标簽就可以打開了。首先選擇添加隻讀執行個體,稍等一會兒,一個新的隻讀執行個體就建立好了。建立隻讀執行個體時會從備執行個體複制資料,資料與主執行個體一緻,主執行個體的資料更新也會在主執行個體完成操作後立即自動同步到所有隻讀執行個體,完美。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

在執行個體清單中會發現增加了一個打着“R”标的資料庫執行個體。隻讀執行個體數量有限制,<64GB的主執行個體最多挂5個,≥64GB的主執行個體最多挂10個,一般中小網站挂3個就差不多了。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

隻讀執行個體有自己的内網位址,可以用程式控制什麼時候使用主執行個體,什麼時候使用隻讀執行個體。當然大多數情況下,讓MySQL自己決定就好了。我們回到主執行個體中,設定讀寫分離,将所有的讀權重都給隻讀執行個體好了。這樣就可以得到主執行個體的讀寫分離位址啦。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

獲得讀寫分離位址後,我們需要回到WordPress的配置檔案wp-content/wp-config.php中,将之前填寫的主庫内網位址替換成剛剛獲得的讀寫分析位址,并重新開機。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

完成後在網頁上浏覽一下,從後端隻讀執行個體的監控可以看到IOPS和連接配接數等資料的變化,可以确定讀寫分離已經起作用了。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

Redis資料庫(

https://www.aliyun.com/product/kvstore

)作為一種最常用的緩存資料庫,幾乎在各行各業的應用中都可以看到。為了将Redis利用起來,系統程式需要有一定的改造,WordPress則是通過插件來支援。一般來說還需要做高可用,以避免Redis失效而造成的雪崩效應,拖垮整個系統。是以大多數情況下都應該選擇叢集版多節點,以確定緩存的高可用。實際購買的時候注意VPC并設定密碼。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

和MySQL一樣,使用之前要開白名單。這種安全機制在阿裡雲資料庫基本是标配,配置方法也基本一樣,把ECS伺服器加進去就可以了。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

白名單配置完成後,記錄下内網位址,後面會用到。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

然後在WordPress中安裝插件Redis Object Cache。安裝後打開配置項,可以發現這個插件需要修改配置才可以使用。但是這個插件的配置居然不是可視化的,還需要從背景修改配置檔案,差評。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

插件的配置資訊是放在配置檔案wp-content/wp-config.php中的。需要增加/修改以下代碼(其中WP_REDIS_PASSWORD需要設定成建立Redis執行個體時設定的密碼):

/** setup for Redis Object Cache **/
define('WP_REDIS_CLIENT', 'pecl');
define('WP_REDIS_SCHEME', 'tcp');
define('WP_REDIS_HOST', 'Redis執行個體的内網位址');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_PASSWORD', '建立Redis執行個體時候設定的密碼');
define('WP_CACHE_KEY_SALT', 'wp_');
define('WP_REDIS_MAXTTL', '86400');           
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

配置完成後,再回到頁面上的插件配置項上看一下Redis的配置,如果正确無誤的話,選擇“Enable Object Cache”,在狀态欄應該顯示“Connected”就表示配置完成了。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

試着使用一下WordPress,然後我們利用DMS資料管理再看看Redis的效果。同樣也是在Redis執行個體頁面上方選擇“登陸資料庫”,然後應該可以看到許多Key-Value對和CPU、記憶體、命中率等名額,這就表示Redis已經開始為網站提供緩存服務啦。

利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理
利用阿裡雲搭建WordPress網站 – 資料庫緩存和管理四、資料庫緩存和管理

繼續閱讀