数据库一主多备(数据库主从集群)

[!NOTE]

数据库一主多备(数据库主从集群)为付费功能,如需使用该功能,请联系客服购买。

另外,Redis6也支持主从集群,请参见:《Redis主从集群

一、介绍

数据库一主多备是基于MySQL-5.7实现的数据库主从集群,其用途主要体现在两方面:

1.1 主从复制

建立一个和主数据库完全一样的数据库环境,称为从数据库。主数据库一般是实时的业务数据库,从数据库的作用和使角场合一般有:

  1. 作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;

  2. 可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能。

1.2 读写分离

指读与写分别使用不同的数据库,读和写数据库是部署在不同服务器上;一般读写的数据库环境配置为,一个写入的数据库,一个或多个读的数据库,各个数据库分别位于不同的服务器上,充分利用服务器性能和数据库性能;因此会涉及到如何保证读写数据库的数据一致性,这时就可以通过主从复制技术来实现了。

二、应用场合

业务吞吐量很大,读数据库(可简单理解为的比例和影响)的负载较大。

三、主从数据库部署方法

步骤1:将A主机主数据库服务关闭

在A主机上将主数据库服务关闭:

步骤2:将A主机主数据库目录打包

用文件管理器将主数据库目录打包:

image-20221107104123256

步骤3:启动主数据库服务

点击主数据库的“更多”按钮,选择“重启”:

image-20221107104739731

步骤4:从A主机复制打包文件到B主机

用文件管理器将A主机上面打包好的主数据库文件复制到B主机data目录下

image-20221107105123714

image-20221107105734102

image-20221107105911286

步骤5:在B主机解压打包文件

image-20221107110054166

步骤6:在B主机上重命名解压出来的文件夹,如:mysql57001_slave

image-20221107110345980

image-20221107110316163

步骤7:在B主机创建一个服务名称为mysql57001_slave的数据库服务,配置好主从集群

image-20221107110758735

image-20221107110851127

步骤8:启动从数据库(如果启动失败,则重启主数据库即可)

四、主从复制测试方法

首先在主数据库添加一个测试数据库test001

image-20221024114800926

然后打开文件管理,进入从数据库的数据文件目录,查看是否存在test001,如存在,则说明数据库主从已生效

image-20221024114945105

此时,我们就能轻松实现以下两个应用场景:

  • 作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;

  • 可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能。

五、读写分离的简单应用

数据库读写分离,其实是需要业务系统程序的支持,如果您的业务系统程序本身不支持数据库读写分离,那也是没有作用的。

本次演示中我们采用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的数据库读写分离设置完毕!

Copyright © www.urlos.com 2021 all right reserved,powered by Gitbook文档最近一次修订时间: 2022-11-07

results matching ""

    No results matching ""