云卷云舒:【实战篇】MySQL迁移

一个好的架构是怎么样的

一、Mysql简介

Mysql 是一款跨平台的数据库系统是,被广泛地应用在中小型网站、大中型企业应用中。体积小、速度快,且开放源码,这些优点促使 Mysql 数据库市场占有率很高,而不必支付任何费用。

二、迁移原理

Mysql为关系型数据库,迁移的重点是保证数据库的数据一致性、业务连续性。二性都和Mysql的数据写入机制有关。

如下图描述的是Mysqldump数据写入原理:

当数据库有新数据需要同步更新时,会先将要修改的数据(原数据)写入undolog,方便用户后期回滚。之后会将要更新的数据读取到缓冲池中,并将这一数据写redolog buffer。然后写入redolog,在redolog落盘前,执行器还会将数据写入binlog。相对于redolog数据在数据页上的修改,binlog记录的是DDL和DML。在binlog数据落盘后,redo标记为已提交,数据在redolog上执行落盘。最后将buffer pool中的数据落入磁盘。

Mysql的日志系统记录了数据修改记录,binlog可以通过记录的sql语句复运行,将数据恢复。redolog可以通过对数据页的按序修改,完成对数据的恢复。Mysqldump和Xtrabackup就是基于这两种日志应运而生的Mysql数据迁移工具。

三、迁移方法、迁移工具

1、Mysqldump迁移

Mysqldump原本为Mysql官方的备份恢复工具,基于数据的逻辑备份,可以满足Mysql离线迁移的要求。

Mysqldump依靠sql文件进行全量数据的恢复,依靠按序运行二进制日志中的逻辑sql语句,完成对增量数据的恢复,支持Mysql的所有引擎:

  1. 拷贝全量数据时,数据库生成一份当前数据库的快照文件,数据库管理系统根据这份快照,dump出数据库的全量数据文件;
  2. 查看源端数据库是否处于开启状态,如果不处于开启状态则开启,并且重新启动数据库;
  3. 当数据库感知到有数据更新时,会把对应的逻辑语句写入binlog;
  4. 在这期间,无须关闭数据,当到了割接时间点,需要业务侧断开业务,并且确保所有数据落盘到binlog文件;
  5. 将sql文件和binlog文件传送至目标端后,先从sql文件中获取全量数据;
  6. 然后通过binlog,在目标端的DBMS上重新执行binlog中的sql逻辑语句,来完成增量数据的迁移。

2、Xtrabackup迁移

Xtrabackup为第三方的物理备份工具,可以实现Mysql数据的快速迁移。

Xtrabackup依靠拷贝源数据库的表数据和表结构文件加上redolog对表数据和表结构文件的补充修改,达成全量加增量数据的恢复,暂时只支持InnoDB,XtraDB,MyISAM和MyRocks四种引擎的数据表迁移:

  1. 执行xtrabackup后,会有一个后台进程将Mysql数据库中redolog的数据变化同步至xtrabackup_log;
  2. 同时,后台进程会拷贝源端数据库的表数据和表结构文件;
  3. 根据数据库中同步数据的页变化至xtrabackup_log;
  4. 将xtrabckup_log中的数据同步至已拷贝的表数据和表结构文件中;
  5. 回滚未提交数据;
  6. Mysql根据更新后的表结构和表数据文件还原数据库和数据表。

#个人学习整理资料,部分素材来源于互联网,如涉及侵权,请留言我会尽快处置。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cloud云卷云舒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值