mysql-备份恢复

备份:存储的数据副本;

  原始数据:持续改变;

恢复:把副本应用到线上系统;

  仅能恢复至备份操作时刻的数据状态;

时间点恢复:

  binary logs;   二进制日志

为什么备份?

  灾难恢复:硬件故障(冗余)、软件故障(bug)、自然灾害、黑客攻击、误操作、...都会造成数据丢失的所要备份

备份时应该注意事项:

    能容忍最多丢失多少数据;决定以何种方式来备份

    恢复数据需要在多长时间内完成;

    需要恢复哪些数据;

做恢复演练:

    测试备份的可用性;

    增强恢复操作效率;

备份类型:

备份的数据集的范围:

 完全备份和部分备份

           完全备份:整个数据集;

           部分备份:数据集的一部分,比如部分表;

  完全备份:全量

      增量备份:仅备份自上一次完全备份或 增量备份以来变量的那部数据;

      差异备份:仅备份自上一次完全备份以来变量的那部数据;

物理备份、逻辑备份:

  物理备份:复制数据文件进行的备份;cp

      逻辑备份:从数据库导出数据另存在一个或多个文件中;mysqldump

根据数据服务是否在线

  热备:读写操作均可进行的状态下所做的备份;容易恢复时的时间点不一致

Innodb支持热备

  温备:可读但不可写状态下进行的备份;

      冷备:读写操作均不可进行的状态下所做的备份;

备份需要考虑因素:

  锁定资源多长时间?

  备份过程的时长?

  备份时的服务器负载?

  恢复过程的时长?

备份策略:

  全量+差异 + binlogs

  全量+增量 + binlogs

备份什么?

      数据(数据和二进制日志最好备份在不同的地方)

      二进制日志、InnoDB的事务日志;

      代码(存储过程、存储函数、触发器、事件调度器)

      服务器的配置文件

备份工具:

   mysqldump:mysql服务自带的备份工具;逻辑备份工具;生成一个sql脚本,只做全量备份

   cp/tar 不能做热备 物理备份

   lvm2:快照(请求一个全局锁),之后立即释放锁,达到几乎热备的效果;物理备份;

注意:不能仅备份数据文件;要同时备份事务日志;

                 前提:要求数据文件和事务日志位于同一个逻辑卷;

xtrabackup:

           由Percona提供,开源工具,支持对InnoDB做热备,物理备份工具;

                 完全备份、部分备份;

                 完全备份、增量备份;

                 完全备份、差异备份;

mysqlhotcopy  冷备工具

           select:

                 备份:SELECT cluase INTO OUTFILE 'FILENAME';  对表中部分

数据的导出导入用

                 恢复:CREATE TABLE

                 导入:LOAD DATA 

mysqldump:

mysqldump [OPTIONS] --all-databases [OPTIONS]    全部备份

mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]  可以跟多个库  库级别备份

mysqldump [OPTIONS] database [tables]   表级别

  MyISAM存储引擎:支持温备,备份时要锁定表;

  -x, --lock-all-tables:锁定所有库的所有表,读锁;

  -l, --lock-tables:锁定指定库所有表;

InnoDB存储引擎:支持温备和热备;(适用于myisam的选项也适用于Innodb)

其他选项

      -R ,--routines : 存储过程和存储函数

      --triggers

      -E , --events 事物

  --master-data[=#]  记录备份开始一刻 二进制日志文件位置处于那个文件的

  --fiush-logs: 锁定表完成后,即进行日志刷新操作  让日志滚动下

如:

mysqldump  -uroot  -pmageedu  --single-transaction  -R  -E  --triggers  --master-data=2  --fiush-logs   --databases    hellodb  >  /root/hellodb-ful;back-$(date  +%F).sql

>SHOW  MASTER  LOGS;   看log文件

恢复

将二进制日志文件转为sql语句

mysqlbinlog  master-log.00005   >  /tmp/binlog.sql

进入mysql将日志文件记录功能关闭:

      > SET  @@session.sql_log_bin=off

> \.  /tmp/alldb-fullback-2017-07-11.sql      全量恢复

>\.   /tmp/binlog.sql          读取二进制文件  

每次做完备份后做一次全量备份

 

 

猜你喜欢

转载自www.cnblogs.com/huxl1/p/9614111.html
今日推荐