「MySQL」- 备份 | 恢复 | 迁移 | 同步 | 数据同步 | 数据复制

备份 and 恢复

备份方式 备份工具 是否影响业务
热备,Hot Backup 1)XtraBackup
2)mysqlbackup
几乎无影响
温备,Warm Backup   部分影响
冷备,Cold Backup 1)cp
2)rsync
 
逻辑备份,Logical Backup 1)mysqldump  

备份特征:
1)无需停止数据库服务,无需中断业务,最大限度减少对操作干扰;
2)同时生成一致执性快照;

备份特征:
1)需要停止数据库服务,需要中断业务;
2)直接备份数据库物理文件;

备份特征:
1)无需停止数据库服务,但是会限制数据库操作,比如使数据库只读。

备份特征:
1)使用 mysqldump 备份,备份内容为语句;

特殊的数据库

Need for backing up MySQL databases information_schema, performance_schema, mysql and phpmyadmin?

information_schema – 不需要备份
performance_schema – 不需要备份
mysql – 需要,但是要小心。只能同版本恢复数据。尤其是 mysql.user 表,不保证兼容性。

备份工具

Percona Xtrabackup

MyLVMBackup

http://www.lenzg.net/mylvmbackup

MySQL Enterprise Backup (commercial)

-「MySQL Enterprise Backup
-「MySQL Enterprise Backup User’s Guide

数据库备份

-「Copying Data Files (Cold Backup Method)

数据库备份

xtraback 数据规模较大
mysqldump 数据规模较小
使用 LVM 快照做 MySQL 数据备份 – http://frodo.looijaard.name/article/mysql-backups-file-system-snapshots

参考文献

MySQL Enterprise Backup Glossary

场景 | 表结构同步

5.7 mysqldiff — Identify Differences Among Database Objects

主题:介绍 MySQL表结构同步方法。

MySQL 测试环境与生产环境的表结构同步方法。

with Navicat

使用 navicat,“工具” => “结构同步”。
这个“结构同步“可以生成“差异 SQL”,勾选要同步的内容,执行”运行“即可同步到生产环境。这里不再赘述。

注意: Navicat 的同步方式是直接运行 SQL 语句。额,这么做并不好因,为 DDL 操作会锁表,大数据量的时候就尴尬了。推荐使用:pt-online-schema-change

with mysqldiff

(1). 首先比较数据库结构差异。

比较有很多方法,下面是我知道的:

  • mysqldiff。关于 mysqldiff 的使用请查看:《mysqldiff》
  • 额,也可以:导出表结构;使用 diff 比较;。
  • 使用 Navicat 的”结构同步“,直接生成差异 SQL。

(2). 然后执行差异 SQL 语句,修改表结构。

建议使用 pt-online-schema-change(关于 pt-online-schema-change 查看:《pt-online-schema-change》)进行结构同步。

要是坚持使用 DDL 命令的话,会出现 DDL 锁表情况。

场景 | 同步表结构

需求:我们希望同步表结构到其他实例,周期且自动同步。

场景 | 同步数据,但忽略删除语句

问题

1)源库数据较大,需要定期清理(Delete/Drop/Truncate),但又需查询历史数据。
2)源库数据数据已同步到 Elasticsearch 中,但用户并不具备相关查询能力,要求使用 SQL 进行数据查询。

分析

既然用户要求通过 SQL 查询,那我们需要提供 SQL 查询能力。

方案

方案一、解析 Binlog 内容,忽略 Delete/Drop/Truncate 语句,然后在目标数据库重放 SQL 语句。

方案二、使用 Canal 工具,在数据同步时,忽略 Delete/Drop/Truncate 语句。

方案三、在目标库中,不要授予同步帐号 DELETE/DROP 权限。并保证同步工具忽略相关错误。

方案四、鉴于数据已同步到 Elasticsearch 服务,通过 Elasticsearch SQL 特性,来通过 SQL 查询数据。

方案五、通过云平台的提供的数据传输工具,例如,腾讯云数据传输服务支持过滤语句。