一、--all-databases

  /application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456 -R -E --all-databases | gzip > database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz

二、--databases

  /application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456 --databases wohaoshuai mysql | gzip > database_`date '+%Y-%m-%d-%H'`.sql.gz

三、不指定--databases

  /application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456  wohaoshuai | gzip> database_`date '+%Y-%m-%d-%H'`.sql.gz

  1、当对一个数据库进行备份时,--databases允许省略,但是省略后导致的是备份文件名.sql中没有create database和use语句,那么恢复备份文件时,必须指定一个默认的数据库名,由此服务器才知道备份文件恢复到哪个数据库中;由此可以导致你可以使用一个和原始数据库名称不同的数据库名。

四、调用mysqldump备份某个数据库中的某几张表:mysqldump –u用户名 –p 数据库名 表名1 表名2 表名3… > 备份文件名.sql(若只导出表结构需要加上--no-data)

1、 /application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456   wohaoshuai(数据库) wohaoshuai1(表) wohaoshuai2(表) | gzip > database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz

  在备份库的时候用了--databases则恢复不用加数据库名(经后面测试,发现如果加上--databases后面是否跟表名都会会备份库中的所有表),否则要加数据库名。

  此处有一个问题是,如果也存在wohaoshuai1和wohaoshuai2这个数据库名那么用此备份命令会是什么样子呢?

    此时切记不要用--databases,否则就备份成了wohaoshuai数据库和wohaoshuai1和wohaoshuai2三个数据库了。因此建议:

      备份库的时候尽量都加上--databases这样恢复的时候就直接恢复就可以,备份表的话就不要加了,但是恢复的话就要记得指定库。

      备份表恢复:

         /application/mysql3309/bin/mysql -uroot -S /application/mysql3309/logs/mysql.sock -p zengliangtest <database2_2018-09-08-20.sql

五、恢复sql格式的备份文件

  1、通过mysqldump备份的文件,如果用了 --all-databases或--databases选项,如果是全备也可以两者都加上,则在备份文件中包含create database和use语句,故并不需要指定一个数据库名去恢复备份文件。

    gzip -d 备份文件.sql.gz

    a、mysql -uroot -p123456 < 备份文件.sql

    b、在mysql命令下,用source命令导入备份文件:

      source 备份文件.sql(需要在sql文件目录下打开mysql然后source sql文件,否则就要用绝对路径)

    注意:恢复后新增的表不会被覆盖,但备份时存在的表备份后的数据会被冲掉。

  2、如果通过mysqldump备份的是单个数据库,且没有使用--databases选项,则备份文件中不包含create database和use语句,那么在恢复的时候必须先创建数据库。

    在shell命令下:

      mysqladmin -u 用户名 -p create 数据库名  //创建数据库

      mysql -u 用户名 -p 数据库名 < 备份文件.sql

    在mysql命令下:

      create database if not exist 数据库名;

      use 数据库名;

      source 备份文件.sql

     注意:只能在cmd界面下执行source命令,不能在mysql工具里面执行source命令,会报错,因为cmd是直接调用mysql.exe来执行命令的。

六、增量备份

  1、在mysql配置文件中打开binlog日志功能,在my.cnf中加入   

    log-bin=mysql-bin(也可指定二进制日志生成的路径,如:log-bin=/opt/Data/mysql-bin)
    server-id=1

  2、mysqldump增量备份

    全备标准化语句:

    /application/mysql/bin/mysqldump -upy_rsync_155 -p -h192.168.0.153 -A -B -F -R --master-data=2 --single-transaction --events|gzip >/application/data/backup/database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz

    /application/mysql/bin/mysqldump -upy_rsync_155 -p -h192.168.0.153 -A(相当于--alldatabases) -B(相当于--databases) -F(相当于flush-logs) -R(存储过程时加上) --master-data=2 --single-transaction(锁行,如果存储引擎是myiasm则加--lock-all-tables) --events|gzip >/application/data/backup/database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz

      --flush-logs为结束当前日志,生成新日志文件;
      --master-data=2 选项将会在输出SQL中记录下完全备份后新日志文件的名称,用于日后恢复时参考,例如输出的备份sql文件中含有:

      CHANGE MASTER TO MASTER_LOG_FILE=’MySQL-bin.000002′, MASTER_LOG_POS=106;

    刷新二进制日志:

    /application/mysql3308/bin/mysqladmin -uroot -S /application/mysql3308/logs/mysql.sock  -p123456  flush-logs

  3、恢复完全备份

     /Registry/fof2v1_mysql/mysql3312/bin/mysql -uroot -p -S /Registry/fof2v1_mysql/mysql3312/logs/mysql.sock  -f(最好加上) <py_fof_2_1.sql

  4、恢复增量备份

     /application/mysql3309/bin/mysqlbinlog mysql-bin.000002  | /application/mysql3309/bin/mysql -uroot -S /application/mysql3309/logs/mysql.sock -p123456   注意此次恢复过程亦会写入日志文件,如果数据量很大,建议先关闭日志功能

  5、二进制文件恢复详解https://www.cnblogs.com/kevingrace/p/5907254.html

