zoukankan      html  css  js  c++  java
  • 马哥学习笔记十九——MySQL进阶之备份和还原

    备份:副本
      RAID1,RAID10:保证硬件损坏而不会业务中止;

      

      备份类型:   

        热备份、温备份和冷备份    

          热备份:读、写不受影响;    

          温备份:仅可以执行读操作;    

          冷备份:离线备份;读、写操作均中止;

        物理备份和逻辑备份    

          物理备份:复制数据文件;    

          逻辑备份:将数据导出至文本文件中;

        完全备份、增量备份和差异备份;    

          完全备份:备份全部数据;    

          增量备份:仅备份上次完全备份或增量备份以后变化的数据;    

          差异备份:仅备份上次完全备份以来变化的数据;

    备份什么:
      数据、配置文件、二进制日志、事务日志

    物理备份:速度快
    逻辑备份:速度慢、丢失浮点数精度;方便使用文本处理工具直接对其处理、可移植能力强;

    备份策略:完全+增量;完全+差异

    MySQL备份工具:
      mysqldump: 逻辑备份工具、MyISAM(温)、InnoDB(热备份)
      mysqlhotcopy:物理备份工具、温备份

    文件系统工具:

      cp:冷备 lv: 逻辑卷的快照功能,几乎热备;  

        mysql> FLUSH TABLES;  

        mysql> LOCK TABLES

        创建快照:释放锁,而后复制数据

    第三组工具:
      ibbackup: 商业工具
      xtrabackup: 开源工具

    mysqldump: 逻辑备份  

      mysqldump(完全备份)+ 二进制日志  

      完全+增量:

    备份单个数据库,或库中特定表  

      mysqldump DB_NAME [tb1] [tb2]

        --master-data={0|1|2}  

          0: 不记录二进制日志文件及事件位置;  

          1:以CHNAGE MASTER TO的方式记录位置,可用于恢复后直接启动从服务器;       

          2:以CHANGE MASTER TO的方式记录位置,但默认为被注释;

        --lock-all-tables:锁定所有表

        --flush-logs: 执行日志flush

        如果指定库中的表类型均为InnoDB,可使用--single-transaction启动热备(不要和--lock-all-tabes同时使用);

    备份多个库:
      --all-databases: 备份所有库
      --databases DB_NAME,DB_NAME,...: 备份指定库

      --events
      --routines
      --triggers

    备份策略:每周完全+每日增量
      完全备份:mysqldump
      增量备份:备份二进制日志文件(flush logs)
    逻辑备份:
      1、浮点数据丢失精度;
      2、备份出的数据更占用存储空间,压缩后可大大节省空间;
      3、不适合对大数据库做完全备份;

    mysql>show engine innodb status;查看innodb存储引擎状态

    备份:  

      SELECT * INTO OUTFILE '/path/to/somefile.txt' FROM tb_name [WHERE clause];

    还原:  

      LOAD DATA INFILE '/path/to/somefile.txt' INTO TABLE tb_name;

    几乎热备:LVM快照备份

      snapshot:

      前提:   

        1、数据文件要在逻辑卷上;   

        2、此逻辑卷所在卷组必须有足够空间使用快照卷;   

        3、数据文件和事务日志要在同一个逻辑卷上;

      步骤:
        1、打开会话,施加读锁,锁定所有表;
          mysql> FLUSH TABLES WITH READ LOCK;
          mysql> FLUSH LOGS;
        2、通过另一个终端,保存二进制日志文件及相关位置信息;
          $ mysql -uroot -p -e 'SHOW MASTER STATUSG' > /path/to/master.info
        3、创建快照卷
          # lvcreate -L # -s -p r -n LV_NAME /path/to/source_lv
        4、释放锁
          mysql> UNLOCK TABLES;
        5、挂载快照卷,备份
          mount
          cp
        6、删除快照卷;
        7、增量备份二进制日志;

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/3732039.html
Copyright © 2011-2022 走看看