mysql在哪里存储数据?

Kon*_*rad 40 mysql

mysql在哪里存储数据?我发现(通过使用mysql> SELECT @@ datadir)它在var/lib/mysql中 - 但这不可能.我有一个非常大的数据库(4 GB),称为'bot',但'bot'子目录中的所有文件(var/lib/mysql/bot)只有280KB.其余的在哪里?

还有一件事 - 数据库大小的99%是其中一个表中的文本列 - 我知道mysql将它存储在单独的文件中,但它是否为每个记录创建一个文件?

我在var/lib/mysql目录中找到了一个名为ibdata1的大文件 - 它的大小超过8GB - 它是什么?(顺便说一句,var/lib/mysql目录中还有其他数据库).

duD*_*uDE 33

这里:

视窗

1)找到存储在MySQL安装文件夹中的my.ini.

例如, C:\Program Files\MySQL\MySQL Server 5.1\my.ini

2)用我们喜欢的文本编辑器打开"my.ini".

#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.1/"

#Path to the database root
datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"
Run Code Online (Sandbox Code Playgroud)

找到“datadir”,这是MySQL在Windows中存储数据的地方.


Linux的

1)使用find/-name my.cnf命令找到my.cnf.

yongmo@myserver:~$ find / -name my.cnf
find: /home/lost+found: Permission denied
find: /lost+found: Permission denied
/etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

2)查看 my.cnf file cat /etc/mysql/my.cnf

yongmo@myserver:~$ cat /etc/mysql/my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
[mysqld]
#
# * Basic Settings
#
user   = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port   = 3306
basedir  = /usr
datadir  = /var/lib/mysql
tmpdir  = /tmp
language = /usr/share/mysql/english
skip-external-locking
Run Code Online (Sandbox Code Playgroud)

3)找到“datadir”,这是MySQL在Linux系统中存储数据的地方.

  • 谢谢,但我相信你只读了我的问题的标题,我完全按照你的描述,但正如我在帖子中写的那样:"mysql在哪里存储数据?我发现了(通过使用mysql> SELECT @@ datadir)它在var/lib/mysql中 - 但不是这样的.我有一个非常大的数据库(4 GB),称为'bot',但是'bot'子目录中的所有文件(var/lib/mysql/bot) )只有280KB.其余的在哪里?" (4认同)
  • 而不是在整个文件系统上使用"find",你可以像这样确定datadir:mysqld --verbose --help | grep datadir (2认同)

Gil*_*les 19

在行之间阅读 - 这是一个innodb数据库吗?在这种情况下,实际数据通常以名称ibdata1存储在该目录中.除非您专门设置mysql以使用每个文件一个文件(innodb-file-per-table),否则此文件包含所有

  • 是的,抱歉应该说所有数据库.这不是真正的愚蠢,请看http://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file.只能通过停止mysql,更改选项,然后重新启动来更改此选项.对不起,我从来没有试过拆分innodb,我建议使用mysqldump备份数据库,更改选项,然后重新加载数据库. (2认同)

Vic*_*r P 11

至少在5.6版本中,MySQL Workbench中的Management选项卡显示它位于C:\驱动器中名为ProgramData的隐藏文件夹中.我的默认数据目录是

C:\ ProgramData\MySQL\MySQL Server 5.6\data

.每个数据库都有一个文件夹,每个表都有一个文件.