转自: http://www.awshao.com/aws-rds-mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E5%81%9A%E4%B8%BB%E5%BA%93%E4%B8%8E%E5%A4%96%E9%83%A8mysql%E4%BB%8E%E5%BA%93%E8%BF%9B%E8%A1%8C%E5%A4%8D%E5%88%B6/
Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’
因为RDS Mysql设计的理念就是过几分钟就将binlog切换(rorate),而不是等到到达最大size时才做切换。并且在完成切换后,会将旧的 binlog文件即时上传到Amazon S3中进行存储,并将实例上的binlog文件清除。所以在外部的Slave来指定RDS Master的binlog文件和位置时,可能很容易发生无法找到文件的报错。
RDS提供了存储过程mysql.rds_set_configuration给用户,功能是修改binlog文件在RDS实例中的保留时间,以小时为单位,在AWS RDS文档中进行了说明。
转自:https://www.jianshu.com/p/e376296235fc
RDS 是 AWS 提供的托管的数据库服务, 其中也提供 MySQL 数据库. 解析 binlog 已经成为了很多公司的标配服务, 可惜的是 AWS RDS 并没有提供相应的功能, 因此如果需要通过解析 binlog, 需要自己实现.
不解的是, 同样是 AWS 的数据库服务, Dynamodb 确通过 Dynamodb streams 提供了类似 MySQL binlog 解析的服务, 而 RDS 确没有对应的 feature. 对 dynamodb streams 感兴趣的可以参见 官方文档
在 RDS 中解析 binlog 有几个需要注意的地方.
RDS 也支持定制参数, 但是通过 Parameter Group 的方式实现, 在 AWS Console 或者 AWS cli 中可以修改. 同样, 将 binlog_format
设置成 ROW
模式
如果是非常繁忙的 MySQL, 数据写入非常多的话, 很容易产生很多的 binlog 文件. 自己搭建的 MySQL 一般通过 expire_logs_days 参数控制 binlog 保存的最大时长, 或者 DBA 负责清理 binlog .
在 RDS 中, 我们是无法登陆 RDS 实例所在的 server 的, binlog 保存时间的设置也非常 tricky: 依靠调用一个 RDS 特有的存储过程 call mysql.rds_set_configuration('binlog retention hours', 24);
实现, 具体参见官方文档 MySQL Database Log Files.
默认情况下, binlog 里面会出现 mysql.rds_heartbeat2
这个特殊的表, 在自己搭建的 MySQL 中不会出现这个表. 暂时不知道是否可以 ignore 掉这个表的复制. 暂时我们是通过赋予复制用户 SELECT
权限, 在 binlog 数据中过滤掉了这个表.
除了上面几个不同, RDS 中解析 MySQL binlog 没有其他不同.
-- EOF --
作者:haitaoyao
链接:https://www.jianshu.com/p/e376296235fc
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。