为什么要拆分数据库?
由于单台服务器运行`LNMP`架构会导致网站访问缓慢,当内存被占满时,很容易导致系统出现`oom`,从而kill掉MySQL数据库,所以要将web和数据库进行独立部署。(一般数据占用服务器内存70%-80%)
拆分数据库解决什么问题?
1、缓解web网站的压力
2、增强数据库读写性能
3、提高用户访问的速度
数据库拆分实例
主机 | 搭建服务 | 外网地址 | 内网地址 |
web01 | nginx+php | 10.0.0.7 | 172.16.1.7 |
Bb01 | mariadb | 10.0.0.51 | 172.16.1.51 |
部署数据库
安装数据库
[root@db01 ~]# yum install -y mariadb-server
启动并开机自启
[root@db01 ~]# systemctl start mariadb [root@db01 ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
设置密码
[root@db01 ~]# mysqladmin -uroot password '123456' [root@web01 ~]# mysql -uroot -p123456 -h172.16.1.51 ERROR 1130 (HY000): Host '172.16.1.7' is not allowed to connect to this MariaDB server
连接数据库并授权
[root@db01 ~]# mysql -uroot -p123456 MariaDB [(none)]> grant all on *.* to root@'172.16.1.%' identified by '123456'; Query OK, 0 rows affected (0.00 sec)
从旧数据库导出数据库文件
[root@web01 ~]# mysqldump -uroot -p123456 -B wordpress > /tmp/wordpress.sql
#注意:
1.-u指定数据库,-p数据库密码,-B指定数据库文件
2.导出的文件名字与数据库名无关
3.导出的文件后缀无所谓
4.最好用sql为后缀(不要问我为什么)
导入数据库文件
第一种方法:
先在web01把数据库传到db01上,然后再导入数据库中。
[root@web01 ~]# scp /tmp/wordpress.sql 172.16.1.51:/tmp/ [root@db01 ~]# mysql -uroot -p123456 < /tmp/wordpress.sql
第二种方法:
在数据库终端里面把shell终端的数据库文件导入进来。
MariaDB [wordpress]> source /tmp/wordpress.sql;
第三种方法:
在web01直接把数据库文件导入数据库中。
[root@web01 tmp]# mysql -uroot -p123456 -h172.16.1.51 < /tmp/wordpress.sql
项目中指定数据库要指定db01的数据库
[root@web01 ~]# vim /code/wordpress/wp-config.php /** WordPress数据库的名称 */ define('DB_NAME', 'wordpress'); /** MySQL数据库用户名 */ define('DB_USER', 'root'); /** MySQL数据库密码 */ define('DB_PASSWORD', '123456'); /** MySQL主机 */ define('DB_HOST', '172.16.1.51');