数据库一主多备(数据库主从集群)
[!NOTE]
数据库一主多备(数据库主从集群)为付费功能,如需使用该功能,请联系客服购买。
另外,Redis6也支持主从集群,请参见:《Redis主从集群》
一、介绍
数据库一主多备是基于MySQL-5.7实现的数据库主从集群,其用途主要体现在两方面:
1.1 主从复制
建立一个和主数据库完全一样的数据库环境,称为从数据库。主数据库一般是实时的业务数据库,从数据库的作用和使角场合一般有:
作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;
可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能。
1.2 读写分离
指读与写分别使用不同的数据库,读和写数据库是部署在不同服务器上;一般读写的数据库环境配置为,一个写入的数据库,一个或多个读的数据库,各个数据库分别位于不同的服务器上,充分利用服务器性能和数据库性能;因此会涉及到如何保证读写数据库的数据一致性,这时就可以通过主从复制技术来实现了。
二、应用场合
业务吞吐量很大,读数据库(可简单理解为的比例和影响)的负载较大。
三、主从数据库部署方法
步骤1:将A主机主数据库服务关闭
在A主机上将主数据库服务关闭:
步骤2:将A主机主数据库目录打包
用文件管理器将主数据库目录打包:
步骤3:启动主数据库服务
点击主数据库的“更多”按钮,选择“重启”:
步骤4:从A主机复制打包文件到B主机
用文件管理器将A主机上面打包好的主数据库文件复制到B主机data目录下
步骤5:在B主机解压打包文件
步骤6:在B主机上重命名解压出来的文件夹,如:mysql57001_slave
步骤7:在B主机创建一个服务名称为mysql57001_slave的数据库服务,配置好主从集群
步骤8:启动从数据库(如果启动失败,则重启主数据库即可)
四、主从复制测试方法
首先在主数据库添加一个测试数据库test001
然后打开文件管理,进入从数据库的数据文件目录,查看是否存在test001,如存在,则说明数据库主从已生效
此时,我们就能轻松实现以下两个应用场景:
作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;
可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能。
五、读写分离的简单应用
数据库读写分离,其实是需要业务系统程序的支持,如果您的业务系统程序本身不支持数据库读写分离,那也是没有作用的。
本次演示中我们采用WordPress + HyperDB插件来实现数据库读写分离操作
5.1 安装WordPress
在应用市场中安装WordPress
数据库主机请选择主数据库
然后按照正常流程完成WordPress的安装部署
5.2 安装HyperDB插件
进入WordPress后台安装HyperDB插件
用文件管理器进入WordPress插件目录,发现该文件夹内共有如下 3 个文件:
db-config.php
(该文件是插件的配置文件)
db.php
(该文件是插件的功能核心文件)
readme.txt
(该文件是插件的介绍文档)
修改db-config.php
,将其中的类似部分改成以下内容:
$wpdb->add_database(array(
'host' => 'mysql57001_master', // 主要数据库地址
'user' => 'wordpress0_3c9db',
'password' => 'V4ex41r^pGU2E^7TP7l;cUaqcHLxaGa7nQvzz6CPA',
'name' => 'wordpress0_3c9db',
'write' => 1, // 给主要数据可写入
'read' => !defined('DB_HOST_RPL1') ? 1 : 0, // 当从数据库不可用时主要数据库才可读取,如果从数据库可用则从从数据库读取。
));
if(defined('DB_HOST_RPL1')):
$wpdb->add_database(array(
'host' => 'mysql57001_slave', // 从数据库地址
'user' => 'wordpress0_3c9db',
'password' => 'V4ex41r^pGU2E^7TP7l;cUaqcHLxaGa7nQvzz6CPA',
'name' => 'wordpress0_3c9db',
'write' => 0, // 从数据库不可写入
'read' => 1, // 从数据库可读取
));
endif;
然后将db-config.php
文件复制到WordPress网站根目录:
再把db.php
文件复制到wp-content目录下:
最后修改WordPress的配置文件wp-config.php
,在define('WP_CACHE', true);
语句的前面加上define( 'DB_CONFIG_FILE', '/data/www/db-config.php' );
,用于引入db-config.php文件路径,将默认数据库引擎替换成HyperDB:
至此,WordPress的数据库读写分离设置完毕!