ServBay MariaDB/MySQL सॉफ़्टवेयर पैकेज समस्या निवारण गाइड
परिचय
MariaDB और MySQL उद्योग में अग्रणी ओपन सोर्स रिलेशनल डेटाबेस प्रबंधन तंत्र हैं, जिसका उपयोग विभिन्न वेब एप्लिकेशन और व्यवसायिक परिदृश्यों में व्यापक तौर पर किया जाता है। ServBay macOS और Windows वातावरण में कई संस्करणों के MariaDB/MySQL सॉफ़्टवेयर पैकेज को एकीकृत करता है, जिससे डेवलपरों को एक सुगम और कुशल स्थानीय डेटाबेस वातावरण मिलता है। इनकी स्थिरता के बावजूद, डेवलपमेंट और रनिंग के दौरान पैकेज स्टार्ट न होने, कनेक्शन फेल होने या प्रदर्शन में गिरावट जैसी समस्याएं आ सकती हैं।
यह गाइड ServBay उपयोगकर्ताओं को सामान्य MariaDB/MySQL पैकेज संबंधी समस्याओं की पहचान और समाधान में मदद करने के लिए है। इसमें सामान्य समस्याएं, निदान चरण और विशेष समाधान शामिल हैं, और खासकर ServBay के पथ और कमांड की जानकारी दी गई है।
महत्वपूर्ण टिप्स:
- किसी भी डेटा या कॉन्फ़िगरेशन को बदलने वाले कार्य करने से पहले अपनी डेटाबेस का बैकअप अवश्य लें! ServBay इन-बिल्ट बैकअप सुविधा देता है, जिसे नियमित रूप से इस्तेमाल करने की सलाह दी जाती है।
- सभी कमांड और पथ उदाहरण में उपयोग किए गए वर्शन नंबर (जैसे
11.3
या11.5
) को अपने ServBay में स्थापित MariaDB/MySQL संस्करण अनुसार बदलें। इंस्टॉल और सक्रिय वर्शन आप ServBay ऐप इंटरफेस में देख सकते हैं। - कमांड उदाहरणों में,
<username>
,<database>
,<your_backup.sql>
आदि प्लेसहोल्डर हैं, इन्हें अपने असली यूजर नाम, डेटाबेस नाम और बैकअप फाइल नाम से बदलें। - यह गाइड macOS और Windows दोनों के लिए है, संबंधित सेक्शन में विशिष्ट पथ और कमांड दिए गए हैं।
सामान्य प्रारंभिक डायग्नोसिस चरण
स्पेसिफिक समस्या की जांच से पहले ये बेसिक चेक करें:
ServBay सॉफ़्टवेयर पैकेज स्थिति जांचें: ServBay ऐप इंटरफेस खोलें, देख लें कि आप जिस MariaDB/MySQL संस्करण को ऑपरेट करना चाहते हैं वह सक्षम और “चल रहा” (Running) दिख रहा है। आप कमांड लाइन टूल भी इस्तेमाल कर सकते हैं:
bashservbayctl status mariadb <version> # उदाहरण: MariaDB 11.3 की स्थिति जांचें: servbayctl status mariadb 11.3
1
2
3ServBay ऐप लॉग जांचें: कभी-कभी ServBay, पैकेज स्टार्ट या प्रबंधन प्रयास के समय त्रुटियां लॉग करता है। आप ऐप इंटरफेस के लॉग क्षेत्र या ServBay के मुख्य लॉग फाइल में जांच सकते हैं।
MariaDB/MySQL त्रुटि लॉग देखें: डेटाबेस पैकेज के स्टार्ट फेल, रनटाइम एरर की लोकेशन के लिए सबसे जरूरी है। लॉग फाइल का पथ आमतौर पर:
macOS:
bash/Applications/ServBay/logs/mariadb/<version>/<version>.err # उदाहरण: MariaDB 11.3 के अंतिम 50 लाइन की त्रुटि लॉग देखें: tail -n 50 /Applications/ServBay/logs/mariadb/11.3/11.3.err
1
2
3Windows:
cmdC:\ServBay\logs\mariadb\<version>\<version>.err # उदाहरण: MariaDB 11.3 के अंतिम 50 लाइन की त्रुटि लॉग देखें: powershell "Get-Content -Path 'C:\ServBay\logs\mariadb\11.3\11.3.err' -Tail 50"
1
2
3लॉग के अंत में मिली त्रुटि संदेशों को ध्यान से पढ़ें; यहीं से समस्या की पहचान सीधे होती है।
सामान्य समस्याएं और समाधान
1. कनेक्शन त्रुटि: SQLSTATE[HY000] [2002] No such file or directory
यह त्रुटि आमतौर पर दर्शाती है कि क्लाइंट MariaDB/MySQL सर्वर से Unix socket फाइल के जरिए कनेक्ट नहीं कर पा रहा है। macOS पर, Unix socket एक स्थानीय प्रक्रिया संचार का साधन है, जो TCP/IP कनेक्शन की तुलना में तेज होता है। अगर एप्लिकेशन या कमांड लाइन टूल सही socket path नहीं पाता, तो यह एरर आता है।
संभावित कारण और समाधान:
- MariaDB/MySQL पैकेज चल नहीं रहा:
- ServBay इंटरफेस या
servbayctl status mariadb <version>
कमांड से पैकेज की स्थिति जांचें। - अगर नहीं चल रहा है, स्टार्ट करें:
servbayctl start mariadb <version>
और.err
फाइल में स्टार्ट फेल का कारण देखें।
- ServBay इंटरफेस या
- Socket फाइल पथ गलत (सिर्फ macOS/Linux):
- क्लाइंट का socket path और सर्वर कॉन्फ़िगरेशन (
my.cnf
) का socket सेटिंग अलग है। - macOS: MariaDB/MySQL config फाइल (
/Applications/ServBay/etc/mariadb/<version>/my.cnf
) मेंsocket
पैरामीटर जाँचें। - Windows: Unix socket नहीं प्रयोग होता; मुख्यतः TCP/IP या नामित पाइप से कनेक्ट होता है।
- macOS: एप्लिकेशन/क्लाइंट का socket path सही सेट करें, या ServBay डिफॉल्ट socket path इस्तेमाल करें। ServBay का डिफॉल्ट socket path आमतौर पर
/Applications/ServBay/tmp/
या/tmp/
में होता है, उदाहरणार्थ/Applications/ServBay/tmp/mysql.sock
या/tmp/mysql.sock
।
- क्लाइंट का socket path और सर्वर कॉन्फ़िगरेशन (
- ServBay डिफॉल्ट सेटिंग का मुद्दा:
- ServBay के “Settings” > “Default SQL Server” में सही MariaDB/MySQL संस्करण डिफॉल्ट पैकेज के रूप में सेट करें। कुछ क्लाइंट (जैसे
mysql
कमांड लाइन टूल बिना-S
या-h
के) डिफॉल्ट socket से कनेक्ट करने की कोशिश कर सकते हैं।
- ServBay के “Settings” > “Default SQL Server” में सही MariaDB/MySQL संस्करण डिफॉल्ट पैकेज के रूप में सेट करें। कुछ क्लाइंट (जैसे
- अनुमति (permissions) संबंधित समस्या:
- macOS: MariaDB/MySQL प्रोसेस के रनिंग यूजर को socket फोल्डर या फाइल पर लिखने/पढ़ने की अनुमति नहीं है। ServBay आमतौर पर permission सेट कर देता है, लेकिन यदि
/Applications/ServBay/tmp/
या/tmp/
के अनुमति में बदलाव किया है, तो दिक्कत आ सकती है। - Windows: रनिंग यूजर को संबंधित पोर्ट पर सुनने और pipe बनाने का अधिकार है या नहीं जांचें।
- macOS: MariaDB/MySQL प्रोसेस के रनिंग यूजर को socket फोल्डर या फाइल पर लिखने/पढ़ने की अनुमति नहीं है। ServBay आमतौर पर permission सेट कर देता है, लेकिन यदि
वैकल्पिक तरीका (नेटवर्क कनेक्शन अनिवार्य करें):
- कनेक्शन के लिए IP एड्रेस
127.0.0.1
का प्रयोग करें, जिससे कनेक्शन TCP/IP से होगा न कि Unix socket से। अगर127.0.0.1
से कनेक्शन सफल है, तो socket संबंधी समस्या है।bashmysql -u <username> -p -h 127.0.0.1 -P 3306
1
2. कनेक्शन त्रुटि: नेटवर्क कनेक्शन संबंधी (Connection refused
, Can't connect to MySQL server
आदि)
इस तरह की समस्या क्लाइंट के MariaDB/MySQL सर्वर से TCP/IP नेटवर्क कनेक्ट न कर पाने के कारण आती है।
संभावित कारण और समाधान:
MariaDB/MySQL पैकेज चल नहीं रहा: (ऊपर जैसा, पैकेज की स्थिति और
.err
लॉग जांचें)पोर्ट व्यस्त है:
- MariaDB/MySQL जिस पोर्ट पर सुनने की कोशिश करता है (डिफॉल्ट 3306), वह किसी और प्रोग्राम से व्यस्त हो सकता है।
macOS:
bashlsof -i :3306 # या netstat -anv | grep LISTEN | grep 3306
1
2
3Windows:
cmdnetstat -an | findstr :3306 # या PowerShell Get-NetTCPConnection -LocalPort 3306
1
2
3यदि पोर्ट व्यस्त है, तो उस प्रोसेस को बंद करें या MariaDB/MySQL config में
port
पैरामीटर बदलें और पैकेज फिर से स्टार्ट करें।- macOS:
/Applications/ServBay/etc/mariadb/<version>/my.cnf
- Windows:
C:\ServBay\etc\mariadb\<version>\my.cnf
फ़ायरवॉल कनेक्शन रोक रहा है:
macOS:
- macOS सिस्टम सेटिंग्स -> नेटवर्क -> फ़ायरवॉल जांचें।
mysqld
प्रोसेस को फ़ायरवॉल से अनुमत करें:bash# उदाहरण कमांड, अपने अनुसार पथ बदलें sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mariadb/<version>/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mariadb/<version>/bin/mysqld
1
2
3
Windows:
- Windows Defender या अन्य फ़ायरवॉल सेटिंग्स जांचें।
- फ़ायरवॉल में अनुमति नियम जोड़ें:cmd
# किसी एप्लिकेशन को अनुमति देने के लिए netsh advfirewall firewall add rule name="ServBay MariaDB" dir=in action=allow program="C:\ServBay\bin\mariadb\<version>\bin\mysqld.exe"
1
2
कॉन्फ़िगरेशन समस्या (
bind-address
):my.cnf
फाइल काbind-address
पैरामीटर जांचें। यदि127.0.0.1
याlocalhost
है तो सिर्फ local TCP/IP कनेक्शन की अनुमति है। अन्य कंप्यूटरों या वर्चुअल मशीन से कनेक्शन के लिए0.0.0.0
या कोई खास IP सेट करें तथा फ़ायरवॉल में अनुमति दें।
नेटवर्क कॉन्फ़िगरेशन समस्या (
localhost
रेज़ोल्यूशन):- सुनिश्चित करें कि
localhost
सही से127.0.0.1
(IPv4 loopback) और::1
(IPv6 loopback) पर रेज़ोल्व करे।
macOS:
bashping localhost # hosts फाइल जांचें cat /etc/hosts
1
2
3Windows:
cmdping localhost # hosts फाइल जांचें type C:\Windows\System32\drivers\etc\hosts
1
2
3सुनिश्चित करें कि hosts फाइल में सही
localhost
एंट्री है। प्रॉक्सी सर्वर बंद करें: कुछ प्रॉक्सी सॉफ़्टवेयरlocalhost
या127.0.0.1
ट्रैफिक में बाधा डाल सकते हैं।- सुनिश्चित करें कि
3. MariaDB/MySQL पैकेज स्टार्ट नहीं हो रहा
संभावित कारण और समाधान:
त्रुटि लॉग जांचें (महत्वपूर्ण!): ऊपर बताया गया पथ उपयोग कर स्टार्ट फेल से जुड़ा एरर देखें। लॉग ही समस्या की पहचान की तरह है।
- macOS:
/Applications/ServBay/logs/mariadb/<version>/<version>.err
- Windows:
C:\ServBay\logs\mariadb\<version>\<version>.err
- macOS:
कॉन्फ़िगरेशन फाइल त्रुटि: कॉन्फ़िगरेशन फाइल में सिंटैक्स समस्या, गलत पैरामीटर या पथ हो सकता है।
कॉन्फ़िगरेशन फाइल पथ:
- macOS:
/Applications/ServBay/etc/mariadb/<version>/my.cnf
- Windows:
C:\ServBay\etc\mariadb\<version>\my.cnf
सिंटैक्स जाँचें:
bash# macOS /Applications/ServBay/bin/mariadb/<version>/bin/mysqld --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf --validate-config # Windows C:\ServBay\bin\mariadb\<version>\bin\mysqld.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf --validate-config
1
2
3
4
5- macOS:
पोर्ट व्यस्त है: (ऊपर जैसा,
lsof -i :<port>
याnetstat
से जांचें)डिस्क स्पेस की कमी: डेटा डायरेक्टरी या लॉग डायरेक्टरी वाली ड्राइव पर पर्याप्त जगह नहीं। डेटाबेस को डेटा, लॉग और टेम्प फाइल के लिए जगह चाहिए।
डायरेक्टरी के पथ:
- macOS: डेटा डायरेक्ट्री
/Applications/ServBay/db/mariadb/<version>/
, लॉग डायरेक्ट्री/Applications/ServBay/logs/mariadb/<version>/
- Windows: डेटा डायरेक्ट्री
C:\ServBay\db\mariadb\<version>\
, लॉग डायरेक्ट्रीC:\ServBay\logs\mariadb\<version>\
- macOS: डेटा डायरेक्ट्री
अनुमति (Permissions) संबंधी समस्या: रनिंग यूजर को config फाइल, डेटा या लॉग डायरेक्टरी पर पढ़ने/लिखने की अनुमति नहीं है। ServBay इंस्टाल और मैनेज करते वक्त permissions सेट करता है, लेकिन अगर यूजर ने सर्वबे के इंस्टॉल फ़ोल्डर/फाइल की परमिशन बदल दी, तो दिक्कत आ सकती है।
macOS परमिशन जांचें:
bashls -ld /Applications/ServBay/db/mariadb/<version> ls -l /Applications/ServBay/etc/mariadb/<version>/my.cnf ls -ld /Applications/ServBay/logs/mariadb/<version>
1
2
3सुनिश्चित करें कि डेटाबेस प्रोसेस के यूजर (जैसे
_mysql
) को आवश्यक पढ़ने, लिखने और चलाने की अनुमति हो।Windows पर: Windows फाइल एक्सप्लोरर में डायरेक्टरी और फाइल प्रॉपर्टी देखें, संबंधित फोल्डर/फाइल पर सर्वबे सर्विस अकाउंट को उचित पढ़ने/लिखने का अधिकार दें।
डेटा फाइल खराब (Corrupt): (नीचे “डेटाबेस क्रैश या डेटा भ्रष्ट” देखें) यदि पिछली बार अचानक शटडाउन या अन्य समस्या थी तो डेटा फाइल खराब हो सकती है, जिससे स्टार्ट फेल हो सकता है।
समाधान के बाद:
- पैकेज को पुनः प्रारंभ करें:
servbayctl restart mariadb <version>
4. यूजर परमिशन या प्रमाणिकता (Authentication) समस्याएं
सर्वर से सफल कनेक्शन के बाद, यूजरनेम, पासवर्ड या अधिकार गलत होने पर (जैसे Access denied
) त्रुटि आ सकती है।
संभावित कारण और समाधान:
- यूजरनेम या पासवर्ड गलत: कनेक्शन के लिए सही यूजरनेम/पासवर्ड प्रयोग करें। ServBay root पासवर्ड रीसैट करने की सुविधा देता है।
- होस्ट प्रतिबंध: यूजर अकाउंट को खास होस्ट (जैसे
'username'@'localhost'
) से ही अनुमति हो सकती है।'username'@'127.0.0.1'
से कनेक्शन फेल हो सकता है। '%
' किसी भी होस्ट से कनेक्शन की अनुमति देता है। - परमिशन की कमी: यूजर के पास टार्गेट डेटाबेस या विशिष्ट ऑपरेशन (SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, आदि) की परमिशन नहीं हो सकती है।
- यूजर परमिशन जांचें:
- पर्याप्त अधिकार वाले अकाउंट से (जैसे root) MariaDB/MySQL में लॉगिन करें:bash
mysql -u root -p
1 - SQL कमांड लाइन में यूजर के अधिकार देखें:sql
SHOW GRANTS FOR '<username>'@'<hostname>'; -- उदाहरण: 'webapp' यूजर की 'localhost' से कनेक्शन अनुमति: SHOW GRANTS FOR 'webapp'@'localhost'; -- 'admin' यूजर के लिए सभी होस्ट: SHOW GRANTS FOR 'admin'@'%';
1
2
3
4
5 - जरूरत पड़ने पर
GRANT
/REVOKE
कमांड से अधिकार बदलें या नया यूजर बनाएं।
- पर्याप्त अधिकार वाले अकाउंट से (जैसे root) MariaDB/MySQL में लॉगिन करें:
5. प्रदर्शन (Performance) संबंधी समस्याएं
डेटाबेस के धीमे होने पर एप्लिकेशन की रेस्पॉन्स स्पीड घट जाती है।
संभावित कारण और समाधान:
- धीमी क्वेरी (Slow Query): क्वेरी का फॉर्मूला कमजोर, इंडेक्स की कमी या प्लान खराब।
- धीमी क्वेरी लॉग सक्षम करें:
my.cnf
मेंslow_query_log = 1
औरlong_query_time = 1
सेट करें (जिनका रनटाइम 1 सेकंड से अधिक हो वो लॉग हों)। लॉग pathslow_query_log_file
सेट करें। पैकेज रिस्टार्ट बाद, बने लॉग में लंबी क्वेरियों का विश्लेषण करें। EXPLAIN
का इस्तेमाल: क्वेरी के आगेEXPLAIN
लगाकर रन करें; इससे पता चलेगा इंडेक्स का इस्तेमाल हुआ या नहीं, कितनी पंक्तियाँ स्कैन हुईं, आदि।sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1- क्वेरी ऑप्टिमाइज़ करें: Аналyze से मिले परिणाम के आधार पर क्वेरी को पुनः लिखें, बेकार ऑपरेशन (जैसे
SELECT *
) और WHERE/JOIN के लिए इंडेक्स का प्रयोग सुनिश्चित करें।
- धीमी क्वेरी लॉग सक्षम करें:
- इंडेक्स की कमी या गलत इंडेक्स: जिन कॉलम पर अक्सर सर्च, ऑर्डर (
ORDER BY
), या ग्रुप (GROUP BY
) होता है, वहां इंडेक्स नहीं है तो फुल टेबल स्कैन हो सकता है।- टेबल और क्वेरी का विश्लेषण करें: किन कॉलम पर इंडेक्स बनाना चाहिए पहचाने।
- इंडेक्स बनाएं:sqlध्यान दें कि इंडेक्स बढ़ाने से राइट ऑपरेशन और डिस्क स्पेस बढ़ता है।
CREATE INDEX idx_column_name ON your_table_name(column_name);
1
- कैश सेटिंग गलत:
my.cnf
के कैश संबंधी पैरामीटर, जैसेinnodb_buffer_pool_size
,key_buffer_size
(MyISAM), बहुत कम या ज्यादा सेट हैं।- कैश पैरामीटर एडजस्ट करें: अपने macOS सिस्टम मेमोरी और डेटाबेस के उपयोग अनुसार सेटिंग बदलें।
innodb_buffer_pool_size
अहम है, डेटाबेस सर्वर के लिए सिस्टम मेमोरी का 50-70% सेट करें। बदलने बाद पैकेज रिस्टार्ट करें।ini[mysqld] # उदाहरण, अपनी जरूरत अनुसार बदलें innodb_buffer_pool_size = 2G # अगर MyISAM ज्यादा है: # key_buffer_size = 256M
1
2
3
4
5
- कैश पैरामीटर एडजस्ट करें: अपने macOS सिस्टम मेमोरी और डेटाबेस के उपयोग अनुसार सेटिंग बदलें।
- हार्डवेयर संसाधन में कमी: CPU, मेमोरी, डिस्क या नेटवर्क में बॉटलनेक है। macOS के एक्टिविटी मॉनिटर या टर्मिनल के
top
/htop
से जांचें।
6. डेटाबेस क्रैश या डेटा भ्रष्ट (Corrupt)
डेटाबेस स्टार्ट न होना, क्रैश होना, या डेटा एक्सेस करते समय समस्या हो तो डेटा फाइल खराब हो सकती है।
संभावित कारण और समाधान:
- त्रुटि लॉग देखें: सबसे पहले लॉग में देखा जाये; उसमें क्रैश या भ्रष्ट का कारण लिखा होता है (InnoDB एरर, फाइल सिस्टम या हार्डवेयर समस्या आदि)।
- macOS:
/Applications/ServBay/logs/mariadb/<version>/<version>.err
- Windows:
C:\ServBay\logs\mariadb\<version>\<version>.err
- macOS:
- हार्डवेयर फेल: डिस्क, मेमोरी जैसी हार्डवेयर समस्या; सिस्टम लॉग (
Console.app
) या हार्डवेयर टूल से जांचें। - सॉफ्टवेयर कांफ्लिक्ट या बग: MariaDB/MySQL के किसी विशेष वर्शन में त्रुटि या अन्य सॉफ़्टवेयर से टकराव।
- कॉनफिगरेशन गलत:
my.cnf
का कोई पैरामीटर ग़लत होने से अस्थिरता या क्रैश। - फोर्स शटडाउन या प्रोसेस कट करना: अगर MariaDB/MySQL को वाजिब तरीके से बंद ना करें तो डेटा फाइलें असंगत हो सकती हैं।
समाधान:
- सुरक्षित रिस्टार्ट का प्रयास करें: सर्वबे ऐप या कमांड से पैकेज को फिर से स्टार्ट करें:
servbayctl restart mariadb <version>
। कभी-कभी इससे डेटाबेस स्वयं रिकवर हो जाता है। mysqlcheck
से टेबल जांचें और सुधारें: टेबल की उचितता जांचें और रिपेयर करें (MyISAM टेबल के लिए असरदार)।bashनोट:# ServBay की my.cnf और root से सभी डेटाबेस की जांच mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --check --all-databases # MyISAM टेबल के लिए auto-repair भी उपयोग कर सकते हैं # mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --auto-repair --check --all-databases
1
2
3
4--auto-repair
सिर्फ MyISAM के लिए। InnoDB टेबल के लिए, जांच तो कर सकते हैं, लेकिन सुधार के लिए नीचे दिया गया उपाय अपनाएं।- InnoDB फोर्स रिकवरी (
innodb_force_recovery
): अगर InnoDB स्टोरेज इंजन स्टार्ट ना हो (लॉग में InnoDB एरर), फोर्स रिकवरी आजमाएं। जोखिम भरा है, डेटा लॉस्ट और असंगति हो सकती है! तभी करें जब स्टार्ट संभव नहीं और ज्यादा जरूरी यह है कि डेटा एक्सपोर्ट करना है।- सबसे पहले डेटा डायरेक्ट्री का बैकअप लें (चाहे खराब हो):
/Applications/ServBay/db/mariadb/<version>/
को कहीं और कॉपी करें। - संबंधित वर्शन की
my.cnf
एडिट करें (/Applications/ServBay/etc/mariadb/<version>/my.cnf
)। [mysqld]
सेक्शन में जोड़ें:innodb_force_recovery = N
(N = 1 से शुरू करें, काम न करे तो बढ़ाएं; हर बार सिर्फ एक स्तर ट्राइ करें)।- MariaDB/MySQL स्टार्ट करें:
servbayctl start mariadb <version>
. - यदि स्टार्ट हो गया (चाहे रीड ओनली, या सीमित फंक्शन), तुरंत
mysqldump
से बैकअप लें!bashबैकअप फाइल ठीक बनी है या नहीं, साइज चेक करें।mysqldump --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --all-databases --routines --triggers --events > /path/to/your_emergency_backup.sql
1 - बैकअप बाद पैकेज बंद करें:
servbayctl stop mariadb <version>
my.cnf
सेinnodb_force_recovery = N
हटा दें या कमेंट कर दें।- डेटा पुनर्स्थापन (रेस्टोर): आमतौर पर नए डेटा डायरेक्ट्री में पुर्नारंभ करना या बैकअप फाइल को नए डेटाबेस में इम्पोर्ट करना।
- सबसे पहले डेटा डायरेक्ट्री का बैकअप लें (चाहे खराब हो):
- बैकअप से पुनर्स्थापन: अगर डेटाबेस ठीक नहीं हो पा रहा, या सुधार बाद भी डेटा असंगत है, तो सबसे अच्छा तरीका है विश्वासनीय बैकअप से पुनर्स्थापन। ServBay की बैकअप फाइल आमतौर पर
/Applications/ServBay/backup/mariadb/<version>/
(अगर ServBay बैकअप यूज़ किया है) में होती है।- पुनर्स्थापन कमांड उदाहरण (मान लें कि
<target_database_name>
में इम्पोर्ट करना है):bashनोट:# सुनिश्चित करें कि टार्गेट डेटाबेस बना है # mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;" # इम्पोर्ट कमांड mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5<version>
टार्गेट MariaDB/MySQL वर्शन से बदलें।
- पुनर्स्थापन कमांड उदाहरण (मान लें कि
7. बैकअप और पुनर्स्थापन संबंधित समस्याएं
ServBay के इन-बिल्ट बैकअप या मैन्युअली mysqldump
से बैकअप/रेस्टोर करते हुए दिक्कत आ सकती है।
संभावित कारण और समाधान:
- बैकअप फाइल अधूरी या खराब:
- फाइल साइज (
ls -lh /path/to/your_backup.sql
) चेक करें; साइज अपेक्षित डेटा के अनुसार है या नहीं। - टेक्स्ट एडिटर या
less
से फाइल देखें (less /path/to/your_backup.sql
); देखें फाइल SQL जैसी दिखती है या नहीं। - मैन्युअली बैकअप लेते समय किसी त्रुटि आई तो देखें; ServBay बैकअप से त्रुटि देखना हो तो ऐप लॉग देखें।
- फाइल साइज (
- पुनर्स्थापन की कमांड गलत:
- गलत यूजरनेम, पासवर्ड या डेटाबेस नाम इस्तेमाल हुआ।
- इम्पोर्ट करने वाले यूजर के पास पर्याप्त अधिकार नहीं।
- SQL सिंटैक्स त्रुटि: अगर बैकअप अलग वर्शन या टाइप के डेटाबेस (जैसे MySQL से MariaDB में या उलटा) से लिया, तो अनुकूलता की समस्या आ सकती है।
- विदेशी कुंजी (Foreign Key) समस्या: इम्पोर्ट करते समय टेबल की क्रमानुसार इम्पोर्ट न होने पर दूसरों पर डेपेंडेंट टेबलों की कुंजी फेल हो सकती है। इम्पोर्ट से पहले फ़ोरन की चेकिंग बंद करें, बाद में फिर चालू करें:sqlनोट: फ़ोरन की चेकिंग बंद करने से डेटा असंगत हो सकता है; इसे सिर्फ इम्पोर्ट के दौरान यूज करें।
-- इम्पोर्ट से पहले SET foreign_key_checks = 0; -- इम्पोर्ट कमांड जैसे: source /path/to/your_backup.sql; -- mysql क्लाइंट में -- या कमांड लाइन mysql ... < /path/to/your_backup.sql -- इम्पोर्ट बाद SET foreign_key_checks = 1;
1
2
3
4
5
6
7
8 - कैरेक्टर सेट या Collation समस्या: बैकअप फाइल के डेटा या टेबल डिफिनिशन में, टार्गेट डेटाबेस या टेबल की कैरेक्टर सेटिंग से मेल न खाने पर डेटा गड़बड़ या एरर आ सकती है। सुनिश्चित करें कि टार्गेट/बैकअप में
utf8mb4
या संगत कैरेक्टर सेट है।
सही तरीके से डेटाबेस पुनर्स्थापन (कमांड लाइन उदाहरण):
macOS:
bash
# मान लें बैकअप एक खास डेटाबेस का है
# टार्गेट डेटाबेस (<target_database_name>) बना लें
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;"
# सही config, username, password और database name से इम्पोर्ट करें
mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
# अगर बैकअप सभी डेटाबेस का है (--all-databases), तो डेटाबेस नाम देने की जरूरत नहीं
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Windows:
cmd
REM मान लें बैकअप एक खास डेटाबेस का है
REM टार्गेट डेटाबेस बना लें (<target_database_name>)
REM C:\ServBay\bin\mariadb\<version>\bin\mysql.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;"
REM सही config, username, password और database name से इम्पोर्ट करें
C:\ServBay\bin\mariadb\<version>\bin\mysql.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf -u <username> -p <target_database_name> < C:\ServBay\backup\mariadb\<version>\<your_backup.sql>
REM अगर बैकअप सभी डेटाबेस का है (--all-databases), तो डेटाबेस नाम देने की जरूरत नहीं
REM C:\ServBay\bin\mariadb\<version>\bin\mysql.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf -u <username> -p < C:\ServBay\backup\mariadb\<version>\<your_backup.sql>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
नोट: <version>
को अपने MariaDB/MySQL पैकेज के संस्करण से बदलें। ServBay की इन-बिल्ट बैकअप सुविधा आम तौर पर आसानी से रिस्टोर योग्य फाइल बनाती है और पुनर्स्थापन का विकल्प देती है।
8. विशिष्ट बग: MariaDB 11.5.1 InnoDB स्टार्टअप फेल (ib_logfile0 was not found
/ Missing FILE_CHECKPOINT
)
यह समस्या MariaDB 11.5.1 में पाई गई एक गंभीर बग है, InnoDB इंजन की लॉग फाइल नहीं मिलने या रिकॉग्नाइज न करने के कारण डेटाबेस स्टार्ट नहीं होता।
त्रुटि लॉग लक्षण:
त्रुटि लॉग में आपको ये जैसे एरर दिख सकती है:
macOS सैंपल (/Applications/ServBay/logs/mariadb/11.5/11.5.err
):
[ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
2
3
4
Windows सैंपल (C:\ServBay\logs\mariadb\11.5\11.5.err
):
[ERROR] InnoDB: File C:\ServBay\db\mariadb\11.5\ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
2
3
4
या:
[ERROR] InnoDB: Missing FILE_CHECKPOINT(xxxxx) at xxxxx
[ERROR] InnoDB: Log scan aborted at LSN xxxxx
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
5
2
3
4
5
इनमें InnoDB लॉग फाइल न मिलने या उसकी प्रोसेसिंग में दिक्कत होने से इंजन फेल हो गया है।
समाधान (डेटा माइग्रेशन संबन्धित; पहले बैकअप आजमाएं):
यह ऐसा बग है जिसे सामान्य तरीके से ठीक करना मुश्किल है। सबसे अच्छा उपाय है फोर्स स्टार्ट से डेटा एक्सपोर्ट करें, फिर दूसरे सुरक्षित MariaDB वर्शन में माइग्रेट करें।
बैकअप के लिए फोर्स रिकवरी आजमाएं (जोखिम भरा!):
कॉनफिगरेशन फाइल एडिट करें:
- macOS:
/Applications/ServBay/etc/mariadb/11.5/my.cnf
- Windows:
C:\ServBay\etc\mariadb\11.5\my.cnf
[mysqld]
सेक्शन में जोड़ें:innodb_force_recovery = 6
सर्विस स्टार्ट करने की कोशिश करें:
bashservbayctl start mariadb 11.5
1अगर स्टार्ट हो गया तो तुरंत डेटा का बैकअप लें:
macOS:
bashmysqldump --defaults-file=/Applications/ServBay/etc/mariadb/11.5/my.cnf -u root -p --all-databases --routines --triggers --events > /Applications/ServBay/backup/mariadb/11.5/mariadb_11.5_emergency_backup.sql
1Windows:
cmdC:\ServBay\bin\mariadb\11.5\bin\mysqldump.exe --defaults-file=C:\ServBay\etc\mariadb\11.5\my.cnf -u root -p --all-databases --routines --triggers --events > C:\ServBay\backup\mariadb\11.5\mariadb_11.5_emergency_backup.sql
1बैकअप फाइल सही बनी है या नहीं, साइज जरूर जांच लें।
- macOS:
समस्या वाले वर्शन का डेटा डायरेक्ट्री बंद और हटाएं:
- MariaDB 11.5 पैकेज बंद करें:
servbayctl stop mariadb 11.5
my.cnf
फाइल मेंinnodb_force_recovery
कमेंट या डिलीट करें.
- MariaDB 11.5 पैकेज बंद करें:
(गाइड यहीं तक मिलेगा — आगे पूरा होने पर पिछले प्रक्रिया के साथ समस्या निदान, डेटा माइग्रेशन, नया पैकेज इंस्टाल/इनिशियलाइज आदि कार्य करें।)