mysql dba系统学习(12)mysql的数据文件

mysql的数据文件

一,系统参数datadir

在MySQL 中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件 datadir指定的目录是数据库目录的上级目录,一般的创建数据库的时候会创建两个数据库mysql和test,如果再创建一个数据库的话就会多出一个对应的数据库文件夹

mysql> show variables like "%datadir%";

+---------------+-----------------------+

| Variable_name | Value                 |

+---------------+-----------------------+

| datadir       | /usr/local/mysql/var/ |

+---------------+-----------------------

mysql> system ls  /usr/local/mysql/var/

ibdata1      ib_logfile1  test     test4.pid test4.wolf.org.pid

ib_logfile0  mysql  test4.log  test4.wolf.org.err

mysql> create database chen;

Query OK, 1 row affected (0.03 sec)

mysql> system ls  /usr/local/mysql/var/

chen ib_logfile0  mysql  test4.logtest4.wolf.org.err

ibdata1  ib_logfile1  test   test4.pidtest4.wolf.org.pid

二,MyISAM 引擎的数据文件

我们来在chen数据库里面创建一个表试试看,会产什么变化!!

mysql> use chen;

Database changed

mysql> create table tt(id int ,name varchar(20)) engine=myisam;

Query OK, 0 rows affected (0.15 sec)

结果生成如下文件

[root@test4 ~]# cd /usr/local/mysql/var/chen/

[root@test4 chen]# ll  -h

total 20K

-rw-rw----. 1 mysql mysql   61 Sep  4 20:04 db.opt

-rw-rw----. 1 mysql mysql 8.4K Sep  4 20:22 tt.frm

-rw-rw----. 1 mysql mysql    0 Sep  4 20:22 tt.MYD

-rw-rw----. 1 mysql mysql 1.0K Sep  4 20:22 tt.MYI

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

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

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

时间: 2024-08-03 13:47:12

mysql dba系统学习(12)mysql的数据文件的相关文章

mysql dba系统学习(20)mysql存储引擎MyISAM

mysql存储引擎MyISAM 1,创建myisam表 mysql> create table t (id int , name varchar(30) , msg varchar(100)) engine = MyISAM; mysql> show table status like "t" \G ; *************************** 1. row *************************** Name: t Engine: MyISAM

mysql dba系统学习(2)了解mysql的源码目录及源文件

了解mysql的源码目录 包括客户端代码,服务端代码,测试工具和其他库文件 Mysql源码结构 Bdb 伯克利DB表引擎 BUILD 构建工程的脚本 Client 客户端 Cmd-line-utils 命令行工具 Config 构建工程所需的一些文件 Dbug Fred Fish的调试库 Docs 文档文件夹 Extra 一些相对独立的次要的工具 Heap HEAP表引擎 Include 头文件 Innobase INNODB表引擎 Libmysql 动态库 Libmysql_r 为了构建线程安

mysql dba系统学习(1)mysql各版本编译安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库.由于其社区

mysql dba系统学习(18)mysql主从复制的实现

mysql主从复制的实现 1.MySQL复制的实现原理 MySQL支持单向.双向复制.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入一个二进制日志文件中,并创建一个索引文件以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,日志文件会通知主服务器,从服务器在日志中读取的最后一次成功更新的位置.接着,从服务器在上次成功更新的位置处开始进入更新操作.更新完成后从服务器开始进入等待状态,等待主服务器后续的更新.需要注意

mysql dba系统学习(17)mysql的备份和恢复的完整实践

mysql的备份和恢复的完整实践 一,备份数据库之间的环境设置 1,创建数据库test1,创建表tt插入如下数据 mysql> create database test1; Query OK, 1 row affected (0.04 sec) mysql> use test1 Database changed mysql> create table tt(id int,name varchar(100),msg varchar(200)) engine=myisam; Query OK

mysql dba系统学习(9)slow query log慢查询日志功能

慢查询日志(不包括获取锁的时间) 1,开启慢查询日志功能 以前的版本中开启慢查询日志功能的参数是--log_slow_queries在my.cnf文件中指定,但是现在新的版本中用参数--slow_query_log和--slow_query_log_file来指定 slow_query_log=1 slow_query_log_file=/tmp/mysqlslow.log 重新启动mysql mysql> show variables like "%slow%"; +-----

mysql dba系统学习(6)二进制日志之二

MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点. MySQL Replication 复制可以是基于一条语句 (Statement Level) ,也可以是基于一条记录 (Row Level),可以在 MySQL 的配置参数中设定这个复制级别,不同复制级别的设置会影响到 Master 端的 bin-log 日志格式. 1. Row 日志中会记录成每一行数据被修

mysql dba系统学习(4)mysql的多实例multi启动停止

mysql的多实例配置安装 一,什么情况下我们会考虑一台物理服务器上部署多个实例,大致有以下几种情况: 1,采用了数据伪分布式架构的原因,而项目启动初期又不一定有那多的用户量,为此先一组物理数据库服务器,但部署多个实例,方便后续迁移: 2,为规避mysql对SMP架构不支持的缺陷,使用多实例绑定处理器的办法(NUMA处理器必须支持,不过现在大部分处理器都支持的!),把不同的数据库分配到不同的实例上提供数据服务: 3,一台物理数据库服务器支撑多个数据库的数据服务,为提高mysql复制的从机的恢复效

mysql dba系统学习(3)mysql的启动停止

mysql的启动有很多方法,我们将来一一讨论 一,mysqld mysqld是mysql的服务 mysqld这种方式启动的时候会读取my.cnf文件中的[mysqld]和[server]组group (每一个组都有[]来分割) 一般的,我们通过这种方式手动的调用mysqld,如果不是出去调试的目的,我们一般都不这样做. 因为这种方式会使错误日志直接从终端输出,而不是记录在错误日志文件中,这样,如果mysql崩溃的话 我们也不知道原因. 连接方法 start [root@test4 ~]# /us