Skip to content

MySQL主从配置 ​

概述 ​

DSMall Pro推荐使用云数据库服务(阿里云RDS、腾讯云CDB、华为云RDS等),这些服务提供自动的主从复制、读写分离、高可用等功能。通过ThinkPHP配置可以轻松连接云数据库的主从实例。

主从复制架构 ​

1. 架构图 ​

云数据库主实例 (Master)    云数据库只读实例1    云数据库只读实例2
         ↓                    ↓                    ↓
      写入数据              读取数据              读取数据
         ↓                    ↓                    ↓
     ThinkPHP应用 ←─────────── ThinkPHP应用 ←─────────── ThinkPHP应用
         ↓                    ↓                    ↓
    自动读写分离 ←─────────── 自动负载均衡 ←─────────── 自动故障转移

2. 云数据库优势 ​

  • 自动主从复制:无需手动配置,云服务商自动维护
  • 读写分离:自动将读请求分发到只读实例
  • 高可用:自动故障转移,99.95%+可用性
  • 弹性扩展:可根据业务需求动态调整
  • 备份恢复:自动备份,支持时间点恢复

ThinkPHP配置 ​

1. 基础配置 ​

编辑 php-server/config/database.php 文件:

php
<?php

return [
    'default'    =>    'mysql',
    'connections'    =>    [
        'mysql'    =>    [
            // 启用分布式数据库
            'deploy'   => 1,
            // 数据库类型
            'type'     => 'mysql',
            // 服务器地址(主实例,只读实例1,只读实例2)
            'hostname' => ['rm-xxx.mysql.rds.aliyuncs.com', 'rm-xxx.mysql.rds.aliyuncs.com', 'rm-xxx.mysql.rds.aliyuncs.com'],
            // 数据库名
            'database' => 'ds_admin',
            // 数据库用户名
            'username' => ['root', 'slave', 'slave'],
            // 数据库密码
            'password' => ['your_password', 'slave_password', 'slave_password'],
            // 数据库连接端口
            'hostport' => ['3306', '3306', '3306'],
            // 数据库字符集
            'charset'  => 'utf8mb4',
            // 数据库表前缀
            'prefix'   => 'ds_',
        ],
    ],
];

2. 环境变量配置 ​

编辑 .env 文件:

env
# 数据库配置
DB_TYPE=mysql
DB_HOST=rm-xxx.mysql.rds.aliyuncs.com,rm-xxx.mysql.rds.aliyuncs.com,rm-xxx.mysql.rds.aliyuncs.com
DB_NAME=ds_admin
DB_USER=root,slave,slave
DB_PASS=your_password,slave_password,slave_password
DB_PORT=3306,3306,3306
DB_CHARSET=utf8mb4
DB_PREFIX=ds_

3. 云数据库连接地址获取 ​

3.1 阿里云RDS ​

  1. 登录阿里云控制台
  2. 进入RDS管理控制台
  3. 选择实例,查看连接信息
  4. 获取主实例和只读实例的连接地址

3.2 腾讯云CDB ​

  1. 登录腾讯云控制台
  2. 进入云数据库MySQL控制台
  3. 选择实例,查看连接信息
  4. 获取主实例和只读实例的连接地址

3.3 华为云RDS ​

  1. 登录华为云控制台
  2. 进入云数据库RDS控制台
  3. 选择实例,查看连接信息
  4. 获取主实例和只读实例的连接地址

配置说明 ​

1. 关键参数说明 ​

参数说明值
deploy启用分布式数据库1=启用, 0=禁用
hostname服务器地址数组['主实例', '只读实例1', '只读实例2']
username用户名数组['主用户', '从用户', '从用户']
password密码数组['主密码', '从密码', '从密码']
hostport端口数组['3306', '3306', '3306']

2. 读写分离原理 ​

  • 写操作:自动路由到主实例(第一个服务器)
  • 读操作:自动路由到只读实例(除第一个外的其他服务器)
  • 负载均衡:多个只读实例间自动负载均衡

3. 云数据库注意事项 ​

  1. 主实例:必须是第一个连接地址
  2. 只读实例:从第二个开始的所有连接地址
  3. 网络访问:确保应用服务器能访问云数据库
  4. 安全组:配置正确的安全组规则
  5. 白名单:将应用服务器IP加入数据库白名单
  6. 连接数限制:注意云数据库的连接数限制
  7. 性能监控:使用云监控查看数据库性能

部署检查清单 ​

配置检查 ​

  • [ ] ThinkPHP配置正确
  • [ ] 环境变量配置正确
  • [ ] 云数据库连接地址正确
  • [ ] 数据库用户权限正确
  • [ ] 安全组配置正确
  • [ ] 白名单配置正确

功能检查 ​

  • [ ] 读写分离正常
  • [ ] 主从数据同步正常
  • [ ] 负载均衡正常
  • [ ] 连接池正常
  • [ ] 云监控正常

性能检查 ​

  • [ ] 数据库性能正常
  • [ ] 连接数使用正常
  • [ ] 响应时间正常
  • [ ] 资源使用正常

最后更新:2024-01-20
维护者:DSMall Pro技术团队(德尚网络)

获取帮助 ​

如果您在使用过程中遇到问题,可以通过以下方式获取帮助:

  • 官方网站:https://www.csdeshang.com
  • 电话咨询:15364080101(微信同号)
  • QQ咨询:858761000
  • 邮箱咨询:858761000@qq.com
  • 工作时间:工作日 9:00-18:00
  • 微信咨询:扫码添加微信
微信二维码

版权所有 © 2014-至今 德尚网络