mysql数据备分与步聚

简介:

 

mysql备份和恢复:
 1、灾难恢复;
 2、审计;
 3、测试;

 

备份:目的用于恢复;对备份数据做恢复测试;

 

 备份类型:

  根据备份时,数据库服务器是否在线:
   冷备:cold backup
   温备:warm backup
   热备:hot backup

 

  根据备份的数据集:
   完全备份:full backup
   部分备份: partial backup

 

 根据备份时的接口(直接备份数据文件还是通过mysql服务器导出数据):
   物理备份:直接复制(归档)数据文件的备份方式;physical backup
   逻辑备份:把数据从库中提出出来保存为文本文件;logical backup
    mysqldump

 

 根据备份时是备份整个数据还是仅备份变化的数据:
   完全备份:full backup
   增量备份:incremental backup
   差异备份:differential backup

 

备份策略:
  选择备份方式
  选择备份时间
  考虑到恢复成本
   恢复时长

  备份成本:
   锁时间
   备份时长
   备份负载

 

备份对象:
  数据
  配置文件
  代码:存储过程,存储函数,触发器
  OS相关的配置文件,如crontab配置计划及相关的脚本

  跟复制相关的配置;
  二进制日志文件

 

 备份工具:
  mysqldump:逻辑备份工具
   InnoDB热备、MyISAM温备、Aria温备
   备份和恢复过程较慢
  mysqldumper: 多线程的mysqldump

   很难实现差异或增量备份;

  lvm-snapshot: 
   接近于热备的工具:因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁;
   使用cp、tar等工具进行物理备份;
   备份和恢复速度较快;

    很难实现增量备份,并且请求全局需要等待一段时间,在繁忙的服务器上尤其如此;

  SELECT clause INTO OUTFILE '/path/to/somefile'
  LOAD DATA INFILE '/path/from/somefile'
   部分备份工具, 不会备份关系定义,仅备份表中的数据;
   逻辑备份工具,快于mysqldump

 

 Innobase: 商业备份工具, innobackup
  Xtrabackup: 由Percona提供的开源备份工具
   InnoDB热备,增量备份;
   MyISAM温备,不支持增量;
   物理备份,速度快;

  mysqlhotcopy: 几乎冷备

 

mysqldump: 
  mysqldump [options] [db_name [tbl_name ...]]

  备份单个库:mysqldump [options] db_name
   恢复时:如果目标库不存在,需要事先手动创建

  --all-databases: 备份所有库

  --databases db1 db2 ...: 备份指定的多个库

 注意:备份前要加锁

  --lock-all-tables:请求锁定所有表之后再备份,对MyISAM、InnoDB、Aria做温备

  --single-transaction: 能够对InnoDB存储引擎实现热备;

  备份代码:
   --events: 备份事件调度器代码
   --routines: 备份存储过程和存储函数
   --triggers:备份触发器

  备份时滚动日志:
   --flush-logs: 备份前、请求到锁之后滚动日志;

  复制时的同步位置标记:
   --master-data=[0|1|2]
    0: 不记录
    1:记录为CHANGE MASTER语句
    2:记录为注释的CHANGE MASTER语句

  

使用mysqldump备份:
   请求锁:--lock-all-tables或使用--singe-transaction进行innodb热备;
   滚动日志:--flush-logs
   选定要备份的库:--databases
   记录二进制日志文件及位置:--master-data=

  恢复:
   建议:关闭二进制日志,关闭其它用户连接;

 

 备份策略:基于mysqldump
   备份:mysqldump+二进制日志文件;
    周日做一次完全备份:备份的同时滚动日志
    周一至周六:备份二进制日志;
   恢复:
    完全备份+各二进制日志文件中至此刻的事件

   对MySQL配置文件,以及与MySQL相关的OS配置文件在每次修改后都应该直接进行备份;

  

  备份步骤:
  1、请求全局锁,并滚动日志
  mysql> FLUSH TABLES WITH READ LOCK;
  mysql> FLUSH LOGS;

  2、做二进制日志文件及位置标记(手动进行);
  # mysql -e 'show master status' > /path/to/somefile

  3、创建快照卷
  # lvcreate -L   -s -n    -p r  /path/to/some_lv

  4、释放全局锁
  mysql> UNLOCK TABLES;

  5、挂载快照卷并备份
  # cp

  6、备份完成之后,删除快照卷

  恢复:
  1、二进制日志保存好;
   提取备份之后的所有事件至某sql脚本中;
  2、还原数据,修改权限及属主属组等,并启动mysql
  3、做即时点还原

  mylvbackup: perl脚本,快速基于Lvm备份mysql

 xtrabackup:

  

 

备份 注意:
  1、将数据和备份放在不同的磁盘设备上;异机或异地备份存储较为理想;
  2、备份的数据应该周期性地进行还原测试;
  3、每次灾难恢复后都应该立即做一次完全备份;
  4、针对不同规模或级别的数据量,要定制好备份策略;
  5、二进制日志应该跟数据文件在不同磁盘上,并周期性地备份好二进制日志文件;

 从备份中恢复应该遵循步骤:
  1、停止MySQL服务器;
  2、记录服务器的配置和文件权限;
  3、将数据从备份移到MySQL数据目录;其执行方式依赖于工具;
  4、改变配置和文件权限;
  5、以限制访问模式重启服务器;mysqld的--skip-networking选项可跳过网络功能;
   方法:编辑my.cnf配置文件,添加如下项:
   skip-networking
   socket=/tmp/mysql-recovery.sock
  6、载入逻辑备份(如果有);而后检查和重放二进制日志;
  7、检查已经还原的数据;
  8、重新以完全访问模式重启服务器;
   注释前面在my.cnf中添加的选项,并重启;


 SELECT clause INTO OUTFILE ''
 LOAD DATA INFILE '' INTO TABLE tb_name










本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1690149,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
7月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
5月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
307 0
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
396 10
|
5月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
158 0
|
8月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
397 28
|
7月前
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
211 0
|
10月前
|
Java 关系型数据库 MySQL
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
2552 45
|
9月前
|
存储 SQL 关系型数据库
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为'0'或'1',查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
|
9月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
|
9月前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,

推荐镜像

更多