为什么要进行数据库拆分?
由于单台服务器运行LNMP架构会导致网站访问缓慢,当内存被吃满时,很容易导致系统出现oom,从而kill掉MySQL 数据库,所以需要将web和数据库进行独立部署。
数据库拆分后解决了什么问题?
- 1.缓解web网站的压力
- 2.增强数据库读写性能
- 3.提高用户访问的速度
数据库拆分架构演变过程,如下图所示:
数据库拆分环境规划
主机名称 | 应用环境 | 内网地址 | 外网地址 |
---|---|---|---|
web01 | nginx +php | 172.16.1.7 | 10.0.0.7 |
db01 | mysq | 172.16.1.51 |
数据库拆分详解
1.web01网站服务器操作如下
1)备份web01上的数据库。-A表示备份所有数据库
[root@web02 ~]# mysqldump -uroot -A |gzip >/root/all.sql.gz
[root@web02 ~]# ll /root/all.sql.gz
-rw-r--r-- 1 root root 276869 Jun 12 15:30 /root/all.sql.gz
- 将web01上备份的数据库拷贝至db01 服务器上
[root@web02 ~]# sshpass -p123456 scp all.sql.gz 172.16.1.51:/root
2.db01数据服务器操作如下
1)将web01服务器上推送的数据库备份文件恢复至db01服务器新数据库中
[root@db01 ~]# rpm -Uvh https://www.boke111.cn/wp-content/uploads/file/epel-release-latest-7.noarch_\(1\).rpm
[root@db01 ~]# rpm -Uvh https://www.boke111.cn/wp-content/uploads/file/webtatic-release_\(1\).rpm
[root@db01 ~]# yum install -y mariadb-server
[root@db01 ~]# systemctl start mariadb.service
[root@db01 ~]# systemctl enable mariadb.service
[root@db01 ~]# gzip -d all.sql.gz ##解压压缩包
[root@db01 ~]# mysql
2) 数据库导入完成后,使用root进入数据库,刷新用户权限。并检查数据库是否导入成功。然后再检查是否可以使用远程方式登录wordpress数据库
[root@db01 ~]# mysql -uroot
MariaDB [(none)]> show databases; ##查看所有数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
6 rows in set (0.00 sec)
MariaDB [(none)]> select user,host from mysql.user; ###检查用户授权信息
+-----------+------------+
| user | host |
+-----------+------------+
| root | 127.0.0.1 |
| wordpress | 172.16.1.% |
| root | ::1 |
| root | localhost |
| wordpress | localhost |
| root | web02 |
+-----------+------------+
7 rows in set (0.04 sec)
MariaDB [(none)]> flush privileges; ##当用户权限出现改变时,用这条命令刷新用户权限
Query OK, 0 rows affected (0.00 sec)
[root@db01 ~]# mysql -uwordpress -p123456 -h 172.16.1.51
3.web01 测试远程登录成功后修改代码连接新数据库环境
1) 测试远程登录db01数据库
[root@web01 ~]# mysql -uwordpress -p123456 -h 172.16.1.51
2)修改wordpress 数据库配置文件,连接新的数据库
#数据库名字
define( 'DB_NAME', 'wordpress' );
#用户名称
define( 'DB_USER', 'wordpress' );
#用户密码
define( 'DB_PASSWORD', '123456' );
#数据库地址
define( 'DB_HOST', '172.16.1.51' );
3)最后访问网站,成功打开,至此才分数据库成功
拆分静态资源至独立服务器
为什么拆分静态资源至独立服务器
- 当后端的web节点出现多台时,会导致用户上传的图片,视频附件等内容仅上传至一台web服务器,那么其他的web服务器将无法访问到该图片。
新增一台nfs 存储解决了什么问题
- 1.保证了多台web 节点静态资源一致
- 2.有效节省多台web节点的存储空间
- 3.统一管理静态资源,便于后期推送至CDN进行静态资源加速
多台web节点技术架构组成,如下图所示
快速扩展一台web节点环境规划
主机名称 | 应用环境 | 外网地址 | 内网地址 |
---|---|---|---|
web01 | nginx+php | 10.0.0.7 | 172.16.1.7 |
web02 | nginx+php | 10.0.0.8 | 172.16.1.8 |
nfs | nfs | 172.16.1.31 | |
db01 | mysql | 172.16.1.51 |
快速扩展一台web节点详细步骤
1.nfs服务端,操作步骤如下
1) 安装并配置nfs
[root@nfs01 ~]# yum install -y rpcbind nfs-utils
[root@nfs01 ~]# systemctl start rpcbind nfs
[root@nfs01 ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
2)创建共享目录,并授权
[root@nfs01 ~]# mkdir -p /data/blog
[root@nfs01 ~]# chown www:www /data/blog
3) 重新启动nfs ,并加入开机自启
[root@nfs01 ~]# systemctl reload nfs
[root@nfs01 ~]# systemctl enable nfs rpcbind
2.web01 端操作如下
1) web01 节点安装nfs,然后使用 showmount 查看服务端 共享的资源
[root@nfs01 ~]# yum install -y nfs-utils
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# systemctl enable nfs
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/blog 172.16.1.0/24
2) 如何查找wordpress 静态资源存放位置
3) 备份web01 服务器上的wordpress 的静态资源,应为不进行备份就挂载,会把已有资源覆盖。
[root@web01 ~]# cd /usr/share/nginx/html/www/wp-content/
[root@web01 /usr/share/nginx/html/www/wp-content]# cp -r uploads uploads_bak
4) web01 客户端执行挂载操作
[root@web01 /usr/share/nginx/html/www/wp-content]# mount -t nfs 172.16.1.31:/data/blog /usr/share/nginx/html/www/wp-content/uploads
[root@web01 /usr/share/nginx/html/www/wp-content]# cp -rp uploads_bak/* uploads/
5) 将挂载信息加入开机自动挂载
[root@web01 /usr/share/nginx/html/www/wp-content]# tail -n2 /etc/fstab
172.16.1.31:/data/blog /usr/share/nginx/html/www/wp-content/uploads nfs defaults 0 0