如何恢复Mysql数据库的详细介绍
由于在一台测试机器上打算重新安装Mysql数据库,由于简单粗暴的直接卸载了,没有备份公司Discuz和Redmine使用的Mysql数据库,过程可想的悲惨。
还好的是只是卸载掉了Mysql的程序,所有的数据文件还是存在的。
下面是在恢复数据库的过程
1.Discuz数据库
Discuz数据库的恢复非常顺利,在安装好新版本的Mysql后,直接将原来的数据库文件copy到新的数据目录中,重新启动mysql,就能看到恢复的数据库了
2.Redmine数据库
本打算直接使用上面的经验,也能看到所有的表,但是就是执行查询的时候,总是报错"表不存在".
后来查了一些资料,发现,原因应该是Discuz和Redmine使用的Mysql引擎不一样导致的。
Discuz使用的是MyISAM,而Redmine使用的是InnoDB.
解决的办法是,
除了要copy数据目录外,还要记得覆盖ibdata1文件。
以表”Table”为例:如类型是MyISAM,数据文件则以”Table.frm””Table.MYD””Table.MYI””三个文件存储于”/data/$databasename/”目录中.如类型是InnoDB,数据文件则存储在”$innodb_data_home_dir/″中的ibdata1文件中(一般情况),结构文件存在于table_name.frm中.MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。而使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。解决方法就是:
同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置。启动MySQL的Windows服务由于MySQL这样数据混杂的形式,往往很容易让使用者在备份时忘记了备份InnoDB,从而导致了上述错误.
意思就是说在数据库引擎类型为InnoDB时,拷贝数据文件的同时还需要拷贝ibdata1,于是把ibdata1也拷贝过去覆盖,发现还是有点问题,于是停止mysql服务,将目录下的ib_logfile*文件全部删除掉,重新启动mysql服务,welldone,可以了
高兴啊,于是稍微总结了,希望以后遇到相同的问题,能够快速解决。
1,在进行mysql数据库备份的或迁移的时候,尽量备份完成所需要的数据;
2,如果直接拷贝原有数据库文件"*.frm"、"*.MYD"、"*.MYI"等文件时候,如果原数据库引擎是InnoDB,切记还需拷贝ibdata1文件
3,备份数据库的时候,最好是用相关的工具进行备份或是导出sql文件,以免浪费时间在数据库恢复上
4,msyql版本或是备份工具的版本不同,也可能引起数据恢复有问题。
实践证明以上问题是存在的,解决方案是可行的,哈哈,为了以后方便,写了这篇博客随笔,希望大牛看到了不要鄙视,欢迎拍砖。
1:MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。(只需要拷贝数据库名字文件夹下面的文件,这样数据库就拷贝完了)
2: InnoDB类型的要注意多拷贝ibdata1,最好不要是直接复制文件夹,而是应该用sql导入导出
相关文章
- 优化MySQL数据库空间优化:精简体积提速度(mysql数据库空间大小)
- MySQL Status Innodb_buffer_pool_read_ahead_rnd 数据库状态作用意思及如何正确
- MySQL Status Innodb_pages_read 数据库状态作用意思及如何正确
- MySQL Variables log_queries_not_using_indexes 数据库 参数变量解释及正确配置使用
- 能力MySQL减集:实现数据库结构精简(mysql减集)
- MySQL学习权威论坛:成为MySQL专家(mysql学习论坛)
- 改变MySQL配置:改变监听IP地址(mysql监听ip)
- MySQL中的时间戳精确到毫秒(mysql时间戳毫秒)
- 5安装MySQL5:快速入门指南(w安装mysql)
- MySQL:构建数据仓库的可靠基石(mysql一个库)
- MySQL索引:何处终点?(mysql索引存在哪里)
- 深入解析MySQL最大连接数设置,助力数据库高效运行(mysql最大连接数)
- 【MySQL数据库入门】一步步学习,轻松上手(mysql数据库入门教程)
- MySQL 数据库建表常用数据类型概述(mysql建表数据类型)
- MySQL如何进行数据备份(mysql怎么备份)
- CentOS安装MySQL数据库简易步骤(cent安装mysql)
- 「深入剖析:MySQL 数据的变化」(mysql数据变化)
- 离线安装MySQL:解决数据库管理的困难(离线 安装mysql)
- MySQL中利用分组查询提高效率(分组查询 mysql)
- MySQL中如何获取表主键(mysql 获取表主键)
- ?MySQL数据库如何快速创建?(mysql数据库怎么创建)
- MySQL高性能之路:提高并发连接数(mysql 并发 连接数)
- Oracle数据迁移至MySQL:技术与实践(oracle迁移到mysql)
- 如何在MySQL中修改数据库名称(mysql中修改库名)
- MySQL如何存储时间(mysql中保存时间字段)
- MySQL中offset的作用和用法详解(mysql中offet)
- MySQL中的CNO管理数据库中的字符编码问题(mysql中cno)
- MySQL数据库快速开发与C语言的完美结合(c mysql sql)
- 使用命令行操作MySQL简单而有效的技巧(cmd下mysql语句)
- 1831年MySQL的诞生改变世界数据库管理(1831 mysql)
- 轻松解决如何在 MySQL 中删除数字(mysql中去除数字)
- MySQL内置函数大全(mysql中内置函数)
- MySQL非空字段如何选择(mysql不为空怎么选)
- 停止mysql命令行的方法如何正确关闭MySQL数据库(mysql下停止命令行)