nginx架構演進 拆分資料庫及nfs

2022-09-11 02:42:16 字數 4105 閱讀 2892

1.為什麼要進行資料庫的拆分

由於單台伺服器執行lnmp架構會導致**訪問緩慢,當記憶體吃滿時,容易導致系統出現oom,從而kill掉mysql資料庫,所以將web和資料庫進行獨立部署。

2.資料庫拆分後解決了什麼問題

1.緩解web**的壓力

2.增強資料庫的讀寫效能

3.提高使用者訪問的速度

3.資料庫拆分架構

4.如何將lnmp拆分為lnp+mysql

4.1備份172.16.1.7上的資料庫資訊

[root@web01 ~]# mysqldump -uroot -p'oldxu.com' --all-databases > mysql-all.sql

4.2將172.16.1.7上的資料推送至172.16.1.51

[root@web01 ~]# scp mysql-all.sql [email protected]:/tmp

4.3登入172.16.1.51恢復資料

[root@db01 ~]# yum install mariadb mariadb-server -y

[root@db01 ~]# systemctl enable mariadb

[root@db01 ~]# systemctl start mariadb

讀取sql檔案至資料庫中

[root@db01 ~]# mysql -uroot < /tmp/mysql-all.sql

[root@db01 ~]# systemctl restart mariadb

配置乙個遠端使用者,允許其他伺服器能通過遠端的方式連線

mysql -u資料庫名 -p資料庫密碼

mariadb [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'oldxu.com';

mariadb [(none)]> flush privileges;

4.4將172.16.1.7程式連線至本地的資料庫,修改為遠端的資料庫(應用割接)

[root@web01 ~]# systemctl disable mariadb

[root@web01 ~]# systemctl stop mariadb

4.5修改對應的資料的配置檔案

[root@web01 wordpress]# find ./ -type f  | xargs grep "oldxu.com"

./wp-config.php:define( 'db_password', 'oldxu.com' );

/** wordpress資料庫的名稱 */

define( 'db_name', 'wordpress' );

/** mysql資料庫使用者名稱 */

define( 'db_user', 'all' );

/** mysql資料庫密碼 */

define( 'db_password', 'oldxu.com' );

/** mysql主機 */

define( 'db_host', '172.16.1.51' );

wecenter

[root@web01 zh]# find ./ -type f | xargs grep "oldxu.com"

./system/config/database.php: 'password' => 'oldxu.com',

edusoho

[root@web01 edusoho]# find ./ -type f | xargs grep "oldxu.com"

清理快取

5.擴充套件多台web節點,簡稱web集群

5.1準備一台172.16.1.18的伺服器

5.2確保172.16.1.8上安裝nginx php

yum -y install nginx php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

5.3確保172.16.1.8 nginx配置 **和172.16.1.7一致

5.4.1建立使用者和使用者組

[root@web02 ~]# groupadd -g 666 www

[root@web02 ~]# useradd -u666 -g666 www

5.4.2切到172.16.1.7上執行如下的操作

[root@web01 ~]# rsync -**z --delete  /etc/nginx [email protected]:/etc/

[root@web01 ~]# rsync -**z --delete  /etc/php.ini [email protected]:/etc/

[root@web01 ~]# rsync -**z --delete  /etc/php-fpm.d [email protected]:/etc/

5.4.3打包**

[root@web01 ~]# tar czf code.tar.gz /code

5.4.4拷貝**

[root@web01 ~]# scp code.tar.gz [email protected]:/tmp

5.5回到172.16.1.8  然後解包  授權  重啟服務,並加入開機自啟

[root@web02 ~]# tar xf /tmp/code.tar.gz -c /

[root@web02 ~]# systemctl restart nginx php-fpm

[root@web02 ~]# systemctl enable nginx php-fpm

6.如何將多台節點的靜態資源共享至nfs

6.1準備172.16.1.31nfs儲存伺服器

6.1.1安裝

[root@nfs ~]# yum install nfs-utils -y

6.1.2配置

[root@nfs ~]# cat /etc/exports

/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

/data/edu 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

6.1.3初始化環境

[root@nfs ~]# mkdir -p /data/

[root@nfs ~]# groupadd -g 666 www

[root@nfs ~]# useradd -u666 -g666 www

[root@nfs ~]# chown -r www.www /data/

6.1.4啟動

[root@nfs ~]# systemctl enable nfs

[root@nfs ~]# systemctl restart nfs

6.2找到web儲存的所在的路徑

[root@web01 wp-content]# mv uploads/ uploads_bak

[root@web01 wp-content]# scp -rp uploads_bak/* [email protected]:/data/blog/

[root@web01 wp-content]# mkdir uploads

6.3在 172.16.1.7 172.16.1.8 ....  應用伺服器上進行掛載

[root@web01 wp-content]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads

s: 注意許可權問題

[root@nfs ~]# chown -r www.www /data/

6.4.訪問** 測試

使用dataframe拆分資料庫

最近在做資料採集過程中,有一些資料採集下來之後是用逗號分割開的,需要拆分成兩條,類似 idlocation university degree name programme en url25564 perth,albany western australia master of curatorial...

資料庫單體架構到集群的演進

架構演進與分庫分表 什麼時候分表?水平切分 後續更新 在資料庫效能遇到瓶頸的時候,無非是會出現以下幾種情況 無法獲取連線,是因為在高併發的情況下資料庫連線數不夠 查詢時間太久,是因為單錶儲存資料過多,資料庫處理資料的效率降低 這些問題的出現我們首先應該想到的優化順序應該是軟體到硬體的優化。因為硬體的...

資料庫拆分

一 水平切分是指,以某個欄位為依據 例如id 按照一定規則 例如取模 將乙個庫 表 上的資料拆分到多個庫 表 上,以降低單庫 表 大小,達到提公升效能的目的的方法,水平切分後,各個庫 表 的特點是 1 每個庫 表 的結構都一樣 2 每個庫 表 的資料都不一樣,沒有交集 3 所有庫 表 的並集是全量資...