MySQL 数据备份

备份的类型

冷备:停库,停服务,备份

热备:不停库,不停服务,备份

温备:不停服务,锁表(阻止数据写入),备份

冷备份:这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。
温备份:这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性能问题。
热备份:这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问。

备份的策略

  • 全量备份:对选择的所有文件进行数据备份,若文件存在则覆盖。
  • 增量备份:针对于上一次备份(无论是哪种备份),备份上一次备份后(包含全量备份、差异备份、增量备份),所有发生变化的文件。
  • 差异备份:针对于上一次完全备份,备份上一次的完全备份后发生变化的所有文件。

备份的方式

逻辑备份

# 基于SQL语句的备份

# 1.binlog 备份,binlog 中是对于数据库 DDL/DML/DCL 的记录

# 2.into outfile,会以二维表格的形式输出数据 
[root@db03 data]# vim /etc/my.cnf
[mysqld]
secure-file-priv=/tmp
mysql> select * from world.city into outfile '/tmp/world_city.data';

# 3.使用 mysqldump 命令备份
# 4.replication,主从复制

物理备份

# 备份底层的数据文件
1. 备份整个 data 数据目录
2. Percona-xtrabackup 增量备份

mysqldump 命令(备份)

1.不加参数:用于备份单个表
    1)备份库
    [root@db02 ~]# mysqldump ku > /tmp/ku.sql
    2)备份表
    [root@db02 ~]# mysqldump ku test > /tmp/ku.sql
    3)备份多个表
    [root@db02 ~]# mysqldump ku test test2 test3 > /tmp/ku.sql
    #注意:当不加参数时命令后面跟的是库名,库的后面全都是必须是库下面的表名

2.连接服务端参数(基本参数):-u -p -h -P -S

3.-A, --all-databases:全库备份

4.-B:指定库备份
[root@db01 ~]# mysqldump -uroot -p123 -B db1 > /backup/db1.sql
[root@db01 ~]# mysqldump -uroot -p123 -B db1 db2 > /backup/db1_db2.sql

5.-F:flush logs在备份时自动刷新binlog(不怎么常用)
[root@db01 backup]# mysqldump -uroot -p123 -A -F > /backup/full_2.sql

6.--master-data=2:备份时加入change master语句0没有1不注释2注释
	1)等于2:记录binlog信息,并注释(日常备份)
	2)等于1:记录binlog信息,不注释(扩展从库)
	0)等于0:不记录binlog信息
	[root@db01 backup]# mysqldump -uroot -p123 --master-data=2 >/backup/full.sql

7.--single-transaction:快照备份

8.-d:仅表结构
9.-t:仅数据

10.-R, --routines:备份存储过程和函数数据
11.--triggers:备份触发器数据
12.gzip:压缩备份
	#备份成压缩包
	[root@db01 ~]# mysqldump -uroot -p123 -A | gzip > /backup/full.sql.gz
	#恢复压缩包中的数据
	[root@db03 ~]# zcat /tmp/full.sql.gz | mysql -uroot -p123

#完整的备份命令:
mysqldump -uroot -p123 -A -R --triggers --master-data=2 –-single-transaction > /tmp/full.sql

注意:

mysqldump 在备份和恢复时都需要 MySQL实例 启动为前提;

一般数据量级 100G 以内,大约 15-30分钟 可以恢复;

mysqldump 是以覆盖的形式恢复数据的。

记录成长过程
原文地址:https://www.cnblogs.com/zzzwqh/p/13362812.html