mysql技术内幕之备份恢复

备份与恢复

1.1 备份类型

  • 按备份方法划分
    • hot backup:在线备份
    • cold backup:停止数据库备份
    • warm backup:在线备份,但会对数据库操作有影响,例如加全局读锁,保证数据一致性
  • 按备份文件内容分:
    • 逻辑备份:如备份成sql语句
    • 物理备份:完全复制数据库物理文件

1.2 备份注意点

  • 备份的一致性:即备份的数据在这一时间点上是一致的
    • mysqldump –single-transaction: 备份在一个长事务中完成,保证备份的一致性
    • 每个公司根据自己的实际情况,编写备份程序,该程序应该方便设置备份方法及监控备份的结果,可以实时通知数据库管理员
  • 对于innodb存储引擎的冷备份,只需要备份数据库的frm文件,共享表空间文件,独立表空间文件重做日志文件,定期备份配置文件
  • 注意磁盘空间已满会导致备份失败的情况

1.3 备份工具

  • mysqldump

    mysqldump [args] > file_name
    --all-databases:备份所有库
    --database:备份指定库
    --single-transaction:保证备份一致性,只对innodb引擎有效,确保没有其他ddl操作,因为一致读不能隔离ddl操作
    --lock-tables:不能锁所有表,主要用在myisam引擎,保证备份一致性,与--single-transaction不能同时使用
    --lock-all-tables:锁所有表
    --add-drop-database:需要与--all-databases或--databases一起用,在create database之前运行drop database
    --master-data[=#]:为1,文件中记录change master语句,为2,则把change master语句注释,此选项会自动忽略--lock-table选项,如果没有--single-transaction选项,则会自动使用--lock-all-tables
    --where=where_condition:导出符合给定条件的数据,可以导出多张表,也可使用select... into outfile导出表
    此工具不能备份视图
  • xtrabackup

    • percona公司提供的开源mysql热备份工具,也可以实现增量备份

1.4 二进制日志备份与恢复

  • 保证安全正确记录二进制的推荐配置:

    [mysqld]
    log-bin = mysql-bin
    sync_binlog = 1
    innodb_support_xa = 1
  • 备份二进制日志前,可使用flush logs生产新日志,然后备份之前的日志

  • 恢复二进制日志

    mysqlbinlog binlog.0000001 | mysql -p test  恢复单个二进制日志
    mysqlbinlog binlog.[0-5]* | mysql -p test 恢复多个二进制文件
    要恢复多个二进制日志,应该同时恢复,而不是一个一个恢复
    也可以下面这样做,导出为sql,然后在导入数据库
    mysqlbing binlog.0000001 > /tmp/test.sql
    
    --start-position, --stop-position 指定偏移量恢复
    --start-datetime, --stop-datatime 指定时间点进行恢复
    

1.5 复制

  • 复制也可以实现备份的效果
  • 复制的原理
    • 主服务器记录二进制日志,可通过show master status查看主服务器进程信息
    • 从服务器把主服务器的二进制日志复制到自己的relay log中,从服务器有一个io线程,负责读取主服务器的binlog,还有一个sql线程,复制执行relay log,可通过show slave status查看从服务器进程信息
    • 从服务器重放relay log

文章作者: BY 木易杨
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BY 木易杨 !
评论
 上一篇
mysql技术内幕之innodb简介 mysql技术内幕之innodb简介
本系列是mysql技术内幕-innodb存储引擎一书的笔记总结 一、Innodb存储引擎1.1 体系架构1.1.数据库文件.frm: myisam和innodb存储引擎的表结构文件 .MYI: myisam存储引擎的表索引文件 .MYD
2020-05-26 BY 木易杨
下一篇 
mysql技术内幕之文件 mysql技术内幕之文件
文件1.1 日志文件 错误日志 位置查看:show variables like ‘log_error’ 默认文件名是当前服务器主机名.err 二进制日志 记录了对数据库进行更改的所有操作,若操作本身没导致数据变化,也会写入二进制日志
2020-05-26 BY 木易杨