mysql备份、恢复之mysqldump

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等

mysqldump 语法 :

默认配置读取路径:  /etc/mysql/my.cnf     /etc/my.cnf    ~/.my.cnf

Usage: mysqldump [OPTIONS] database [tables]

OR   mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

OR   mysqldump [OPTIONS] --all-databases [OPTIONS]

常用参数 :  
    -u, --user=name         指定用户 
    -h, --host=name         指定主机 
    -p, --password[=name]      指定密码 
    -A, --all-databases       指定所有库,-A与--all-databases不同时使用 
    -B, --databases         只指定--databases表示备份单个数据库;多数据库之间使用空格隔开;
                     如果不指定--databases表示备份整个数据库;只指定dbname表示备份单张表;多表之间使用空格隔开
    --master-data[=#]         0 表示关闭,默认值为 0 
                     1 表示开头打印CHANGE MASTER命令信息,在复制场景中有用 
                     2 表示添加注释信息,记录当前所处二进制日志及所处位置 
    --single-transaction       如果全部为 InnoDB引擎表,则不需要使用 --lock-all-tables;
                     基于此选项能实现热备InnoDB表;会启动单个大事务,对全局服务影响可能是持久的
    --lock-all-tables         执行备份前请求锁定表,一般只锁定当前要备份的数据库及表 
    --add-drop-database        在恢复之前先删除已经存在的对应数据库 
    --add-drop-table         在恢复之前先删除已经存在的对应表 
    -C, --compress          将数据先压缩后通过网络传输 
    -E, --events           备份数据同时,备份事件调度器代码 
    -R, --routines          备份数据同时,备份存储过程和存储函数 
    -d, --no-data          表示只备份表结构不备份数据,复制表结构、空库至其它服务器时有用.其它任何时候不可用  
    --opt               同时启动各种高级选项

备份方式 :

全量+增量+二进制日志

前提需要在配置中添加参数 :

default-storage-engine = InnoDB       设置默认存储引擎为InnoDB

innodb_file_per_table=1            设置每表单个表空间

log-bin=mysql-bin                启用二进制功能

备份过程 : 
    全量备份 : 
      使用InnoDB引擎,备份使用--single-transaction选项不需要锁定表即实现热备;使用非InnoDB引擎,备份需要使用--lock-all-tables选项进行请求锁定所有表后开始备份
 
      mysqldump -uroot -pmypass --single-transaction --all-databases --master-data=2 > /backup/mysql_fullbak.sql
 
    增量备份 : 
      mysql>SHOW MASTER STATUS;              查看当前处于哪个日志文件及位置 
         less  /backup/mysql_fullbak.sql     查看从哪个位置开始 
      mysqlbinlog --start-position=4579 --stop-position=4868 mysql-bin.000015 > /backup/increment.sql  指定开始及结束位置导出成增量备份
      
    二进制日志备份: 
      mysql>INSERT INTO test (Name,Age) VALUES (‘tom‘,18);       增量备份后,插入一条数据
      mysql>DROP DATABASE hello;                                 此时删除数据库
      mysql>SHOW MASTER STATUS;                           查看当前处于哪个日志文件及位置
      mysqlbinlog --start-position=4868 mysql-bin.000015  查看数据库崩溃前二进制日志开始位置,结束位置必须是数据库删除之前位置
      mysqlbinlog --start-position=4868 --stop-position=5062 mysql-bin.000015 > /tmp/hello.sql 将二进制日志启动时位置至崩溃前位置数据导出
恢复过程 : 
    前提 : 清空数据目录下所有文件,重新初始化数据库 
      mysql>SET GLOBAL sql_log_bin=0;      恢复时需要临时关闭二进制日志,如不关闭,恢复数据将记录进二进制日志增加日志管理难度
      mysql>FLUSH LOGS;                    手动对二进制日志进行一次滚动
      mysql < /backup/mysql_fullbak.sql    恢复全量备份
      mysql < /backup/increment.sql        恢复增量备份
      mysql < /tmp/hello.sql               恢复崩溃前导出二进制数据
      mysql>SET GLOBAL sql_log_bin=1;      恢复完成开启二进制日志

恢复后需要使用 mysqlcheck -uroot -pmypass -c -all-databases 检查所有表是否存在问题,所有恢复完成后请记得对数据库做一次全量备份

至此,使用mysqldump备份恢复完成,如有错误请大家指教!

时间: 2024-11-06 10:21:17

mysql备份、恢复之mysqldump的相关文章

MySQL备份恢复之XtraBackup

一. 简介 我们知道,针对InnoDB存储引擎,MySQL本身没有提供合适的热备工具,ibbackup虽是一款高效的首选热备方式,但它是是收费的.好在Percona公司给大家提供了一个开源.免费的Xtrabackup热备工具,它可实现ibbackup的所有功能,并且还扩展支持真正的增量备份功能,是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup包括两个主要工具:Xtrabackup和innobackupex: Xtrabackup只能备份InnoDB和Xtr

MySQL备份之mysqldump和lvm2的使用

逻辑备份:工具 mysqldump, mydumper, phpMyAdmin(备份的缺点:Schema和数据存储一起.会生成巨大的SQL语句.单个巨大的备份文件)连上MySQL后,将数据导出来.考虑到备份的数据可能会比较大,在比较在乎硬盘空间情况下可以使用压缩工具来先压缩后存放. 完全备份并不是指备份所有库是指备份指定数据集当中的所有数据,通常也可以是单个数据库.完全备份+增量备份时,先用mysqldump做一下完全备份,过一个时间后,备份一下这个时间内的二进制日志(每次备份都记录一下位置二进

MySQL备份恢复工具mysqldump

简要说一下MySQL的备份类型: 热备份:读.写不受影响 温备份:仅可以执行读操作 冷备份:离线备份,读.写操作都中止 物理备份:直接复制数据文件 逻辑备份:将数据导出至文本文件中 完全备份:备份全部数据 增量备份:仅备份上次完全备份或增量备份以后变化的数据 差异备份:仅备份上次完全备份以来变化的数据 MySQL的备份工具: mysqldump:逻辑备份工具,适用于小规模数据库,MyISAM(温备),InnoDB(热备) mysqlhotcopy:物理备份工具,温备份 cp:直接复制,冷备 lv

MySQL备份还原&mdash;&mdash;mysqldump工具介绍

mysqldump是一款MySQL逻辑备份的工具,他将数据库里面的对象(表)导出成SQL脚本文件.有点类似于SQL SEVER的"任务-生成脚本"的逻辑备份功能.mysqldump是比较常用的备份方法,适合于在不同MySQL版本之间的迁移.升级.不足之处就是数据库比较大时,mysqldump的效率不高. mysqldump的主要参数收集整理注释如下,如果你要查看mysqldump的具体参数信息,可以使用命令mysqldump –help --add-drop-table       :

MySQL备份命令mysqldump参数说明与示例

1. 语法选项说明 -h, --host=name主机名 -P[ port_num], --port=port_num用于连接MySQL服务器的的TCP/IP端口号 --master-data这个选项可以把binlog的位置和文件名添加到输出中,如果等于1,将会打印成一个CHANGE MASTER命令:如果等于2,会加上注释前缀.并且这个选项会自动打开--lock-all-tables,除非同时设置了--single-transaction(这种情况下,全局读锁只会在开始dump的时候加上一小段

mysql备份之mysqldump工具

参考文档: 利用mysqldump+二进制日志实现备份恢复数据库:http://www.178linux.com/60616 mysql进阶篇(三种备份方法总结:lvm, mysqldump, xtrabackup):http://www.178linux.com/9781 注意:备份文件和二进制日志文件不能与mysql放在同一磁盘下 节点1 1.节点1上修改mysql配置文件,开起二进制日志保存 这里我将二进制日志放在/data/mysql/目录下,/data/是我创建的另外一个lvm磁盘,本

mysql备份脚本-mysqldump

背景:全库备份 备份流程: 1.生成DB列表,将DB名字写入文件 2.定义备份函数,结果写入SQL文件 3.压缩文件,减少磁盘占用量 4.设置保留天数,定期删除n天之前的 5.通过for循环读取DB列表文件,依次进行mysqldump 1 #!/bin/bash 2 3 PORT='5001' 4 PASSWD='admin' 5 SOCKED="/data/socket/mysql${PORT}.sock" 6 BACKUP_FILE='/data/mysqlData/backup'

Mysql备份迁移——Mysqldump(.NET调用Mysqldump.exe方式)——(解决视图嵌视图报错)

利用Mysqldump备份和迁移,我想很多人都用过,具体参数不介绍了,这里主要讲.NET调用Mysqldump进行备份和.NET调用Mysql.exe进行导入数据. 这里使用的是5.1版的Mysqldump.exe和Mysql.exe(5.5版的用过,没测试成功) 因为要解决导入时视图嵌视图会报错的情况,所以本案分成两步操作. 第一步:只迁移表结构.视图.存储过程.函数.事件等.(为何这里数据不一起导呢,因为到视图需要加上--extended-insert=false,这样导数据会很慢,所以分成

mysql备份之mysqldump

注意:备份文件和二进制日志文件不能与mysql放在同一磁盘下 节点1 1.节点1上修改mysql配置文件,开起二进制日志保存 这里我将二进制日志放在/data/mysql/目录下,/data/是我创建的另外一个lvm磁盘,本来想直接放在/data/下,发现无法启动mysql,所以建议还是放在/data/mysql中 [[email protected] ~]# mkdir -pv /data/mysql/ [[email protected] ~]# chown mysql:mysql /dat

mysql备份工具--mysqldump备份以及恢复

https://help.aliyun.com/knowledge_detail/41738.html mysql全备:记录pos位置 mysqldump -h10.10.10.1 -uadmin -p --master-data=2 --single-transaction -R --events -q --all-databases > 2.sql cat 2.sql |head -22 在导出的备份中的22行会看到pos位置点和具体的binlog文件名称 CHANGE MASTER TO