1、mysql几个重要的文件

MySQL数据文件说明

mysql 5.7更改数据库的数据存储位置的解决方法,mysql5.7

随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致mysql已经链接不上了。因此,必须要给存放的数据换个地方了。下面是操作过程中的一些步骤。记下来,以后日后查看。

1.修改mysql数据存放的目录

要修改两个地方,其一是修改/etc/my.cnf文件中的datadir。默认情况下:

datadir=/var/lib/mysql

因为我的/data/目录比较大,所以将其改为:

datadir=/data/mysql/

还要修改/etc/init.d/mysqld文件,将datadir=”$result”改为:

datadir=”/data/mysql”

2.停止mysql服务

service mysql stop

3.创建新的数据存放目录

mkdir /data/mysql

4.将数据移动到新的数据库存放目录里面

mv /usr/local/mysql/data/* /data/mysql

这里补充一点儿知识,innoDB引擎和MyISAM引擎的数据文件不一样。

针对MyISAM引擎,
数据文件以”*.frm”,”*.MYD”,”*.MYI”三个文件存储于”/var/lib/mysql”目录下的对应数据库文件夹中。直接将这些文件移动到新的数据存放目录里面,就可以。

针对innoDB引擎,数据则存储在”$innodb_data_home_dir” 的ibdata1文件中(一般情况),结构文件存在于table_name.frm中。

5.修改mysql数据库目录权限以及配置文件

chown mysql:mysql -R /data/mysql/

6.修改socket

在两个地方修改socket,/etc/my.cnf

socket=/data/mysql/mysql.sock

创建一个连接文件到/var/lib/mysql/mysql.sock

ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock

7.重启mysql服务

执行

service mysql restart 

开始对数据库进行读写操作,发现有这样的问题:

读写:

ERROR 1146 (42S02): Table ** doesn't exist

创建表:

ERROR 1005 (HY000): Can't create table ‘runoob_tbl' (errno: 13) 

解决办法:

在/data/mysql目录下,删掉ib_logfile*文件,这样innoDB引擎的表就正常了。

再执行

mysql> REPAIR TABLE ***; 

对于数据量比较大表,这个过程可能会比较慢。执行完成后,MyISAM引擎的表也正常了。

mysql相关专题,需要的朋友可以参考下

MySQL中的数据库操作知识汇总

Mysql入门教程

Mysql 报错及解决办法

Mysql root密码操作方法

以上所述是小编给大家介绍的mysql
5.7更改数据库的数据存储位置的解决方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对帮客之家网站的支持!

5.7更改数据库的数据存储位置的解决方法,mysql5.7
随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致m…

  • 每个数据库新建后,会产生数据库文件夹,在该文件夹下每张表均对应以下三个文件:

 

xx.frm    存放表结构

一.MySQL数据文件说明

xx.MYD    存放表数据

先看MySQL DataDirectory下的文件:

xx.MYI   存放表索引

 

  • mysq非常重要的配置文件     

图片 1

my.ini   全局配置文件

 

2、mysql的逻辑架构

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

  • 连接层
  • 服务层
  • 引擎层:存储引擎层,引擎负责mysql数据的存取,mysql服务器通过API与存储引擎通信。不同的存储引擎具有不同的特色功能
  • 存储层:数据存储层,将数据存储到设备的文件系统上,并完成与存储引擎的交互

 

3、InnoDB引擎特点

图片 2

Supports transactions, row-level locking, and foreign keys

 

在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”文件在一起。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注