MySQL数据备份

数据库备份的介绍

  • 数据库的备份类型
    • 完全备份:对整个数据库的数据进行备份
    • 部分备份:对部分数据进行备份(可以是一张表也可以是多张表)
      • 增量备份:以上一次备份为基础来备份变更数据,节约空间
      • 差异备份:以第一次完全备份的基础来备份变更数据,浪费空间
  • 数据库备份的方式
    • 逻辑备份:直接生成sql语句保存起来,在恢复数据的时候执行备份的sql语句来实现数据的恢复
    • 物理备份:直接拷贝相关的物理数据
    • 区别:逻辑备份效率低,恢复数据效率低,但是逻辑备份节约空间;物理备份浪费空间,但是相对逻辑备份而言效率比较高
  • 数据库备份的场景
    • 热备份:备份时,数据库的读写操作不会受到影响
    • 温备份:备份时,数据库的读操作可以进行,但是写操作不能执行
    • 冷备份:备份时,不能进行任何操作

逻辑备份mysqldump

  • mysqldump使用语法:mysqldump -u用户 -h host -p 数据库 > 路径
# 备份
./mysqldump -uroot -p --databases test_mysql > /usr/local/mysql/data/back.sql
 
# 恢复
mysql -uroot -p < back.sql

物理备份

  • 查看数据库源文件路径:show variables like ‘datadir%‘;

  • MyISAM表源文件

    • db.opt:创建库的时候生成,主要存储着当前库的默认字符集和字符校验规则
    • .frm:记录着表结构信息的文件
    • .MYD:记录着表的数据
    • .MYI:记录着索引文件
  • InnoDB表源文件

    • db.opt:创建库的时候生成,主要存储着当前库的默认字符集和字符校验规则
    • .frm:记录着表结构信息的文件
    • .ibd:独立表空间,里面记录这个表的数据和索引
    • ibdata1:共享表空间,里面记录这个表的数据和索引

二进制日志mysqlbinlog备份

  • 什么是二进制日志

    二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,不包括查询

  • 二进制日志的功能

    一般情况下,二进制日志有着数据复制和数据恢复的功能,开启二进制日志会有1%的性能消耗

  • 二进制日志开启

    # 查看二进制日志是否开启
    show variables like ‘log_bin%‘;
    
    # 开启二进制日志:vim /etc/my.cnf
    server-id=1
    log_bin=/data/mydata/log_bin/mysql-bin
    
    # 查看所有的binlog日志列表
    show master logs;
    # 刷新二进制日志
    flush logs;
    # 重置(清空)二进制日志文件
    reset master;
    
  • 二进制日志恢复数据

    # 查看二进制日志文件
    ./mysqlbinlog /data/mydata/log_bin/mysql-bin.000001
    
    # 找出要恢复的位置
    ./mysqlbinlog /data/mydata/log_bin/mysql-bin.000001 | cat -n | grep -iw ‘drop‘
    # 打印出相关内容
    ./mysqlbinlog /data/mydata/log_bin/mysql-bin.000001 | cat -n | sed -n ‘1,51p‘
    # 恢复数据
    ./mysqlbinlog  --stop-position="497" /data/mydata/log_bin/mysql-bin.000001 | mysql -uroot -p
    

MySQL数据备份

上一篇:动态sql


下一篇:MySQl查询练习