博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【逻辑备份】深入浅出mysqldump:常用操作、案例分享、意外终止的原因以及解决方法...
阅读量:2435 次
发布时间:2019-05-10

本文共 3387 字,大约阅读时间需要 11 分钟。

转载地址:
【逻辑备份】深入浅出mysqldump:常用操作、案例分享、意外终止的原因以及解决方法
 
 ㈠ 常用操作
  
  ① 备份全库
     
     语法:
     mysqldump -h主机名  -P端口 -u用户名 -p密码 (–database)  名 > 文件名.sql
     例子:
      dump -hlocalhost -P3306 -urocky -p123456 db_test > bakfile1.sql
     
  ② 带删除表的全库备份
     
     备份MySQL数据库为带删除表的格式、能够让该备份覆盖已有数据库而不需要手动删除原有数据库
     语法:
     mysqldump -–add-drop-table -u{username} -p{password} {databasename} > {backfile.sql}
     例子:
     mysqldump -–add-drop-table –urocky -p123456 db_test > bakfile2.sql
     
  ③ 压缩备份
     
     语法:
     mysqldump -h{hostname} -u{username} -p{password} {databasename} | gzip > {backfile.sql.gz}
     例子:
     mysqldump –hlocalhost –urocky –p123456 db_test | gzip > bakfile3.sql.gz
     
  ④ 备份某些表
     
     语法:
     mysqldump -h主机名  -P端口 -u用户名 -p密码 (–tables | –quick) 数据库名 表名1 (表名2 …) > 文件名.sql 
     例子:
     mysqldump -hlocalhost -urocky -p123456 db_test tbl_test > bakfile4-1.sql
     mysqldump -hlocalhost -P3306 -urocky -p123456 db_test tbl_test > bakfile4-2.sql
     mysqldump -hlocalhost -P3306 -urocky -p123456 --quick db_test tbl_test > bakfile4-3.sql
     mysqldump -hlocalhost -P3306 -urocky -p123456 --tables db_test tbl_test1 tbl_test2 > bakfile4-4.sql
     
  ⑤ 同时备份多个库
     
     语法:
     mysqldump -h{hostname} (-P{port}) -u{username} -p{password} –databases {dbname1} {dbname2} {dbname3} > multibackfile.sql
     例子:
     mysqldump -hlocalhost -urocky -p123456 –databases db_test1 db_test2 db_test3 > multibackfile.sql
     
  ⑥ 备份服务器上的所有数据库
     
     语法:
     mysqldump –all-databases > allbackupfile.sql
     
  ⑦ 仅仅备份数据库结构
     
     语法:
     mysqldump –no-data –databases {databasename1} {databasename2} > {structurebackfile.sql}
     例子:
     mysqldump –no-data –databases db_test1 db_test2 > structurebackfile.sql
     
  
  ⑧ 导出某个表的部分数据
     
     语法:
     mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径
     例子:
     mysqldump -uroot -p123456 test test_data --where=" id > 100" > /tmp/test.sql
     
     
  
  ㈡ 案例分享
  
  ① 案例描述:
  
  mysqldump命令常规方式创建备份拉到某机器上恢复、恢复执行很成功、一条错误信息都没看着
  但等恢复完登录到数据库中一瞅、你猜怎么地、数据不全
  第一反应当然是查看备份文件、经过检查、果然、恢复操作确实没有问题、
  因为备份集中的内容就不全,那么,为什么备份集内容不全
  
  ② 原因分析:
  
  分析发现、原来是在导出某个视图对象时报错、mysqldump自动中止、因此所有该对象之后的就都没备份了
  
  
  ③ 场景模拟回放:
 
[plain] 
Session_A:  
  
mysql> use test;  
Database changed  
mysql> create table rocky (id int,name varchar(100));  
Query OK, 0 rows affected (0.04 sec)  
  
mysql> create view rocky_view as select * from rocky;  
Query OK, 0 rows affected (0.01 sec)  
  
mysql> rename table rocky to robbin;  
Query OK, 0 rows affected (0.03 sec)  
  
mysql> commit;  
Query OK, 0 rows affected (0.00 sec)  
  
  
Session_B:  
  
[mysql@localhost bin]$ ./mysqldump --tables test robbin rocky_view > bak.sql  
mysqldump: Got error: 1356: View 'test.rocky_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when doing LOCK TABLES  
 
 
  创建备份时、view对象引用的表对象不存在、执行LOCK TABLES失败、于是mysqldump就中止了
  这其实真不怪 mysqldump、因为mysqldump执行过程中遇到任何问题、默认情况下都是直接退出
  
  ④ 解决方案:
  
  执行mysqldump时附加--force参数、该参数功能是当遇到错误时忽略、继续执行后面的操作
  这个参数提供类似   数据库中exp命令的ignore=y参数的功能、
  事实上在 Oracle 数据库中执行exp时通常都会指定ignore、
  对应到MySQL数据库、我想在执行mysqldump命令行过程中、--force参数也应做为必备参数调用
  
  
  
  ㈢ mysqldump意外终止的原因以及解决方法
  
  ① 错误现象:
       Lost connection to MySQL server at ‘reading initial communication packet’:
       原因分析:
       因为DNS不稳定导致的
       解决方案:
       开启skip-name-resolve选项将会最大程度避免这个问题
     
  ② 错误现象:
       Lost connection to MySQL server at ‘reading authorization packet’:
       原因分析:
       从MySQL获取一个可用的连接是多次握手的结果。在多次握手的过程中,网络波动会导致握手失败
       解决方案:
       最好的解决办法是让mysqldump重新发起连接请求
     
  ③ 错误现象:
       Lost connection to MySQL server during query
       原因分析:
       mysqldump处理数据过慢(NFS、gzip引起)会导致MySQL主动断开连接
       解决方案:
       加大net_write_timeout的设置

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28371090/viewspace-769274/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28371090/viewspace-769274/

你可能感兴趣的文章
“软件外包城”下的马鞍山 | 程序员有话说
查看>>
程序员如何实现财富自由?
查看>>
你我的父母,都在被互联网“割韭菜”
查看>>
程序员下班后都忙些啥?| 程序员有话说
查看>>
Java 帝国对 Python 的渗透能成功吗?
查看>>
程序员写代码没激情该怎么破?
查看>>
百面机器学习!算法工程师面试宝典!| 码书
查看>>
漫画 | 一个前端渣渣的成功逆袭
查看>>
与吴恩达并肩战斗,她是 AI 界的女超人!|人物志
查看>>
微信手机 WeOS 的可行性到底有多大?
查看>>
阿里面试,我挂在了第四轮……
查看>>
C++ 程序员到高级架构师,必须经历的三个阶段
查看>>
和 Java、C# 等语言对比后,Python 简直酷上天了!
查看>>
程序媛到最后,拼的到底是什么?
查看>>
“再见,微软!”
查看>>
ARM 发布新一代 CPU 和 GPU,实现 20% 性能提升!
查看>>
技术引路:机器学习仍大有可为,但方向在哪里?
查看>>
漫画:如何给女朋友解释什么是编译与反编译
查看>>
刷屏了!这篇 Python 学习贴,90% 的程序员都用的上!
查看>>
漫画:如何给女朋友解释什么是适配器模式?
查看>>