七、myiasm 和 innodb锁表参数详解

  1、--single-stransaction是创建一个一致性的快照通过dump 所有的表到一个单独的transaction,添加这个参数后其实会默认加一个锁,用户在备份期间可以增删改操作,但不能修改表结构innodb在备份过程中,虽然其他线程也在写数据,但是dump出来的数据能保证是备份开始时那个binlog pos的数据。

  2、myisam引擎要保证得到一致性的数据的话,他是如何实现的呢?

    它是通过添加--lock-all-tables,这样在flush tables with read lock后,直到整个dump过程结束,断开线程后才会unlock tables释放锁(没必要主动发unlock tables指令),整个dump过程其他线程不可写,从而保证数据的一致性

八、顺便说一下,mysqldump默认是lock-tables的。
  当执行mysqldump -uroot -p123 -h192.131.1.9 -R  vgos_statnum>11.dmp 的时候,lock整个vgos_statnum库
  当执行mysqldump -uroot -p123 -h192.131.1.9 -R  vgos_statnum t1>11.dmp 的时候,没有lock整个vgos_statnum库,lock的是t1表。

九、

  1、-E或者 --events:导出数据库中的事件

  2、-R 或者--routines:导出数据库中存储过程以及自定义函数

十、参数详解

总结一下:

-d 结构(--no-data:不导出任何数据,只导出数据库表结构)

-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)

-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)

-R (--routines:导出存储过程以及自定义函数)

-E (--events:导出事件)

--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)

-B (--databases:导出数据库列表,单个库时可省略)

--tables 表列表(单个表时可省略)

①同时导出结构以及数据时可同时省略-d和-t
②同时 不 导出结构和数据可使用-ntd
③只导出存储过程和函数可使用-R -ntd
④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
⑤只导出结构&函数&事件&触发器使用 -R -E -d

最新文章

  1. EF继承关系映射
  2. 【Effective Java】8、优先考虑类型安全的异构容器
  3. Linux学习笔记(13)权限管理
  4. Python学习总结2:raw_input() 与 input()
  5. [platform]新旧内核的device设备注册对比
  6. hhgis驱动
  7. (重)POJ 3020Antenna Placement
  8. iOS 的 APP 在系统中如何适配不同的屏幕的尺寸
  9. oracle SQL语句练习MERGE、模糊查询、排序、
  10. 2014元旦第1周三新的尝试&amp;爬山丢失望远镜
  11. C#中log4net使用方法(一)
  12. [LeetCode234]Palindrome Linked List
  13. hdu_2110_Crisis of HDU(母函数)
  14. Django 1.10中文文档-执行查询
  15. 洛谷 [P3973] 线性代数
  16. ArcGIS API for JavaScript 入门教程[3] 你看得到:数据与视图分离
  17. node.js 线程调试配置
  18. 进程间通信IPC-消息队列
  19. Storm Topology 提交 总结---Kettle On Storm 实现
  20. 安装doxygen(一个自动文档生成工具)+Graphviz图形可视化软件

热门文章

  1. Netty 实现HTTP文件服务器
  2. C# 窗体内有子控件时鼠标检测
  3. Redis(二)冰叔带你了解Redis-哨兵模式和高可用集群解析
  4. Linux - vim 编辑器
  5. Java EE之Hibernate异常总结【3】Disabling contextual LOB creation as createClob() method threw error java.lang.reflect.InvocationTargetException
  6. POJ 2407 Relatives (欧拉函数)
  7. 五校联考 running (欧拉函数)
  8. js遍历对象的方法
  9. c语言的重构、清理与代码分析图形化浏览工具: CScout
  10. springboot系列三、springboot 单元测试、配置访问路径、多个配置文件和多环境配置,项目打包发布