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、增量备份二进制日志;

  • 相关阅读:
    常用模块(time,os,sys,collections,random,序列化模块,re)
    python-函数篇
    内置函数——filter和map
    python杂七杂八的用法
    计算机硬件
    操作系统简介
    Django入门
    linux下查看cpu物理个数和逻辑个数
    python反射的妙用
    Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/3732039.html
Copyright © 2011-2022 走看看