阿里云RDS数据库与自建数据库做主从同步

15 篇文章 0 订阅

场景

购买了阿里云的RDS数据库,基础版,没有主备,有做本地备份,但是如果RDS宕机了没办法马上切到可用的数据库,为了系统的高可用和容灾,决定做一下RDS和自建数据库的主从同步(不购买RDS的高可用版说到底也是因为qiong……)

前提

大版本相同的MySQL,我的RDS是5.7的,原本CentOS上是用预置yum源安装的mariadb5.5,于是我就先新增了MySQL5.7的源对数据库版本进行更新,这里不对如何更新进行赘述。

动工

配置主库

首先登录阿里云的控制台,进入RDS数据库的实例,将即将配置从库的服务器IP添加进RDS实例白名单中:
在这里插入图片描述
接着登录RDS数据库,执行SQL语句,得到RDS的server_id:
show variables like '%server_id%';
得到 RDS 的 log_pos 和 log file(下面用到):
show master status;

配置从库

先检查从库MySQL的大版本是否与主库一致:
mysql -v
停止从库的MySQL服务:
systemctl stop mysqld
修改从库MySQL的配置文件:
vim /etc /my.cnf
这里要注意配置的参数放在[mysqld]下:

server-id               =  2222              //服务 ID,主从实例 server-id 需不同。
log_bin                 =  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同步模式,binlog格式为ROW,同样放置在[mysqld]下:

#GTID
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row                             //设置 binlog 为 row
log-slave-updates=1

启动MySQL服务:

systemctl start mysqld

进入MySQL,执行语句,查看配置是否生效(值为ROW即生效):

show variables like '%binlog_format%';

将主库数据全量导出。

mysqldump -h RDS数据库ip -P RDS数据库端口 -u RDS数据库账号 -p RDS数据库密码 数据库名 > 导出的文件名.sql 

进入MySQL,将主库数据全量导入从库。

CREATE DATABASE 数据库名;
USE 数据库名;
SOURCE 导出的文件名.sql

在从库中配置同步选项:

change master to master_host='192.168.0.104', //Master 服务器Ip
master_port=3306,
master_user='test',
master_password='mysql', 
master_log_file='master-bin.000001',//Master服务器产生的日志
master_log_pos=0; //binlog起始位置

启动slave:

start slave;

查看slave状态:

show slave status\G

如果Slave_IO_Running 和 Slave_SQL_Running 的状态是否都为 Yes的话则配置成功!

可能遇到的问题

Q:ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.
A:前面我是从mariadb5.5直接升级到MySQL5.7的,推测是因为版本兼容导致的表结构不一致,这里把ibd表删除后重建

use mysql;
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;
source /usr/share/mysql/share/mysql_system_tables.sql

之后重启slave,再重新执行change master to即可。

By the way

有问题?可以给我留言或私聊
有收获?那就顺手点个赞呗~

当然,也可以到我的公众号下「6曦轩」,

回复“学习”,即可领取一份
【Java工程师进阶架构师的视频教程】~

回复“面试”,可以获得:
【本人呕心沥血整理的 Java 面试题】

回复“MySQL脑图”,可以获得
【MySQL 知识点梳理高清脑图】

由于我咧,科班出身的程序员,php,Android以及硬件方面都做过,不过最后还是选择专注于做 Java,所以有啥问题可以到公众号提问讨论(技术情感倾诉都可以哈哈哈),看到的话会尽快回复,希望可以跟大家共同学习进步,关于服务端架构,Java 核心知识解析,职业生涯,面试总结等文章会不定期坚持推送输出,欢迎大家关注~~~

在这里插入图片描述

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
购买阿里云RDS数据库主从架构,在处理大量并发访问和高负载时可以提供更可靠的服务。主库用于处理写操作,而从库则用于读取数据。 在购买前,我们需要考虑以下几个问题: 1. 数据库规格与容量:需要根据自己的业务需求选择不同的数据库规格和容量。 2. 数据库引擎:阿里云RDS支持MySQL、SQL Server、PostgreSQL、PPAS等数据库引擎,根据自己的业务需求进行选择。 3. 可用区:在不同的可用区部署主从架构可以提高服务可用性。 购买阿里云RDS数据库主从架构的步骤如下: 1. 登录阿里云官网,进入RDS控制台。 2. 创建主实例:在控制台中选择“创建实例”,选择“主从版”,选择数据库引擎、规格和容量等。创建完毕后,可以通过主实例管理界面查看主库的相关信息。 3. 创建从实例:在控制台中选择“创建实例”,选择“只读实例”,选择与主库相同的数据库引擎、规格和容量等。创建完毕后,可以通过从实例管理界面查看从库的相关信息。 4. 配置主从关系:在主实例管理界面中,选择“主备实例列表”,在页面下方点击“添加只读实例”,选择刚刚创建的从实例即可。 购买完毕后,我们需要对主从架构进行测试和监控。我们应该确保主从同步正常,避免数据同步延迟过大,以及保障读操作可以在从库正常进行。同时,也应该对RDS进行定时备份,以免发生数据丢失的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值