设为首页 收藏本站
查看: 318|回复: 0

[经验分享] MySQL 数据文件 说明

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-11 17:27:16 | 显示全部楼层 |阅读模式
一.MySQL数据文件说明先看MySQL DataDirectory下的文件:
0_13226586369qzz.jpg

这里面dave,mysql 都是我们的数据库名称,我们在进入mysql 数据库查看:
0_1322658640b0lS.jpg

        在MySQL 中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件。不同的MySQL 存储引擎有各自不同的数据文件,存放位置也有区别。
        多数存储引擎的数据文件都存放在和MyISAM 数据文件位置相同的目录下,但是每个数据文件的扩展名却各不一样。如MyISAM 用“.MYD”作为扩展名,Innodb 用“.ibd”,Archive 用“.arc”,CSV 用“.csv”,等等。

1.1 “.ibd”文件和ibdata 文件        这两种文件都是存放Innodb 数据的文件,之所以有两种文件来存放Innodb 的数据(包括索引),是因为Innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和MyISAM数据相同的位置。
        如果选用共享存储表空间来存放数据,则会使用ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。ibdata 文件可以通过innodb_data_home_dir 和innodb_data_file_path两个参数共同配置组成, innodb_data_home_dir 配置数据存放的总目录, 而innodb_data_file_path 配置每一个文件的名称。当然,也可以不配innodb_data_home_dir而直接在innodb_data_file_path参数配置的时候使用绝对路径来完成配置。

mysql> showvariables like 'innodb_data%';
+-----------------------+------------------------+
|Variable_name         | Value                  |
+-----------------------+------------------------+
|innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir  |                        |
+-----------------------+------------------------+
2 rows in set(0.01 sec)

        innodb_data_file_path中可以一次配置多个ibdata文件。文件可以是指定大小,也可以是自动扩展的,但是Innodb 限制了仅仅只有最后一个ibdata 文件能够配置成自动扩展类型。当我们需要添加新的ibdata 文件的时候,只能添加在innodb_data_file_path配置的最后,而且必须重启MySQL 才能完成ibdata 的添加工作。

1.2 “.frm”文件        与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”文件。所有的“.frm”文件都存放在所属数据库的文件夹下面。

1.3 “.MYD”文件        “.MYD”文件是MyISAM 存储引擎专用,存放MyISAM 表的数据。每一个MyISAM 表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

1.4 “.MYI”文件        “.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

小结一下:        MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。 每个表都有且仅有这样三个文件做为MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。
        这个在开始的截图里看的比较清楚。


二.更改MySQL 数据文件目录        MySQL默认的数据文件存储目录为/var/lib/mysql。下面演示一下修改MySQL默认的data directory。

2.1 创建新的目录[iyunv@rac2 /]# mkdir -p /u01/mysql
[iyunv@rac2 lib]# chown mysql.mysql/u01/mysql
[iyunv@rac2 lib]# chmod  -R 777 /u01/mysql

2.2 停mysql[iyunv@rac2 lib]# service mysql stop
Shutting down MySQL...                                     [  OK  ]
[iyunv@rac2 lib]# ps -ef|grep mysql
root     3955  3799  0 20:00 pts/2    00:00:00 grep mysql

2.3 移动目录[iyunv@rac2 lib]# mv /var/lib/mysql  /u01/

2.4 修改my.cnf配置文件如果/etc/目录下没有my.cnf配置文件,到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf。命令如下:
[iyunv@rac2 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

vi修改my.cnf的sock 文件位置:
# The MySQL server
[mysqld]
port            = 3306
#socket         = /var/lib/mysql/mysql.sock
socket         = /u01/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
#max_allowed_packet = 1M
max_allowed_packet=100M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

2.5 修改启动脚本:/etc/init.d/myql[iyunv@rac2 mysql]# vi /etc/init.d/mysql
datadir=/u01/mysql

2.6 启动mysql[iyunv@rac2 mysql]# service mysql start
Starting MySQL.....                                        [  OK  ]

启动成功,查看进程:
[iyunv@rac2 mysql]# ps -ef|grep mysql
root    11512     1  2 21:02 pts/2    00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir=/u01/mysql --pid-file=/u01/mysql/rac2.pid
mysql   11769 11512  5 21:02 pts/2    00:00:00 /usr/sbin/mysqld --basedir=/usr--datadir=/u01/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql--log-error=/u01/mysql/rac2.err --pid-file=/u01/mysql/rac2.pid--socket=/u01/mysql/mysql.sock --port=3306
root    11796  3799  0 21:02 pts/2    00:00:00 grep mysql

2.7 其中的小插曲:
之前给/u01/mysql 目录赋的755 权限,但是启动报错:
[iyunv@rac2 mysql]# service mysql start
Starting MySQL....The server quit withoutupdating PID file[FAILED]ysql/rac2.pid).

查看log:/u01/mysql/rac2.err
111130 20:59:34 [Note] /usr/sbin/mysqld:Shutdown complete

111130 20:59:34 mysqld_safe mysqld from pidfile /u01/mysql/rac2.pid ended
111130 21:02:25 mysqld_safe Starting mysqlddaemon with databases from /u01/mysql
/usr/sbin/mysqld: File './mysql-bin.~rec~'not found (Errcode: 13)
111130 21:02:25 [ERROR]MYSQL_BIN_LOG::open_purge_index_file failed to open register  file.
111130 21:02:25 [ERROR]MYSQL_BIN_LOG::open_index_file failed to sync the index file.
111130 21:02:25 [ERROR] Aborting

应该是权限不够,不能创建pid 文件,赋给777 权限后,正常:
chmod  -R 777 /u01/mysql

[iyunv@rac2 mysql]# ll /u01/mysql/rac2.pid
-rw-rw---- 1 mysql mysql 6 Nov 30 21:02/u01/mysql/rac2.pid




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-42392-1-1.html 上篇帖子: xtraBackup备份原理剖析 下篇帖子: mysql5.5安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表