免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kent2004
打印 上一主题 下一主题

mysql恢复问题 [复制链接]

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
11 [报告]
发表于 2008-08-02 11:19 |只看该作者
原帖由 yueliangdao0608 于 2008-8-2 10:56 发表
要想在恢复的时候针对单独的表,必须在备份的时候对每个表单独备份!



类似oracle的平均故障恢复时间了
更像在讨论备份策略的问题

看你的库的大小,能忍受服务的掉线时长

论坛徽章:
0
12 [报告]
发表于 2008-08-02 11:36 |只看该作者
这样的恢复要分两种情况.

  1. 1.要恢复的表在导出的时候是第一个被导出的表
  2. 在这种情况下,直接导入就可以了,其他表已存在,不会导入
  3. mysql> use db1;
  4. Database changed
  5. mysql> show tables;
  6. +---------------+
  7. | Tables_in_db1 |
  8. +---------------+
  9. | t1            |
  10. | t2            |
  11. | t3            |
  12. +---------------+
  13. 3 rows in set (0.00 sec)
  14. mysql> select * from t1; select * from t2; select * from t3;
  15. +------+-------+
  16. | id   | name  |
  17. +------+-------+
  18. |    1 | yxyup |
  19. |    1 | yxyup |
  20. +------+-------+
  21. 2 rows in set (0.00 sec)

  22. +------+-------+
  23. | id   | name  |
  24. +------+-------+
  25. |    1 | yxyup |
  26. |    1 | yxyup |
  27. +------+-------+
  28. 2 rows in set (0.00 sec)

  29. +------+-------+
  30. | id   | name  |
  31. +------+-------+
  32. |    1 | yxyup |
  33. |    1 | yxyup |
  34. +------+-------+
  35. 2 rows in set (0.00 sec)


  36. mysql> drop table t1;
  37. Query OK, 0 rows affected (0.03 sec)

  38. mysql> show tables;
  39. +---------------+
  40. | Tables_in_db1 |
  41. +---------------+
  42. | t2            |
  43. | t3            |
  44. +---------------+
  45. 2 rows in set (0.00 sec)

  46. [mysql@QANEW mysql]$ mysql -uroot -pabc123 -D db1 < db1.dump
  47. ERROR 1050 at line 28: [color=Red]Table 't2' already exists[/color]

  48. mysql> show tables;
  49. +---------------+
  50. | Tables_in_db1 |
  51. +---------------+
  52. | t1            |
  53. | t2            |
  54. | t3            |
  55. +---------------+
  56. 3 rows in set (0.00 sec)


  57. 2. 如果在恢复的表,不是第一个被导出的,那么是没有办法被恢复的(至少我现在不知道恢复).
  58. 我一般采用的恢复方式是.将mysqldump导出的dump文件进行抽表,把要恢复的表结构和记录抽取出来.


  59. mysql> show tables;
  60. +---------------+
  61. | Tables_in_db1 |
  62. +---------------+
  63. | t1            |
  64. | t2            |
  65. | t3            |
  66. +---------------+
  67. 3 rows in set (0.00 sec)

  68. mysql> drop table t3;
  69. Query OK, 0 rows affected (0.00 sec)

  70. mysql> show tables;
  71. +---------------+
  72. | Tables_in_db1 |
  73. +---------------+
  74. | t1            |
  75. | t2            |
  76. +---------------+
  77. 2 rows in set (0.00 sec)

  78. [mysql@QANEW mysql]$ mysql -uroot -pabc123 -D db1 < db1.dump
  79. ERROR 1050 at line 11: Table 't1' already exists

  80. mysql> show tables;
  81. +---------------+
  82. | Tables_in_db1 |
  83. +---------------+
  84. | t1            |
  85. | t2            |
  86. +---------------+
  87. 2 rows in set (0.00 sec)

  88. ----可以看出如果不是第一个被导出的表是无法恢复的.


  89. 用抽取方法试一下

  90. [mysql@QANEW mysql]$ vi db1_t3.dump

  91. --
  92. -- Table structure for table `t3`
  93. --

  94. CREATE TABLE t3 (
  95.   id int(11) default NULL,
  96.   `name` char(10) default NULL
  97. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

  98. --
  99. -- Dumping data for table `t3`
  100. --


  101. INSERT INTO t3 VALUES (1,'yxyup');
  102. INSERT INTO t3 VALUES (1,'yxyup');

  103. [mysql@QANEW mysql]$ mysql -uroot -pabc123 -D db1 < db1_t3.dump

  104. mysql> show tables;
  105. +---------------+
  106. | Tables_in_db1 |
  107. +---------------+
  108. | t1            |
  109. | t2            |
  110. | t3            |
  111. +---------------+
  112. 3 rows in set (0.01 sec)

  113. mysql> desc t3;
  114. +-------+----------+------+-----+---------+-------+
  115. | Field | Type     | Null | Key | Default | Extra |
  116. +-------+----------+------+-----+---------+-------+
  117. | id    | int(11)  | YES  |     | NULL    |       |
  118. | name  | char(10) | YES  |     | NULL    |       |
  119. +-------+----------+------+-----+---------+-------+
  120. 2 rows in set (0.01 sec)

  121. mysql> select * from t3;
  122. +------+-------+
  123. | id   | name  |
  124. +------+-------+
  125. |    1 | yxyup |
  126. |    1 | yxyup |
  127. +------+-------+
  128. 2 rows in set (0.00 sec)


  129. 成功恢复了

  130. 当然,如果全库导出的文件很大,在抽取时会很困难.


  131. ________________
复制代码

[ 本帖最后由 yxyup 于 2008-8-2 11:38 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-08-02 15:03 |只看该作者
如果dump出来的sql很大的,抽取出来也需要时间的,还是有replication好办事情!:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP