云卷云舒:数据库上云-MySQL迁移指南

一个好的架构是怎么样的

一、Mysql简介

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

二、迁移原理

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

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

云卷云舒:数据库上云-MySQL迁移指南_第1张图片

当数据库有新数据需要同步更新时,会先将要修改的数据(原数据)写入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离线迁移的要求。

云卷云舒:数据库上云-MySQL迁移指南_第2张图片

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

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

2、Xtrabackup迁移

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

云卷云舒:数据库上云-MySQL迁移指南_第3张图片

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

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

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

你可能感兴趣的:(数据库,数据库,mysql,adb,云计算,迁移学习)