mysql数据备分与步聚

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

 

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,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
相关文章
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
789 0
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
228 43
MySQL底层概述—4.InnoDB数据文件
本文介绍了InnoDB表空间文件结构及其组成部分,包括表空间、段、区、页和行。表空间是最高逻辑层,包含多个段;段由若干个区组成,每个区包含64个连续的页,页用于存储多条行记录。文章还详细解析了Page结构,分为通用部分(文件头与文件尾)、数据记录部分和页目录部分。此外,文中探讨了行记录格式,包括四种行格式(Redundant、Compact、Dynamic和Compressed),重点介绍了Compact行记录格式及其溢出机制。最后,文章解释了不同行格式的特点及应用场景,帮助理解InnoDB存储引擎的工作原理。
MySQL底层概述—4.InnoDB数据文件
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
35 9
MySQL和SQLSugar百万条数据查询分页优化
在面对百万条数据的查询时,优化MySQL和SQLSugar的分页性能是非常重要的。通过合理使用索引、调整查询语句、使用缓存以及采用高效的分页策略,可以显著提高查询效率。本文介绍的技巧和方法,可以为开发人员在数据处理和查询优化中提供有效的指导,提升系统的性能和用户体验。掌握这些技巧后,您可以在处理海量数据时更加游刃有余。
78 9
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
126 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
77 3
mysql 里创建表并插入数据
【10月更文挑战第5天】
268 1
MySQL进阶突击系列(09)数据磁盘存储模型 | 一行数据怎么存?
文中详细介绍了MySQL数据库中一行数据在磁盘上的存储机制,包括表空间、段、区、页和行的具体结构,以及如何设计和优化行数据存储以提高性能。
【YashanDB 知识库】MySQL 迁移至崖山 char 类型数据自动补空格问题
问题分类】功能使用 【关键字】char,char(1) 【问题描述】MySQL 迁移至崖山环境,字段类型源端和目标端都为 char(2),但应用存储的数据为'0'、'1',此时崖山查询该表字段时会自动补充空格 【问题原因分析】mysql 有 sql_mode 控制,检查是否启用了 PAD_CHAR_TO_FULL_LENGTH SQL 模式。如果启用了这个模式,MySQL 才会保留 CHAR 类型字段的尾随空格,默认没有启动。 #查看sql_mode mysql> SHOW VARIABLES LIKE 'sql_mode'; 【解决/规避方法】与应用确认存储的数据,正确定义数据