zoukankan      html  css  js  c++  java
  • MySQL备份工具之mysqldump使用

    MySQL备份工具之mysqldump使用说明

    一、备份分类

    根据能否停用数据库,将备份类型分为:
    1. 冷备:数据库服务停止后备份
    2. 温备:只能对数据库进行读操作,不能进行写操作
    3. 热备:在线备份,可以对数据库进行读写操作
    
    根据是直接备份数据库文件还是数据库里面的数据,将备份类型分为:、
    1. 物理备份:直接复制数据库文件
    2. 逻辑备份:将数据导出到文本文件中
    
    根据备份是备份全部内容还是部分内容,将备份类型分为:
    1. 完全备份:full backup,备份全部数据
    2. 差异备份:fidderential backup,只备份上次完全备份以来变化的数据
    3. 增量备份:incrementl backup,只备份上次完全增量备份以后的数据
    注:因此数据库备份策略一般是完全备份+增量备份,或者完全备份+差异备份
    

    二、备份工具

    mysqldump:是逻辑备份工具,mysqldump进行温备份,备份时需要加上一个全局锁,客户端只能进行读操作。
    
    mysqlbackup:对于innodb引擎的表mysqlbackup可以进行热备;但是对于非innodb表mysqlbackup就只能温备了。
    
    Xtrabackup:
    1.xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底层的"数据块",完成所谓的"物理备份"。
    2.支持对innodb进行热备、增量备份、差量备份。
    3.支持对myisam进行温备,因为在备份myisam表时,会对myisam表添加读锁,而且不能对myisam表进行增量备份,每次备份myisam数据都是全量,即使名义上是增量,但是实际上仍然是全量。
    
    注:innodb引擎热备,myism引擎温备。
    

    三、备份工具mysqldump

    常用选项:
    --add-drop-database:每个数据库创建之前添加drop数据库语句
    -A,--all-databases: Dump all the databases
    -B,--databases: --databases db1 db2... 备份指定的多个库
    --x,--lock-all-tables:请求锁定所有表之后在备份
    -l,--lock-tables:锁定指定的表
    --single-transaction:能够对InnoDB存储引擎实现热备
    --events:为备份的数据库备份事件
    --routines:备份routines(存储过程和函数)
    --triggers:为每个备份的表备份trigger
    -q,--quick:快速导出,备份时逐行读取表而非一次全部行后缓冲在内存中。在备份大表时有用。
    -F,--flush-logs:备份前,请求到锁之后滚动日志
    --all-tablespaces,-Y: 备份所有表空间
    --force, -f:即使发现sql错误,仍然继续备份
    --no-data, -d:只导出表结构
    --tables:覆盖 --databases or -B选项,后面所跟参数被视作表名
    --add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句
    --add-locks:备份数据库表时锁定数据库表;
    --comments:添加注释信息;
    --compact:压缩模式,产生更少的输出
    --complete-insert:输出完成的插入语句
    --default-character-set:指定默认字符集
    --host:指定要备份数据库的服务器;
    --lock-tables:备份前,锁定所有数据库表
    --no-create-db:禁止生成创建数据库语句
    --no-create-info:禁止生成创建数据库库表语句
    --password:连接MySQL服务器的密码
    --port:MySQL服务器的端口号
    --user:连接MySQL服务器的用户名
    --socket,-S:指定连接mysql的socket文件位置
    
    --master-data=[0|1|2]:记录二进制日志文件及位置
    0表示不记录
    1表示记录change master语句
    2记录为注释的change master语句
    
    --opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的合称,一般都要使用
    
    注:备份和恢复的过程比较慢,很难实现差异或增量备份恢复,如果目标库不存在,需要事先手动创建。
    
    本次实验操作用的是mariadb,默认引擎为innodb
    下面用mysqldump工具进行mysql数据库备份操作:
    
    方法一:锁表,滚动日志,备份
    MariaDB [(none)]> flush tables with read lock;  #锁表,只能读不能写
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> flush logs;  #滚动日志
    Query OK, 0 rows affected (0.00 sec)
    
    mysqldump -uroot -p123456  --databases zabbix | gzip > /opt/zabbix.sql.gz
    
    方法二:适用于MyISAM存储引擎
    mysqldump -uroot -p123456 --database zabbix --lock-all-tables --flush-logs | gzip > /opt/zabbix.sql.gz
    
    方法三:使用于innodb存储引擎,innodb支持热备,mariadb默认支持innodb引擎
    mysqldump -uroot -p123456 --database zabbix --single-transaction --flush-logs | gzip > /opt/zabbix.sql.gz
    
    扩展:既然熟悉了mysqldump命令,那么可不可以写一个mysql的备份脚本呢?同时用邮件的方式发送通知给管理员?
    
    
    总结:mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。   
    

    四、使用mysqldump进行增量备份

  • 相关阅读:
    python 获取字典值
    EF 预热
    多线程实战(三)线程池
    多线程实战(二)线程同步
    C#并行编程 (Barrier,CountdownEvent,ManualResetEventSlim,SemaphoreSlim,SpinLock,SpinWait )
    多线程实战(一) 线程基础
    构建千万级web访问架构
    程序员创业,远离管理软件
    两棵树,你砍哪一棵?
    NopCommerce Html扩展方法Html.Widget
  • 原文地址:https://www.cnblogs.com/jpfss/p/10774013.html
Copyright © 2011-2022 走看看