Mysql备份还有这么多套路,还不了解下?

逻辑备份和物理备份

逻辑备份

逻辑备份用于备份数据库的结构(CREAET DATABASE、CREATE TABLE)和数据(INSERT),这种备份类型适合数据量小、跨SQL服务器、须要修改数据等场景。如mysqldump命令就是产生一个逻辑备份工具,使用mysqldump输出的文件包含CREATE TABLEINSERT语句,可以直接重建表内容和表结构。css

使用逻辑备份有如下优点和劣势:mysql

优点
  • 可移植性高,SQL语句可直接适用于其余SQL服务器;
  • 在数据恢复以前可增长、修改数据;
  • 数据恢复粒度小能够是服务器、数据库、表级别;
  • 使用文本格式,可读性高;
劣势
  • 备份时须要访问mysql服务器,影响其余客户端;
  • 须要将数据转换成逻辑格式(SQL,CSV);
  • 若是命令运行在客户端,mysql服务器还须要将数据发送给客户端;
  • 由于输出格式为文本文件,占用空间较大;

物理备份

物理备份是包括存储数据库内容的目录和文件的副本,这种类型的备份适用于须要在出现问题时快速恢复的大型重要数据库。web

优点
  • 完整的Mysql文件和目录备份,只须要复制文件不须要转换,速度比逻辑备份更快;
  • 除了备份数据,还能备份配置文件和日志文件;
  • 不须要运行Mysql服务器就能够完成备份;
  • 备份工具简单使用cp、scp、tar命令便可完成备份;
劣势
  • 可移植性不高,恢复数据只适用于相同或相似的机器上;
  • 为了保持数据库文件的一致性,须要停机备份;
  • 恢复粒度不能按表或用户恢复;

在线备份和离线备份

在线备份须要mysql服务器处理运行状态,以便备份工具从mysql服务器中获取数据。离线备份表示mysql服务器处理中止状态。两种备份形式也能够称为“热备份”和“冷备份“。sql

在线备份的主要特性

  • 备份不须要停机,对其余客户端影响较小其余链接可以正常访问mysql服务器(依赖操做类型,如读操做);
  • 备份须要加锁,以避免在备份期间对数据作出修改;

离线备份的主要特性

  • 备份期间服务器不可用;
  • 备份过程更简单,不会受到客户端的干扰;

逻辑备份(mysqldump使用)

mysqldump属于逻辑备份命令,使用mysqldump备份的优点是它很是方便和灵活,能够直接编辑输出文件或者使用导入到其余的SQL服务器中去,可是它不能用做备份大量数据的快速解决方案,对于大数据量,即便备份花费的时候能够接受,可是恢复数据也可能会很是缓慢,由于执执行SQL语句会涉及磁盘I/O进行插入,建立索引等。mysqldump的使用方式很是简单:shell

shellmysqldump [options] db_name [tbl_name ...]
shellmysqldump [options] --databases db_name ...
shellmysqldump [options] --all-databases
复制代码

使用mysqldump备份时要注意:数据库的一致状态,在执行mysqldump命令时要保证数据不会再发生变动,保持数据的一致性有二种方法:数据库

  • 使Mysql服务器只读
  • 使用事务加上隔离级别:REPEATABLE READ

使用REPEATABLE READ事务隔离级别执行mysqldump命令(使用事务保持数据库的一致状态):服务器

mysqldump --master-data=2 \
 --flush-logs  \
 --single-transaction  \
 --all-databases > /backup/`date +%F-%H`-mysql-all.sql  
复制代码

备份参数说明:微信

  • --master-data: 将二进制日志文件的名称和位置备份
  • --flush-logs: 开始备份以前刷新mysql服务器日志文件
  • --single-transaction:开始备份以前设置事务隔离级别为REPEATABLE READ而后发送一个START TRANSACTION命令。
  • --all-databases:备份全部数据库

物理备份(复制原始文件)

为了保证复制文件的完整性,备份原始文件最好是中止mysql服务器,复制原始文件备份由如下步骤完成:架构

  1. 中止mysql服务器
    $ mysqladmin shutdown
  2. 使用合适的工具复制原始数据文件
    $ tar cf /tmp/dbbackup.tar ./data
  3. 备份完成后,运行mysql服务器
    $ mysqld_safe

使用主从备份模式

使用mysqldumptar备份或多或少都会对业务产生影响,使用mysqldump备份须要对数据加锁,加锁就意味着其余客户端操做受到限制。使用tar命令须要中止服务器直接致使数据库服务器不可用,有没有办法能解决这两种问题呢?答案是有的,就是使用主从备份模式。app

在单机的基础上增长一台Slave机器对Master机器的数据进行同步:

开始备份时对Slave进行备份,这样即便Slave停机或对数据加锁也不会影响业务的正常使用,若是公司有条件或业务很是重要能够选择这种方案来备份数据。




欢迎关注微信公众号《架构文摘》,高质量技术文章第一时间推送。

相关文章
相关标签/搜索