美文网首页
简述mysql常用备份方式及备份工具并举例

简述mysql常用备份方式及备份工具并举例

作者: 小尛酒窝 | 来源:发表于2018-06-25 18:28 被阅读0次

    一、Mysql常用备份方式

    Mysql的备份方法可以根据备份手段、备份的数据范围及备份时数据服务是否在线等来划分,如:根据备份的数据集的范围可以划分为全量备份、增量备份、差异备份;根据备份的方法可以划分为物理备份和逻辑备份;根据备份时数据服务是否在线可以划分为热备份、冷备份和温备份。其中各种备份方式的解释如下:

    物理备份:是指备份时直接复制备份数据库的数据文件。
    逻辑备份:是指备份时,是使用备份工具从数据库导出数据库的一个或多个备份文件。
    事务日志备份:事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志。
    完全备份:是指将整个数据库内容做完整的备份。
    增量备份:是指仅备份自上一次完全备份或增量备份之后所增加的数据内容。
    差异备份:是指仅备份自上一个完全备份之后所增加的内容。
    热备份:是指在不停用数据库所提供的数据服务的读写操作下所做的备份。
    冷备份:是指在停用数据库所提供的数据服务的读写操作下进行备份。
    温备份:是指在停用数据库的写入操作,但不停用读取操作的情况下进行备份。

    在进行数据库备份的时候可结合上述的各种方法来进行Mysql数据库的备份,如:全量+差异备份,全量+增量备份等。在进行数据库备份时综合考虑下述事项:

    1、备份需要锁定数据库资源多长时间?(可能影响业务)
    2、备份所需要的时长。
    3、备份时服务器的负载情况如何?
    4、备份后,进行数据恢复所需要的时长?

    二、Mysql的备份工具

    1、mysqldump

    Mysqldump是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump,支持基于innodb的热备份。但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景。Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。
    对myisam存储引擎的表,只能使用温备份,这个时候要防止数据的写入,所以先加上读锁。这个时候也可以进入数据库手动加读锁,不过这样比较麻烦,可以在mysqldump工具中直接有一个加锁的选择,就是 --lock-all-tables ,例如:

    mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date+%F-%H-%M`.sql;`
    

    如果是备份单张表,直接在库名字test后面加上表名字即可。

    注意,恢复的时候记得关闭二进制日志:mysql> set sql_log_bin=0;
    因为这是基于逻辑备份方式,所以执行sql会插入数据,会记录到二进制日志里面去,因为这是恢复,所以插入的二进制日志基本没有啥意思,可以关闭掉,缩短恢复时间。

    Mysqldump工具的使用语法为:

    mysqldump [OPTIONS] database [tables]
    OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
    OR mysqldump [OPTIONS] --all-databases [OPTIONS]

    其常用选项为有:

    --all-databases:备份数据库中的所有表;
    -l,--lock-tables:开始导出前,锁定所有表。用READ  LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。
    -x,--lock-all-tables:提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。
    --single-transaction:用于在备份开始时设置事务隔离状态并使用一致性快照开始事务,而后马上unlock tables,然后执行导出,导出过程不影响其它事务或业务连接,但只支持类似innodb多版本特性的引擎;
    --master-data[=NUM]:该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令前添加注释信息。该选项将打开--lock-all-tables 选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。
    --no-data, -d:不导出任何数据,只导出数据库表结构;
    -p,--password:连接备份数据库的密码;
    -u:连接数据库的备份账号;
    -R:备份存储过程;
    -p,--port:指定数据库的端口号;
    --flush-logs:锁定表完成后,即进行日志刷新操作;
    --ignore-table:不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
    

    mysqldump工具的备份示例:

    #全量备份所有数据(MyISAM)
    mysqldump --lock-all-tables --flush-logs --master-data=2 -uroot --all-databases > /data/mysqldump/mysqldumpnew1.sql
    #如果是InnoDB表的话,将--lock-all-tables换成--single-transaction即可
    

    2、xtrabackup工具

    xtrabackup 对于MyISAM只支持温备,不支持增量备份;支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展,可以设立独立表空间,打开 innodb_file_per_table功能,启用之后可以支持单独的表备份。xtrabackup可以实现完全备份,增量备份,以及部分备份,其支持在线热备与恢复,在大数据量的时候,备份恢复都比较快。
    xtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致。

    相关文章

      网友评论

          本文标题:简述mysql常用备份方式及备份工具并举例

          本文链接:https://www.haomeiwen.com/subject/kiocyftx.html