2014-10-16 5 views
23

MySQL स्टोर डेटा कहां है? मैंने पाया (mysql> SELECT @@ datadir का उपयोग करके) कि यह var/lib/mysql में है - लेकिन यह नहीं हो सकता है। मेरे पास 'बॉट' नामक एक बड़ा डेटाबेस (4 जीबी) है, लेकिन 'बॉट' उपनिर्देशिका (var/lib/mysql/bot) में सभी फाइलें केवल 280 केबी हैं। बाकी कहाँ है?MySQL स्टोर डेटा कहां है?

एक और बात - 99% डेटाबेस का आकार तालिकाओं में से एक में एक टेक्स्ट कॉलम है - मुझे पता है कि mysql इसे अलग-अलग फ़ाइलों में संग्रहीत करता है, लेकिन क्या यह प्रति फ़ाइल एक फ़ाइल बनाता है?

मुझे ibdata1 नामक var/lib/mysql निर्देशिका में एक बड़ी फ़ाइल मिली - इसका आकार 8 जीबी से अधिक है - यह क्या है? (बीटीडब्ल्यू, var/lib/mysql निर्देशिका में अन्य डेटाबेस भी हैं)।

+2

आप किस स्टोरेज इंजन का उपयोग कर रहे हैं? –

उत्तर

11

लाइनों के बीच पढ़ना - क्या यह एक innodb डेटाबेस है? इस मामले में वास्तविक डेटा सामान्य रूप से उस निर्देशिका में ibdata1 नाम के तहत संग्रहीत किया जाता है। इस फ़ाइल में आपकी सभी टेबल शामिल हैं जब तक कि आप विशेष रूप से एक-फ़ाइल-प्रति-तालिका (innodb-file-per-table)

+0

धन्यवाद! दरअसल मैं यह उल्लेख करना भूल गया कि यह निर्दोष है। आप कहते हैं कि फ़ाइल (ibdata1) "में सभी टेबल शामिल हैं", लेकिन ऐसा लगता है कि इसमें वास्तव में सभी टेबल शामिल हैं सभी डेटाबेस? क्या आप जानते हैं कि इसके लिए कोई कारण है? यह बेवकूफ लगता है ... और एक और बात - क्या मैं अब इस विकल्प को बदल सकता हूं (innodb-file-per-table), जब डेटाबेस पहले से मौजूद है और इसमें रिकॉर्ड हैं? – Konrad

+2

हाँ, क्षमा करें चाहिए सभी डेटाबेस कहा है। यह वास्तव में बेवकूफ नहीं है http://dba.stackexchange.com/questions/15531/why-does-innodb-store-all- डेटाबेस-in-one-file। यह विकल्प केवल MySQL को रोककर, विकल्प बदलकर, फिर पुनरारंभ करके बदला जा सकता है। क्षमा करें, लेकिन मैंने कभी भी innodb को विभाजित करने की कोशिश नहीं की है, मैं डीबी (एस) का बैकअप लेने के लिए mysqldump का उपयोग करने, विकल्प बदलने, फिर डीबी को फिर से लोड करने की सलाह दूंगा। – Giles

+0

धन्यवाद! मैं निश्चित रूप से यह करूँगा। – Konrad

20

here से:

विंडोज

1) my.ini, जो MySQL स्थापना फ़ोल्डर में स्टोर का पता लगाएँ।

उदाहरण के लिए

, 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/" 

“datadir” का पता लगाएं, इस जहां MySQL Windows में डेटा संग्रहीत करता है।


लिनक्स

1) खोज/-name my.cnf कमांड के साथ my.cnf का पता लगाएँ।

[email protected]:~$ find/-name my.cnf 
find: /home/lost+found: Permission denied 
find: /lost+found: Permission denied 
/etc/mysql/my.cnf 

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

[email protected]:~$ 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 

3) “datadir” का पता लगाएं, यह वह जगह है जहाँ MySQL लिनक्स सिस्टम में डेटा संग्रहीत करता है देखने।

+1

धन्यवाद, लेकिन मेरा मानना ​​है कि आप केवल मेरे प्रश्न का शीर्षक पढ़ते हैं, मैंने वही किया जो आपने वर्णित किया था, लेकिन जैसा कि मैंने पोस्ट में लिखा था: "MySQL स्टोर डेटा कहां है?मैंने पाया (mysql> SELECT @@ datadir का उपयोग करके) कि यह var/lib/mysql में है - लेकिन यह नहीं हो सकता है। मेरे पास 'बॉट' नामक एक बड़ा डेटाबेस (4 जीबी) है, लेकिन 'बॉट' उपनिर्देशिका (var/lib/mysql/bot) में सभी फाइलें केवल 280 केबी हैं। बाकी कहां है? " – Konrad

+0

तो डेटा डीआईआर ढूंढें और फाइलों की सबसे बड़ी फाइल या सेट का पता लगाएं, यह मुश्किल नहीं है। इसके अलावा, पोस्ट किए गए दूसरे उत्तर पर एक नज़र डालें। –

+0

जैसा कि मैंने लिखा है, मैंने" ibdata1 "फ़ाइल स्थित है, लेकिन यह मुख्य निर्देशिका में है, डेटाबेस की उपनिर्देशिका में नहीं, इसलिए यह मेरे लिए असंभव प्रतीत होता है कि यह वह फ़ाइल है जिसे मैं ढूंढ रहा हूं। – Konrad

6

संस्करण 5.6 में कम से कम, MySQL वर्कबेंच में प्रबंधन टैब से पता चलता है कि यह प्रोग्रामडाटा नामक एक छिपे हुए फ़ोल्डर में है सी: \ ड्राइव। मेरी डिफ़ॉल्ट डेटा निर्देशिका

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

। प्रत्येक डेटाबेस में एक फ़ोल्डर होता है और प्रत्येक तालिका में एक फ़ाइल होती है।

1

मैंने MySQL Server 5.7Windows 10 पर my.ini फ़ाइल c:\ProgramData\MySQL\MySQL Server 5.7\my.ini पर स्थित है।

Data फ़ोल्डर (जहां आपके डीबीएस बनाए गए हैं) यहां C:/ProgramData/MySQL/MySQL Server 5.7\Data है।

+0

इसका उपयोग करके मैं "mysql.connector.errors.DatabaseError: 1007 (HY000)" को हल करने में सक्षम था। –

संबंधित मुद्दे