美文网首页
数据库拆分

数据库拆分

作者: _不想翻身的咸鱼 | 来源:发表于2019-11-12 18:02 被阅读0次

    为什么要进行数据库拆分?

    由于单台服务器运行LNMP架构会导致网站访问缓慢,当内存被吃满时,很容易导致系统出现oom,从而kill掉MySQL 数据库,所以需要将web和数据库进行独立部署。

    数据库拆分后解决了什么问题?

    • 1.缓解web网站的压力
    • 2.增强数据库读写性能
    • 3.提高用户访问的速度

    数据库拆分架构演变过程,如下图所示:

    image.png

    数据库拆分环境规划

    主机名称 应用环境 内网地址 外网地址
    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
    
    1. 将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 </root/all.sql
    

    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节点技术架构组成,如下图所示

    image.png

    快速扩展一台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 静态资源存放位置


    image.png

    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
    

    相关文章

      网友评论

          本文标题:数据库拆分

          本文链接:https://www.haomeiwen.com/subject/javqictx.html