专栏首页林欣哲MySQL数据库备份和恢复

MySQL数据库备份和恢复

数据库备份

  • 数据库复制不能取代备份的作用
  • 备份分类:
    • 全量备份:整个数据库的完整备份
    • 增量备份:在上一次备份基础上,对更改数据进行备份。mysqldump不支持这种
    • 逻辑备份:结果为SQL语句,适用于所有存储引擎
    • 物理备份:对数据库目录的靠背,对于内存表只备份结构
    • 备份内容:
    • 备份方式:

mysqldump全备介绍

  • mysqldump备份
mysqldump database [tables]
mysqldump --database DB1 [DB2]
mysqldump --all-databases
  • 常用参数
    • 账户具备的权限SELECT, RELOAD, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, PROCESS
    • -u
    • -p
    • --single-transaction 开启事务来操作,innodb推荐用这个
    • -l 依次锁表,一般myisam用。备份时锁住一个数据库下的表。如果混合引擎的表也用这个参数,和 --single-transaction互斥。只能保持一个db下的一致
    • -x,锁所有db的所有表
    • --master-data=[1或2] 时间恢复和新的slave实例用。1把change master to被记录,2则是把1放在注释里,配合 --single-transaction一起指定
    • -R 备份存储过程
    • --triggers 触发器
    • -E 备份调度事件
    • --hex-blob 把数据文本变成hex格式
    • --tab=path 指定路径下,生成表结构和表数据两个文件
    • -w='过滤条件',单表导出用

mysqldump恢复

  • bash: mysql-u-p dbname<backup.sql
  • mysql client: mysql>source/tmp/backup.sql

指定时间点的恢复

先决条件

  • 具有指定时间点前的一个全备
  • 具备自上次全备后到指定时间点的所有“二进制日志”(相当于重复操作从备份时间点的到现在的数据库操作)

步骤:

  • 还原某个时间点的全备 mysql-uroot-p mc_orderdb<mc_order_backup.sql
  • 查找全备时开始的mysql-bin的log操作的日志点(change master那行)
  • 查看最近的误操作mysql-bin的log的日志点
  • mysqlbinlog--start-position=84882--stop-position=169348--database=mc_orderdb>mc_order_diff.sql
  • mysql-uroot-p mc_orderdb<mc_order_diff.sql

实时备份binlog

  • GRANT REPLICATION SLAVE ON*.*TO'repl'@'ip'IDENTIFIED BY'xxxxxx'
  • mkdir-p binlog_backup
  • mysqlbinlog--raw--read-from-remote-server--stop-never--host localhost--port3306-u repl-p xxxxxx二进制日志名

xtrabackup备份和恢复

  • xtrabackup用于在线备份innodb存储引擎的表
    • 只会备份数据文件,不会备份表结构
  • innobackupex是对extrabackup的封装并提供MyISAM表的备份功能
    • innobackupex是Xtrabackup的插件支持MyISAM备份,但也会锁表
全备和恢复
  • 全备 innobackupex--user=root--password=pwd--parallel=2/home/db_backup/
  • 备份恢复 innobackupex--apply-log/path/to/BACKUP-DIR
增量备份和恢复
  • 增量备份 innobackupex--user=root--password=pwd--incremental/home/db_backup/--incremental-basedir=/home/db_backup/back-dir 参数 --incremental-basedir上一次全备的文件夹
  • 增量备份恢复
    1. innobackupex--apply-log--redo-only全备目录
    2. innobackupex--apply-log--redo-only全备目录--incremental-dir=第一次增量目录
    3. innobackupex--apply-log全备目录
    4. mv/path/to/BACKUP-DIR/home/mysql/data 恢复后的数据直接替换原本的
    5. 记得改变属于的用户chmod

制定备份计划

  • 每天凌晨对数据库进行一次全备
  • 实时对二进制日志进行远程备份
    • 使用linux定时任务:crontab

参考

  1. 高性能可扩展MySQL数据库设计及架构优化 电商项目,sqlercn,https://coding.imooc.com/class/79.html

本文分享自微信公众号 - 林欣哲(gh_aba6caba3ac7),作者:林欣哲

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 人工智能的研究方向分类

    自从人脱离了动物,产生智能以来,人就不断地试图理解我们的智能本身。以我有限的认识来看,以目前的科技我们还远远未能理解自身的智能的行为和产生的原理。 但是,这不妨...

    linxinzhe
  • 10 分钟看懂新型市场预测平台Augur

    本文介绍我最近了解到的一个挺有意思的,让你觉得竟然还能有这种操作的新型市场预测平台--“Augur”。Augur是一个基于区块链技术的应用项目。当然,笔者根据市...

    linxinzhe
  • 单元测试JUnit4 知识点速查

    JUnit4的变化 JUnit4的测试类不再需要继承测试类。 只要用了@Test注解,方法名不再需要test开头 直接IDE支持用JUnit测试。 测试用例的目...

    linxinzhe
  • Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一、binlog二进制日志通常作为备份的重要资源,所以再...

    洗尽了浮华
  • 6个虚拟机备份和恢复的最佳实践

    虚拟机的架构与传统的物理机有着天壤之别,因此不适合于传统的备份方案。在本文中,我们将介绍一些虚拟机备份的最佳实践。

    Techeek
  • 经典案例:遭遇RMAN-06004,RMAN-20003后

    黄廷忠(网名:认真就输) 云和恩墨技术专家 个人博客:http://www.htz.pw/ 故障描述: 最近遇到11.2.0.3 RAC FOR AIX平台在出...

    数据和云
  • mongodb副本集的备份与恢复

    shirley
  • MySQL备份原理详解 转

    备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标...

    阿dai学长
  • 保护公共云和混合云中的数据

    自从人们开始依靠技术来运营业务以来,备份,业务连续性(BC)和灾难恢复(DR)已经成为30年来IT团队工作的重要组成部分。传统解决方案是针对内部部署基础架构和结...

    静一
  • Win7系统电脑如何完成备份?这个方法你应该会

    电脑是现在人们每天在工作的时候不可缺少的,但是电脑的系统却是不一样的,很多人还是比较喜欢使用Win7系统,今天呢就来给大家分享Win7系统电脑如何完成备份,这个...

    高效办公

扫码关注云+社区

领取腾讯云代金券