MySQL 資料檔案 說明

來源:互聯網
上載者:User

 

在之前的一篇Blog裡看了MySQL的日誌分類,這篇看一下MySQL的 資料檔案。

MySQL 記錄檔 說明

http://blog.csdn.net/tianlesoftware/article/details/7028304

 

一.MySQL資料檔案說明

先看MySQL DataDirectory下的檔案:

這裡面dave,mysql 都是我們的資料庫名稱,我們在進入mysql 資料庫查看:

 

在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 建立新的目錄

[root@rac2 /]# mkdir -p /u01/mysql

[root@rac2 lib]# chown mysql.mysql/u01/mysql

[root@rac2 lib]# chmod  -R 777 /u01/mysql

 

2.2 停mysql

[root@rac2 lib]# service mysql stop

Shutting down MySQL...                                     [  OK  ]

[root@rac2 lib]# ps -ef|grep mysql

root     3955  3799  0 20:00 pts/2    00:00:00 grep mysql

 

2.3 移動目錄

[root@rac2 lib]# mv /var/lib/mysql  /u01/

 

2.4 修改my.cnf設定檔

如果/etc/目錄下沒有my.cnf設定檔,到/usr/share/mysql/下找到*.cnf檔案,拷貝其中一個到/etc/並改名為my.cnf。命令如下:
[root@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

[root@rac2 mysql]# vi /etc/init.d/mysql

datadir=/u01/mysql

 

2.6 啟動mysql

[root@rac2 mysql]# service mysql start

Starting MySQL.....                                        [  OK  ]

 

啟動成功,查看進程:

[root@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 許可權,但是啟動報錯:

[root@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

 

[root@rac2 mysql]# ll /u01/mysql/rac2.pid

-rw-rw---- 1 mysql mysql 6 Nov 30 21:02/u01/mysql/rac2.pid

 

 

 

 

 

-------------------------------------------------------------------------------------------------------

著作權,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任!

Blog:     http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email:   tianlesoftware@gmail.com

Skype: tianlesoftware

 

-------加群需要在備忘說明Oracle資料表空間和資料檔案的關係,否則拒絕申請----

DBA1 群:62697716(滿);   DBA2 群:62697977(滿)  DBA3 群:62697850(滿)  

DBA 超級群:63306533(滿);  DBA4 群:83829929   DBA5群: 142216823

DBA6 群:158654907    DBA7 群:172855474  DBA8群:102954821    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.