zoukankan      html  css  js  c++  java
  • 【MySQL】MySQL之备份

    物理备份

    物理备份的原理是基于文件的拷贝,属于纯I/O型的备份方案。这种备份比较适合大型、重要、出现故障时需要快速恢复的场景,最大优点是备份和恢复的速度更快。
    物理备份又分为冷备份和热备份。

    冷备份(脱机备份)

    冷备份又称为脱机备份,是指在数据库服务停止运行时进行的备份。其实就是停掉数据库服务,cp数据文件的方法。进行备份的操作是:停掉MySQL服务,在操作系统级别备份MySQL的数据文件和日志文件到备份目录。

    热备份(联机备份)

    热备份又称为联机备份,是指在数据库服务运行期间执行的备份操作。其优点在于,备份执行过程中不会影响其他客户端访问MySQL服务,其他会话仍能正常读取数据。在MySQL中,对于不同的存储引擎,热备份方法也有所不同,下面主要介绍MyISAMySQL和InnoDB两种常用的存储引擎的热备方法。
    1、MyISAM存储引擎
    MyISAM存储引擎的热备份本质是将要备份的表加读锁,然后在cp数据文件到备份目录,常用以下两种方法:
    • 使用mysqlhotcopy工具;
    • 手工锁表cp:首先数据库中所有表加读锁flush tables for read,然后cp数据到备份目录。
    2、InnoDB存储引擎
    可以用以下方法进行备份:
    • ibbackup;
    • Xtrabackup;

    逻辑备份

    MySQL数据库的逻辑备份保存的是数据库逻辑结构(create database、create table语句)以及其所存储的数据(转换成insert语句或数据文本)。该方式最大的优点是灵活,缺点是执行恢复时的性能较差,综合来看,逻辑备份比较适合小型的、便于在其他服务器进行恢复的场景。可以通过以下方法实现:

    全量备份

    全量备份指的是备份MySQL数据库中的所有数据,可通过冷备或热备实现。

    增量备份

    MySQL中的增量备份必须借助Binlog实现,也就是说,必须在Mysql服务启动时指定--log-bin参数(也可在my.inf指定),Binlog是二进制日志,无法直接打开,可通过专用工具mysqlbinlog查看其内容。

    1、查看Binlog参数;
    mysql> select version();
    +------------+
    | version()  |
    +------------+
    | 5.7.21-log |
    +------------+
    1 row in set (0.01 sec)
    
    mysql> show variables like '%log_bin%' ;
    +---------------------------------+-----------------------------------------+
    | Variable_name                   | Value                                   |
    +---------------------------------+-----------------------------------------+
    | log_bin                         | ON                                      |
    | log_bin_basename                | /usr/local/mysql/binlog/mysql-bin       |
    | log_bin_index                   | /usr/local/mysql/binlog/mysql-bin.index |
    | log_bin_trust_function_creators | OFF                                     |
    | log_bin_use_v1_row_events       | OFF                                     |
    | sql_log_bin                     | ON                                      |
    +---------------------------------+-----------------------------------------+
    6 rows in set (0.00 sec)
    
    mysql> 
    2、以逻辑方式创建完整备份;
    mysql> system mysqldump -uroot -p -A -R -x --default-character-set=utf8 | gzip > /usr/local/mysql/backup/whole_db_bak_`date +%F`.sql.gz
    Enter password: 
    mysql> system ls -l /usr/local/mysql/backup/
    total 208
    -rw-r--r--. 1 root root 212685 Mar 14 16:36 whole_db_bak_2018-03-14.sql.gz
    mysql> 
    注:也可使用脱机备份进行数据库的全备。
    3、将全备后的Binlog定期备份至指定目录即完成了MySQL之增量备份;




  • 相关阅读:
    我的SICP习题解答-chapter 1
    redis主从复制实验,使用ruby
    python连接redis
    ruby连接redis
    python中的classmethod和staticmethod有什么不同[转载]
    安装配置rails环境
    试用memcached高可用repcached
    试用memcached
    Python一个很好玩的特性decorator
    mybatis随笔四之MapperProxy
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975677.html
Copyright © 2011-2022 走看看