RDS 与 ECS 自建mysql 建议主从复制读写分离操作

本文介绍如何配置阿里云RDS作为主数据库,ECS自建MySQL作为从数据库实现读写分离。包括RDS与ECS MySQL的主从复制配置步骤,以及ThinkPHP项目的数据库配置。

RDS 与 ECS 自建mysql 建议主从复制读写分离操作

RDS 与 ECS 自建mysql 建议主从复制读写分离操作

一、RDS 作为主数据库,本实例使用的是mysql 8.0

  1. 登录 RDS 控制台,选择目标实例。

  2. 配置从实例读取数据使用的只读账号和授权数据库。

  3. 将从实例的 IP 地址加入主实例的 IP 白名单中

    如果从实例是部署在同一地域的 ECS 上,仅需配置该 ECS 的内网地址即可。
    如果不在一个地域,请输入ESC的外网IP地址
    
  4. 登录主实例,即RDS控制台

  5. 查询主实例的 server-id。在RDS控制台里面执行命令

    show variables like '%server_id%';
    
    系统返回如下信息:
    
    +-------------------------+-----------------+
    | Variable_name           | Value           |
    +-------------------------+-----------------+
    | server_id               | 2657086497      |
    | server_id_bits          | 32              |
    +-------------------------+-----------------+
    
  6. 查询主实例的 GTID_SUBTRACT

    show master status\G
    
    # 返回如下
    File							Position		Binlog_Do_DB		Binlog_Ignore_DB		Executed_Gtid_Set
    mysql-bin.000391	445434																					96ac6c7d-11da-11ec-815e-0c42a1a88092:1-1034889
    

二、ECS 自建 mysql 5.7.34 从数据库,ECS系统 Centos 8.5.2111

  1. 安装 MySQL 从实例。(宝塔安装)

    MySQL 安装包和安装方法请参见 MySQL 官方安装文档

  2. 停止从实例 mysql 服务。

    systemctl stop mysqld
    
  3. 修改从实例 mysql 配置文件。

    1. 打开从实例 MySQL 配置文件。
    vim /etc/my.cnf
    # 或者直接在宝塔软件管理界面进行图形界面配置mysql配置
    
    1. 配置从实例的 server-id 和要同步的数据库。
    # 服务 ID,主从实例 server-id 需不同。只要不和主实例 rds 的相同即可
    server-id               =  123456789              
    log_bin                 =  /var/log/mysql/mysql-bin.log
    expire_logs_days        =  10
    max_binlog_size         =  100M
    # 需要同步的数据库
    replicate-do-db         =  exampledb
    # 不需要同步的数据库
    replicate-ignore-db     =  mysql
    replicate-ignore-db     =  information_schema
    replicate-ignore-db     =  performance_schema
    # GTID 配置 GTID 同步模式,**binlog** 格式为 **row**,以兼容主实例。
    gtid_mode=on
    enforce_gtid_consistency=on
    # 设置 binlog 为 row
    binlog_format=row
    log-slave-updates=1
    
    ####### 配置mysql主从 开始
    #数据库主从核心配置,开启主从复制。读写分离
    log_bin = slave_106_bin
    # 事务型GTID同步必须使用row
    binlog_format=row
    server-id = 106
    
    #同步的数据库
    binlog_do_db  = db_name
    
    #操作日志
    log-bin-index=mysql-bin.index
    relay-log=relay-log
    relay_log_index=relay-log.index
    
    #GTID配置,是否开启GTID功能
    gtid_mode=on
    enforce_gtid_consistency=on
    #同步主库操作日志
    log-slave-updates=1
    
    #跳过所有错误,这个参数至关重要
    slave-skip-errors=all
    #复制要同步的数据库,可以并列写多个
    replicate-do-db = db_name
    ####### 配置mysql主从 结束
    
    
    1. 执行如下命令,查看 binlog 配置结果。
    # 登录mysql执行
    show variables like '%binlog_format%';
    
    # 系统返回如下信息:
    +-------------------------+-----------------+
    | Variable_name           | Value           |
    +-------------------------+-----------------+
    | binlog_format           | ROW             |
    +-------------------------+-----------------+
    
  4. 将主实例数据全量同步到从实例。先手动将主从数据库的数据同步,保持完全一致

    本例以 mysqldump 工具为例。

    # mysqldump -uname -hmasterhost.mysql.rds.aliyuncs.com -p --databases exampledb > exampledb.sql
    # mysqldump -uname -p < exampledb.sql
    
  5. 登录数据库,设置同步选项。

    # 先启动,如果已经启动请忽略此命令
    systemctl start mysqld
    # 建立同步
    change master to master_host = 'rm-*******.mysql.rds.aliyuncs.com', master_port = 3306, master_user = 'master_user', master_password='master_pass',master_auto_position=1;
    # 下面我们需要重新设置GTID以跳过错误的信息,记得在第一步我们
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨林之后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值