24,數據庫拆分

1,爲什麼要進行數據庫的拆分
在LNMP架構中,動態數據的讀取都要通過PHP去調取數據庫數據,這樣一個過程如果實在訪問數量龐大的情況下一臺數據庫是難以承擔的,必然導致內存溢滿,讀取不過來而導致web宕機,因此一般架構中Nginx和PHP是部署在一起的。數據庫作爲後端,它的數據處理速度就代表了整個web架構的效率,所以數據庫單獨部署且不止一臺數據庫服務器
2,數據庫拆分後解決了什麼問題
1)提高了數據庫處理數據速度
2)緩解Web壓力
3)提高用戶訪問速度
3,數據庫拆分後架構變化
24,數據庫拆分

4,以第22章LNMP架構爲例
1) web:10.0.0.8 Nging+PHP
2) db: 10.0.0.51 mysql
5,拆分
1)安裝數據庫服務器
yum install mariadb mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
mysqladmin password 'oldboy123'
2)把Web上的數據庫數據備份出來
mysqldump -uroot -p'oldboy123' -A --single-transaction > mysql-all.sql(將數據庫所有數據備份出來)
3)把數據SCP到新的數據庫服務器
scp mysql-all.sql 10.0.1.51:/tmp
4)在新數據庫服務器上將數據還原
mysql -uroot -p'oldboy123' < /tmp/mysql-all.sql
mysql -uroot -p'oldboy123' -e "show databases;"
5)創建用戶並授權
mysql -uroot -p'oldboy123'
grant all privileges on *.* to 'yangjiwan'@'%' identified by 'oldboy123';(這裏創建一個普通用戶不用root用戶了權限太大,密碼是oldboy123,%表示允許所有ip連接也可以指定就Nginx+PHP服務器連接)
flush privileges;
exit

6)修改PHP與數據庫的配置文件將指定新的(用戶,密碼,ip)用來連通新的數據庫
vim /code/wordpress/wp-config.php

/** MySQL數據庫用戶名 */
define('DB_USER', 'yangjiwan');

/** MySQL數據庫密碼 */
define('DB_PASSWORD', 'oldboy123');

/** MySQL主機 */
define('DB_HOST', '10.0.0.51');

7)測試,將原來PHP與數據庫的通訊斷開,連接新的數據庫
systemctl stop mariadb.service
24,數據庫拆分
然後還能訪問表示遷移成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章