Mysql安装后在data文件夹中有4种文件frm,MYD,MYI,OPT,请问这四种文件的作用

Mysql安装后在data文件夹中有4种文件frm,MYD,MYI,OPT,请问这四种文件的作用,第1张

*.frm是描抄述了表的结构,*.MYD保存了表的数据记录,*.MYI则是表的索引,.opt记录数据库的选项,数据库的字符集设置。

在windows系统下,MYSQL数据库文件是以.FRM,MYD,MYI为后缀名存在的,但是在LINUX环境下,需要转化成后缀名为.sql数据文件形式,将.FRM,MYD,MYI文件转换为.SQL数据库的方法:

1、输入http://127.0.0.1/phpmyadmin,打开phpmyadmin。

2、进入phpmyadmin,找到导出选项。

3、点击导出选项,进入导出页面,选中test数据库文件夹。

4、然后选中【另存为文件】,这是最为重要的一步,否则导出失败。

5、然后点击执行,点击保存路径,这里保存到了桌面,点击下载,.SQL文件就会保存到桌面。

1、最简单就是,直接拷贝到数据库的的data下的数据库文件夹,前提是

mysql的版本一致,字体一致。

此方法简单快捷但不是没个人都能做到。

2、就是在本地机器安装mysql数据库转换*.frm,*.myd,*.myi,文件为*.sql文件:

1、首先安装mysql,最好版本和服务器一致,字体也要一致(不一致导入后有后遗症-乱码)。

2、然后用建库命令 创建新的数据库命令如下:

create database name(创建名为name的数据库呵呵“;”不能少) 然后去你安装的mysql目录下的data文件夹下就有个name文件夹。

3、把你的*.frm,*.myd,*.myi文件统统考P到data文件夹下。

4、然后在命令提示符下进入到mysql 安装目录的bin目录下 进行导出为*.sql文件。

mysqldump -uroot -p name >name.sql。

自己 *** 作的几点体会:

1、mysql数据库最好安装的根目录下这样在命令提示符时省很多事情。

2、*.sql倒出时最好是一个表一个表的导出 文件名最好为 dataname_tabname.sql,好记便于导入。

而且一个表的导出*.sql文件小。因为好多数据库限制大小,例如我用的DH的空间限制为10m ,大了的话导入不了(对了导出后大于服务器限制的可以打成zip也可以导入)

这两个文件可以批量恢复innoDB表

创建已经丢失的表结构

先要安装 mysql-utilities。

// RedHatyum -y install mysql-server mysql-utilities// Debianapt install mysql-utilities

使用 mysqlfrm 从 .frm 文件里面找回建表语句。

// 分析一个 .frm 文件生成建表的语句mysqlfrm --diagnostic /var/lib/mysql/test/t1.frm// 分析一个目录下的全部.frm文件生成建表语句root@username:~# mysqlfrm --diagnostic /var/lib/mysql/my_db/bk/ >createtb.sqlroot@username:~# grep "^CREATE TABLE" createtb.sql |wc -l124

可以看到一共生成了 124 个建表语句。

有很多时候也可以从其它库里面生成建表语句,如同一个应用的其它数据库或不同的测试环境,采用下面的 mysqldump 生成建表语句:

mysqldump --no-data --compact my_db>createtb.sql

登录 MySQL 生成表。

mysql>create database my_dbmysql>use my_dbDatabase changedmysql>source createtb.sqlQuery OK, 0 rows affected (0.07 sec)......

导入旧的数据文件

将新建的没有包括数据的 .ibd 文件抛弃

root@username:/var/lib/mysql/my_db# ll *.ibd|wc12411167941root@username:/var/lib/mysql/my_db# mysql -e "show tables from my_db" \| grep -v  Tables_in_my_db  \| while read ado mysql -e "ALTER TABLE my_db.$a DISCARD TABLESPACE"doneroot@username:/var/lib/mysql/my_db# ll *.ibd|wcls: cannot access '*.ibd': No such file or directory000

可以看到所有的 .idb 文件都已经被抛弃了。然后把旧的有数据的 .ibd 文件拷贝到这个 my_db 目录下面,别忘了把属主改过来:chown mysql. *,再把这些数据文件 import 到数据库中。

root@username:/var/lib/mysql/my_db# mysql -e "show tables from my_db" \| grep -v  Tables_in_my_db  \| while read a\do mysql -e "ALTER TABLE my_db.$a import TABLESPACE"done

导入完成后检查表

使用 mysqlcheck 对数据库 my_db 下的所有表进行检查:

root@username:/var/lib/mysql/my_db# mysqlcheck -c my_dbmy_db.cdp_backup_point                             OK......

所有的表都导入成功。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9925388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存