
RDS 与 ECS 自建mysql 建议主从复制读写分离操作
一、RDS 作为主数据库,本实例使用的是mysql 8.0
-
登录 RDS 控制台,选择目标实例。
-
配置从实例读取数据使用的只读账号和授权数据库。
-
将从实例的 IP 地址加入主实例的 IP 白名单中
如果从实例是部署在同一地域的 ECS 上,仅需配置该 ECS 的内网地址即可。 如果不在一个地域,请输入ESC的外网IP地址 -
登录主实例,即RDS控制台
-
查询主实例的 server-id。在RDS控制台里面执行命令
show variables like '%server_id%';系统返回如下信息:+-------------------------+-----------------+ | Variable_name | Value | +-------------------------+-----------------+ | server_id | 2657086497 | | server_id_bits | 32 | +-------------------------+-----------------+ -
查询主实例的
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
-
安装 MySQL 从实例。(宝塔安装)
MySQL 安装包和安装方法请参见 MySQL 官方安装文档。
-
停止从实例 mysql 服务。
systemctl stop mysqld -
修改从实例 mysql 配置文件。
- 打开从实例 MySQL 配置文件。
vim /etc/my.cnf # 或者直接在宝塔软件管理界面进行图形界面配置mysql配置- 配置从实例的 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主从 结束- 执行如下命令,查看 binlog 配置结果。
# 登录mysql执行 show variables like '%binlog_format%';# 系统返回如下信息: +-------------------------+-----------------+ | Variable_name | Value | +-------------------------+-----------------+ | binlog_format | ROW | +-------------------------+-----------------+ -
将主实例数据全量同步到从实例。先手动将主从数据库的数据同步,保持完全一致
本例以 mysqldump 工具为例。
# mysqldump -uname -hmasterhost.mysql.rds.aliyuncs.com -p --databases exampledb > exampledb.sql # mysqldump -uname -p < exampledb.sql -
登录数据库,设置同步选项。
# 先启动,如果已经启动请忽略此命令 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以跳过错误的信息,记得在第一步我们

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

被折叠的 条评论
为什么被折叠?



