场景

购买了阿里云的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 核心知识解析,职业生涯,面试总结等文章会不定期坚持推送输出,欢迎大家关注~~~

阿里云RDS数据库与自建数据库做主从同步相关推荐

  1. 阿里云RDS与ECS自建库搭建主从复制

    前言 最近尝试在阿里云RDS与ECS自建库之间搭建主从复制,主要是想用于备份数据,所以对于同步一致性要求不是很高.模拟了几次,遇到的一些坑记录在这里,使用的是基于GTID的主从服务,关于GTID: M ...

  2. 基于阿里云RDS创建ECS自建从库

    使用阿里云ECS自建RDS MySQL从库 友情提示:安装MySQL软件步骤本文暂不介绍,安装完MySQL无需着急初始化数据库和启动服务.只需确保安装的MySQL版本不低于阿里云RDS MySQL版本 ...

  3. 阿里云RDS 数据迁移备份本地数据库

    RDS MySQL物理备份文件恢复到自建数据库 文章目录 RDS MySQL物理备份文件恢复到自建数据库 方案准备 注意事项 安装Mysql 安装Percona XtraBackup2.4 自建库安装 ...

  4. 阿里云DMS添加ECS自建数据库

    昨天在阿里云买了台服务器,在数据管理添加数据库时居然一直失败,提交了工单,处理得超级慢(当然也能够理解,毕竟这么大的公司肯定有很多问题在等着解决),不过最后还是解决了.在此记录一下,希望帮到有希望的人 ...

  5. 阿里云mysql gtid_阿里云RDS与ECS自建mysql数据库主从同步(GTID方式)

    1.GTID的概念 全局事务标识:global transaction identifiers: GTID是一个事务一一对应,并且全局唯一ID: 一个GTID在一个服务器上只执行一次,避免重复执行导致 ...

  6. 记一次阿里云RDS与自建数据库同步中断的补救过程

    背景 2018年4月24日上午9点左右,小编在即将托管的服务器上建立数据库,并通过openvpn建立加密隧道,从而实现阿里云RDS和本地自建数据库之间同步.在托管服务器上配置openvpn后,重启op ...

  7. ecs搭建mysql和云数据库_阿里云ECS搭建自己的关系型数据库mysql RDS主从复制

    最近尝试在阿里云RDS与ECS自建库之间搭建主从复制,主要是想用于备份数据,所以对于同步一致性要求不是很高.模拟了几次,遇到的一些坑记录在这里,使用的是基于GTID的主从服务,关于GTID: MySQ ...

  8. 阿里云RDS金融数据库(三节点版) - 案例篇

    原文链接 摘要: 标签 PostgreSQL , MySQL , 三节点版 , 金融数据库 , Raft , 分布式共享存储版 背景 土豆哪里去挖? 土豆郊区去挖. 一挖一麻袋? 一挖一麻袋. 挖掘机 ...

  9. 自建MySQL和阿里云RDS的区别 有必要使用云数据库吗?...

    很多阿里云ECS用户都会考虑是使用ECS自建数据库还是使用阿里云的RDS云数据库,如何选择?有必要使用云数据库吗?云吞铺子告诉你使用阿里云RDS云数据库的理由: RDS的高可用性 RDS提供了主备双节 ...

  10. 云数据库(RDS)- ECS自建MySQL和阿里云RDS的区别

    很多阿里云ECS用户都会考虑是使用ECS自建数据库还是使用阿里云的RDS云数据库,如何选择?有必要使用云数据库吗?阿里云百科网告诉你使用阿里云RDS云数据库的理由. RDS的高可用性 RDS提供了主备 ...

最新文章

  1. 使用vlc播放m3u8网络视频教程
  2. xman的思维导图快捷键_Xmind:ZEN思维导图有哪些使用技巧,最实用的快捷键是什么?...
  3. python程序经常被杀死之谜
  4. golang管道channel的遍历和关闭:应该使用for...range来遍历
  5. Flume实操(四)【单数据源多出口案例(选择器)】
  6. nutsdb与mysql_分享下 nutsdb 单机 1 亿、10 亿数据实测
  7. 恋爱盲盒小程序云开版源码
  8. 产品开发的组织架构和开发管理
  9. android studio计算机代码,Android Studio实现简易计算器
  10. 2022全新彩虹商城知识付费模板源码+修复改良版
  11. 地区 经纬度 json 数据
  12. 联想笔记本电脑(LENOVO)关闭触摸板
  13. 可以用美图秀秀裁一寸照片
  14. iOS从零开始学习socket编程——高并发多线程服务器
  15. T-BOX,OBD区别
  16. Visual Studio Code中设置HTML/HTML5模板
  17. 关于IDEA中使用git更新代码,会覆盖掉未提交的新代码解决问题
  18. python程序设计,猜数游戏编程实践课程实验
  19. Redis存储数据类型,及存取值方法
  20. 程序员的工资是不是被高估了?

热门文章

  1. 软件集成测试采用,集成测试的组成以及流程
  2. 禁用计算机安全模式,安全模式
  3. 汽车电子行业英文缩写大全(不断更新)
  4. 借助Writage,将 Word 转换为 Markdown发表csdn博客
  5. 微信小程序 MinUI 组件库系列之 abnor 异常流组件
  6. 模拟退火MATLAB
  7. 宇宙是一个无始无终的循环?道翰天琼认知智能机器人平台API接口大脑为您揭秘-2。
  8. VB计算汉字笔画数代码
  9. python pandas excle 把两列合并新的一列
  10. python不间断爬取微博热搜并存储