MySQL डेटा डायरेक्टरी कैसे बदलें?


158

क्या मेरे डिफ़ॉल्ट MySQL डेटा निर्देशिका को दूसरे पथ में बदलना संभव है? क्या मैं डेटाबेस को पुराने स्थान से एक्सेस कर पाऊंगा?


3
इस सवाल के लिए कोई जवाब उपलब्ध हैं अगर Win8 में सिस्टम?
जोनाथन एम

1
खिड़कियों के लिए - यहाँ देखें: dba.stackexchange.com/questions/24403/…
डॉ। आरोन डिष्णो

मैक उपयोगकर्ता के लिए, आप सभी की जरूरत है इस और @ user1341296 के जवाब से 1-4 कदम।
शेल्बी डिक्

जवाबों:


270
  1. निम्न आदेश का उपयोग करके MySQL को रोकें:

    sudo /etc/init.d/mysql stop
  2. /var/lib/mysqlनिम्न आदेश का उपयोग करके मौजूदा डेटा निर्देशिका (डिफ़ॉल्ट स्थित ) की प्रतिलिपि बनाएँ :

    sudo cp -R -p /var/lib/mysql /newpath
  3. निम्न कमांड के साथ MySQL कॉन्फ़िगरेशन फ़ाइल को संपादित करें:

    sudo gedit /etc/mysql/my.cnf   # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
  4. के लिए प्रविष्टि देखें datadir, और /var/lib/mysqlनई डेटा निर्देशिका में पथ (जो होना चाहिए ) को बदलें ।

  5. टर्मिनल में, कमांड दर्ज करें:

    sudo gedit /etc/apparmor.d/usr.sbin.mysqld
  6. के साथ शुरू लाइनों के लिए देखो /var/lib/mysql/var/lib/mysqlनए रास्ते के साथ लाइनों में बदलें ।

  7. फ़ाइल को सहेजें और बंद करें।

  8. कमांड के साथ AppArmor प्रोफाइल को पुनरारंभ करें:

    sudo /etc/init.d/apparmor reload
  9. MySQL को कमांड से रीस्टार्ट करें:

    sudo /etc/init.d/mysql restart
  10. अब MySQL में लॉगिन करें और आप वही डेटाबेस एक्सेस कर सकते हैं जो आपने पहले किया था।


33
उपरोक्त मेरे लिए Ubuntu 12.04 (सटीक) पर समस्या को हल करने में विफल रहा। मुझे पता चला कि किसी को लाइन /etc/apparmor.d/tunables/alias को संपादित करने के लिए एक लाइन "उर्फ / var / lib / mysql / -> / newpath /," शामिल करने की आवश्यकता है, इस जगह के साथ, मुझे किसी की आवश्यकता नहीं थी किसी भी अन्य AppArmor फ़ाइलों में परिवर्तन। यह AppArmor को "/etc/init.d/apparmor पुनरारंभ" और MySQL के साथ "पुनरारंभ mysql" के साथ पुनरारंभ करने के तुरंत बाद काम किया।
mak

2
अपॉइंटमेंट CentOS पर प्रासंगिक नहीं है। इसके बजाय SELinux है। यहाँ निष्क्रिय करने या प्रबंधित करने के तरीके पर पढ़ सकते हैं blogs.oracle.com/jsmyth/entry/selinux_and_makq
Noam

12
mak के संस्करण पर (जो आवश्यक है) लाइन के अंत में अल्पविराम को मत भूलनाalias /var/lib/mysql/ -> /newpath/,
माइकल

4
पर्याप्त तनाव नहीं कर सकते कि उपरोक्त मिशेल की टिप्पणी कितनी महत्वपूर्ण है: ADD TRAILING COMMA और कुछ न्यूरॉन्स को बचाएं। टोपी के बारे में क्षमा करें।
alx

2
मेरे लिए काम नहीं करता है। मुझे mysql.service के लिए नौकरी मिल गई है। Mysqld को पुनरारंभ करने का प्रयास करते समय विवरण के लिए 'systemctl स्टेटस mysql.service' और 'journalctl -xn' देखें, और त्रुटि यह है कि डिस्क पूर्ण है। यह 500GB मुक्त स्थान मिला है ...
फ्रैंक एच।

17

त्वरित और आसान करने के लिए:

# Create new directory for MySQL data
mkdir /new/dir/for/mysql

# Set ownership of new directory to match existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql

# Set permissions on new directory to match existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql

# Stop MySQL before copying over files
service mysql stop

# Copy all files in default directory, to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/

/etc/my.cnfफ़ाइल संपादित करें , और [mysqld]इस पंक्ति को जोड़ें:

datadir=/new/dir/for/mysql/

यदि आप CageFS (CloudLinux के साथ या उसके बिना) का उपयोग कर रहे हैं और MySQL निर्देशिका को बदलना चाहते हैं, तो आप इस फ़ाइल में नई निर्देशिका जोड़ना होगा:

/etc/cagefs/cagefs.mp

और फिर इस कमांड को चलाएं:

cagefsctl --remount-all

1
सुनकर खुशी हुई: P
sMyles

महान धन्यवाद, और यदि आप पूरी तरह से इस तरह की स्क्रिप्ट को जोड़ना चाहते हैं, तो आप इसका उपयोग कर सकते हैं: sed -i 's datadir = / var / lib / mysql | datadir = / data / var / lib / mysql। G' / etc / my.cnf
berimbolo

यह मेरे लिए काम नहीं किया। मैंने यह और कई अन्य वैकल्पिक विकल्पों की कोशिश की। मैं user3338098 के समान निष्कर्ष पर आ रहा हूं जब वह कहता है कि यह एकमात्र तरीका है जो काम करता है: serverfault.com/questions/503887/…
वोल्समैन

@Volksman कि लिंक का कहना है कि उसे हटाना और पुन: स्थापित करना था ... संभावना है कि आप दोनों के पास कुछ अन्य सर्वर विशिष्ट समस्या है, जैसे कि MySQL और MariaDB दोनों डेटाडियर कॉन्फ़िगरेशन का समर्थन करते हैं, और मैंने हाल ही में यह (6 महीने पहले) दूसरे पर किया था मुद्दों के बिना सर्वर
sMyles

@ शैलियाँ हाँ, इसे हटा दिया गया था और स्थापित किया गया था, लेकिन बढ़ते / var / lib / mysql के बाद कहीं और अर्थात एक मेगा विभाजन के विपरीत एक / var पहले से मुहिम की गई थी। अगर हमारे सिस्टम के साथ कोई विशेष समस्या है तो यह काम करना बहुत अच्छा होगा। यह 8x HDD के साथ RAID 10 के साथ Centos 7 OS के एक ताजा स्टॉक मानक स्थापित पर था, लेकिन आमतौर पर ऐसे डिस्क सरणी विवरण सॉफ़्टवेयर के लिए पारदर्शी होते हैं।
वोक्समैन

15

आपको वर्तमान डेटा को नई निर्देशिका में कॉपी करना होगा और my.cnfअपने MySQL को बदलना होगा ।

[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/

जब सर्वर नहीं चल रहा हो तो आपको डेटाबेस को कॉपी करना होगा ।


ठीक है कि मैं क्या नहीं कर सकता। मैं निर्देशिका बदलना चाहता हूं, लेकिन मैं नई निर्देशिका में नए डेटाबेस बनाना चाहता हूं। और पुरानी निर्देशिका और नई निर्देशिका डेटाबेस दोनों का उपयोग करना चाहते हैं।
MySQL DBA

1
@MySQL डीबीए: यदि आप कुछ ln -sस्थिर प्रतीकात्मक लायनक्स का उपयोग करते हैं तो यह नहीं होगा?
रेजजेड

वैसे मैं इस कमांड के इस्तेमाल को लेकर थोड़ा उलझन में हूं। जैसा कि मैंने समझाया था इससे पहले कि मैं नई निर्देशिका में नए डेटाबेस बनाना चाहता हूं। क्या यह सिमलिंक से संभव है।
MySQL DBA

1
आप एक नई निर्देशिका बना सकते हैं, फ़ाइल को नई dir में प्रदर्शित करने के लिए प्रतीकात्मक लिंक का उपयोग कर सकते हैं और अपने को बदल सकते हैंmy.cnf
RageZ

2
नीचे मतदान हुआ क्योंकि यह serverfault.com/a/733998/279553
user3338098

14

सबसे पहले आपको mysql सर्वर को बंद कर देना चाहिए। जैसे

# /etc/init.d/mysql stop

उसके बाद आपको पुरानी डेटा निर्देशिका (जैसे / var / lib / mysql) incl को कॉपी करना चाहिए। के माध्यम से अपनी नई निर्देशिका के लिए विशेषाधिकार

# cp -R -p /var/lib/mysql /new/data/dir

अब आप /etc/mysql/my.cnfडेटा नए में बदल सकते हैं और सर्वर को पुनरारंभ कर सकते हैं

# /etc/init.d/mysql restart

5
नीचे मतदान हुआ क्योंकि यह serverfault.com/a/733998/279553
user3338098

7

अगर मेरी तरह आप डेबियन पर हैं और आप mysql dir को अपने घर या एक रास्ते पर / घर / ... पर ले जाना चाहते हैं, तो समाधान है:

  • Mysql को "sudo service mysql stop" द्वारा रोकें
  • "datadir" चर को "/etc/mysql/mariadb.conf.d/50-server.cnf" में नए पथ में बदलें
  • / Var / lib / mysql का बैकअप लें: "cp -R -p / var / lib / mysql / path_to_my_backup"
  • इस डायर को हटाएं: "sudo rm -R / var / lib / mysql"
  • डेटा को नए dir में ले जाएं: "cp -R -p / path_to_my_backup / path_new_dir
  • "Sudo chown -R mysql: mysql / path_new_dir" द्वारा पहुंच बदलें
  • "/Etc/systemd/system/mysqld.service" पर "झूठे" द्वारा चर "प्रोटेक्टहोम" बदलें।
  • "सुडो सिस्टमक्टल डेमॉन-रीलोड" द्वारा रीलोड सिस्टम
  • "सेवा mysql पुनरारंभ" द्वारा mysql को पुनरारंभ करें

एक दिन मेरे लिए मारीडब प्रलेखन पर समाधान खोजने के लिए। आशा है कि यह कुछ लोगों की मदद करेगा!


फ़ाइल /etc/systemd/system/mysqld.service यहाँ नहीं है। कोई भी विचार जहां मैं देख रहा हूं?
रॉन पिगोट

1
का उपयोग करते हुए उन लोगों के लिए MariaDB सेवा फ़ाइल में स्थित है /lib/systemd/system/mariadb@.service
रॉन Piggott

5

मैं अपनी मशीन पर एक डेटाबेस रखना चाहता था, लेकिन मेरी बाहरी हार्ड ड्राइव पर एक डेटा भी है, और दोनों का उपयोग करने के बीच स्विच करता है।

यदि आप Mac पर हैं, और Homebrew का उपयोग करके MySQL स्थापित किया है, तो यह आपके लिए काम करना चाहिए। अन्यथा, आपको datadirअपनी मशीन पर MySQL के लिए उपयुक्त स्थानों को बदलना होगा ।

#cd to my data dir location
cd /usr/local/var/

#copy contents of local data directory to the new location
cp -r mysql/ /Volumes/myhd/mydatadir/

#temporarily move the old datadir
mv mysql mysql.local

#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql

फिर जब आप वापस स्विच करना चाहते हैं तो बस करें:

mv mysql mysql.remote

mv mysql.local mysql

और आप फिर से अपने स्थानीय डेटाबेस का उपयोग कर रहे हैं। उम्मीद है की वो मदद करदे।


1
जैसा कि कहा गया है - यह वास्तव में प्रश्न को संबोधित नहीं कर रहा है - हालांकि यह वही था जो मैं देख रहा था - और यह एक किनारे मामले / बग को संभालने का एक साफ तरीका है कि my.cnf रिक्त स्थान को अच्छी तरह से नहीं संभालता है: bugs.mysql.com /bug.php?id=26033 । मैं इस रिपोर्ट को उस बग रिपोर्ट पर लिंक कर दूंगा।
gabe

नीचे मतदान हुआ क्योंकि यह serverfault.com/a/733998/279553
user3338098

5

सबसे पहले mysqld को रोकें

mysql_install_db --user=mysql \
                 --basedir=/opt/mysql/mysql \
                 --datadir=/opt/mysql/mysql/data

फिर अपने /etc/mysql/my.cnf
प्रारंभ mysqld में डेटादिर बदलें

नोट:
# 1: शायद आपको अपनी SELinux सेटिंग्स को समायोजित करना होगा (मुसीबतों के मामले में SELinux अक्षम के साथ प्रयास करें), Apparmor (Ubuntu) भी समस्या हो सकती है।

# 2: MySQL Install DB संदर्भ देखें


4

सबसे पहले अपने mysql को बंद करो

sudo service mysql stop

नए स्थान पर mysql डेटा कॉपी करें।

sudo cp -rp /var/lib/mysql /yourdirectory/

यदि आप apparmor का उपयोग करते हैं, तो निम्न फ़ाइल को संपादित करें और निम्नलिखित करें

sudo vim /etc/apparmor.d/usr.sbin.mysqld

बदलें जहाँ / var / lib / by / yourdirectory / फिर फ़ाइल में मौजूद नहीं होने पर follwoing जोड़ें

    /yourdirectory/mysql/ r,
    /yourdirectory/mysql/** rwk,

कमांड के साथ फाइल को सेव करें

:wq

फ़ाइल my.cnf को संपादित करें

sudo vim /etc/mysql/my.cnf

बदलें जहाँ / var / lib / by / yourdirectory / फिर कमांड के साथ सहेजें

:wq

अंत में mysql शुरू करें

sudo service mysql start

@ छापे 0 के बारे में अधिक, अनुकूलन ici


नीचे मतदान किया गया क्योंकि यह serverfault.com/a/733998/279553
user3338098

शायद यह अन्य वितरण के लिए काम नहीं करता है, लेकिन अगर आप ubuntu का उपयोग कर रहे हैं, तो यह मेरे लिए ठीक काम करता है और मैं छापे को सक्षम करने के लिए हर नए स्थापित किए गए ubuntu सर्वर के लिए रास्ता बदल देता हूं।
naddame

2
मुझे पता है कि लोग इसे कम कर रहे हैं, लेकिन मैं आपको कहना चाहता हूं कि इससे मेरा दिन बच गया। धन्यवाद!
डैनियल लौरेइरो

3

यह समाधान कार्यक्षेत्र का उपयोग करके विंडोज 7 में काम करता है। ऐसा करने के लिए आपको व्यवस्थापक विशेषाधिकार की आवश्यकता होगी। यह एक जंक्शन बनाता है (एक शॉर्टकट की तरह) जहाँ भी आप वास्तव में अपने डेटा को स्टोर करना चाहते हैं

कार्यक्षेत्र खोलें और इंस्टेंस का चयन करें - स्टार्टअप / शटडाउन सर्वर बंद करें

Https://bitum.com/junctionmaster.php से जंक्शन मास्टर स्थापित करें

C: \ ProgramData \ MySQL \ MySQL सर्वर 5.6 पर नेविगेट करें

डेटा पर राइट क्लिक करें और "MOVE और फिर लिंक फ़ोल्डर को चुनें ..." के लिए चेतावनी बिंदु गंतव्य को स्वीकार करें "उद्धरण के बिना यहां आपकी नई डेटा निर्देशिका" मूव और लिंक पर क्लिक करें

अब "बिना उद्धरण के यहां आपकी नई डेटा निर्देशिका" पर जाएं

डेटा टैब पर राइट क्लिक करें सिक्योरिटी टैब पर जाएं क्लिक करें एडिट टाइप टाइप नेटवर्क्स सर्विस पर क्लिक करें, फिर नामों पर क्लिक करें ओके पर क्लिक करें पूर्ण नियंत्रण की अनुमति दें चेकबॉक्स पर और फिर ओके पर क्लिक करें।

कार्यक्षेत्र पर वापस जाएं और सर्वर शुरू करें

इस विधि ने विंडोज 7 एंटरप्राइज पर MySQL वर्कबेंच 6.2 का उपयोग करके मेरे लिए काम किया।


2

सब कुछ @ user1341296 ने कहा, प्लस ...

आप बेहतर नहीं बदल सकते हैं /etc/mysql/my.cnf इसके बजाय आप नई फ़ाइल बनाना चाहते हैं /etc/mysql/conf.d/ext.cnf(कोई भी नाम, लेकिन एक्सटेंशन होना चाहिए cnf)

और इसमें अपना परिवर्तन करें:

[mysqld]
datadir=/vagrant/mq/mysql

इस तरह

  • आपको मौजूदा फ़ाइल (स्वचालन स्क्रिप्ट के लिए आसान) बदलने की आवश्यकता नहीं है
  • MySQL संस्करण के साथ कोई समस्या नहीं है (और यह कॉन्फ़िगर है!) अद्यतन।

2

यदि आप एक Windows उपयोगकर्ता हैं और यह पता लगाने के लिए यहां उतरे हैं कि सभी उत्तर लिनक्स उपयोगकर्ताओं के लिए हैं, तो निराश न हों! मैं आपको समय बर्बाद नहीं करने दूंगा जिस तरह से मैंने किया था।

समाधान से पहले थोड़ी बकवास बात:

MySQL आपके द्वारा बनाए गए विभिन्न डेटाबेस के डेटा को संग्रहीत करने के लिए एक डेटा निर्देशिका का उपयोग करता है। खैर, अंत में, उन्हें एप्लिकेशन और फ़ाइल प्रारूप में कुछ जोड़े हुए बाजीगरों के साथ फ़ाइलों के रूप में उन्हें संग्रहीत करना होगा ताकि डेटाबेस के वादे को सुनिश्चित किया जा सके कि आपने डेटाबेस कक्षाओं में सीखा है।

अब आप यह सुनिश्चित करना चाहते हैं कि बड़े डेटाबेस को संग्रहीत करने के लिए पर्याप्त जगह है जो आप भविष्य में बना सकते हैं, और इसलिए आपने सोचा, अरे! मैं इसे एक और ड्राइव में डालना चाहता हूं जिसे अधिक स्थान मिला है।

तो आप निम्न कार्य करें।

चरण - 1 : MySQL सेवा को रोकना।

  Window Key + R - will open Run
  servies.msc    - will open services manager
  Locate MySQL80 (80 is for version 8.0, look for the one you've).
  Stop it.       (Right click, Stop)

चरण - 2 : वर्तमान डेटा निर्देशिका का पता लगाना

 Goto C:\ProgramData\MySQL\MySQL Server 8.0

डिफ़ॉल्ट रूप से, यहां एक फ़ोल्डर होना चाहिए जिसका नाम है Data, यह वह है जो डिफ़ॉल्ट सेटिंग में MySQL द्वारा उपयोग किया जाता है (बशर्ते कि उन्हें कोई और बेहतर स्थान नहीं मिला है), लेकिन चलो इसे देखें।

खोज my.iniफ़ाइल , वहीं होनी चाहिए।

इसे एक संपादक में खोलें (नोटपैड ++ शायद)।

datadirफ़ाइल में पता करने के लिए एक CTRL + F करें ।

यहां जो कुछ भी उल्लेख किया गया है वह डेटा निर्देशिका के लिए MySQL द्वारा वर्तमान में उपयोग किया जाने वाला वास्तविक स्थान है। यही आप बदलना चाहते हैं।

चरण - 3 : एक नई डेटा निर्देशिका के साथ इसे प्रतिस्थापित करना।

मान लें कि आप चाहते हैं कि आपकी नई डेटा निर्देशिका W: __ MySQL_Data हो। datadirमान को my.iniफ़ाइल में इस मान में बदलें । पिछले मान को टिप्पणी में रखें ताकि आपको इसे याद न रखना पड़े।

 # Path to the database root
 # datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
   datadir=W:/__MySQL_Data

अब xcopyडिफ़ॉल्ट datadirको कॉपी करने के लिए उपयोग करें W:\। लॉन्च कमांड प्रॉम्प्ट (विंडो + आर, सेमी, एन्टर)

 >> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0" "W:\" /E /H /K /O /X

और datadirआपके द्वारा बदले गए नए मूल्य पर कॉपी किए गए फ़ोल्डर का नाम बदलें । यहाँ:W:/__MySQL_Data

बस कॉपी क्यों नहीं? अच्छी तरह से क्योंकि यह COOL नहीं है !, इससे आपको कॉपी किए गए फ़ोल्डर पर अनुमतियों को खोने में मदद नहीं मिलती है, ताकि जब आप पुनरारंभ करें MySQL80, तो यह एक बेवकूफ त्रुटि नहीं देगा: "स्थानीय कंप्यूटर पर MySQL80 सेवा शुरू हुई और फिर बंद हो गई। कुछ सेवाएं स्वतः बंद हो जाती हैं अगर वे अन्य सेवाओं या कार्यक्रमों के उपयोग में नहीं हैं। " - सौजन्य: Microsoft

चरण - 4 : सेवा को फिर से शुरू करना

 Well, go back to the Services Manager to Start again, 
 "MySQL80" that you stopped, to restart it again.

चरण - 5 : हो गया! अब काम पर लौट आइए !!


1
धन्यवाद जो सहायक था लेकिन चेतावनी: my.ini एक सामान्य उपयोगकर्ता द्वारा लिखित नहीं है जब तक कि आप इसकी अनुमति नहीं बदलते। ओह और ProgramData एक छिपा हुआ फ़ोल्डर है, इसलिए आपको इसे देखने के लिए एक्सप्लोरर फ़ोल्डर सेटिंग्स को बदलना होगा।
जॉन्स

1

मशीनों को अपग्रेड करते समय, बॉक्स से बॉक्स में स्थानांतरित करते समय मुझे अक्सर ऐसा करने की आवश्यकता होती है। एक बेहतर स्थान पर जाने के लिए / var / lib / mysql के अलावा, मुझे अक्सर एक पुराने MySQL अधिष्ठापन से पुराने DB तालिकाओं को पुनर्स्थापित करने की आवश्यकता होती है। ऐसा करने के लिए...

  1. बंद करो mysql उपरोक्त निर्देशों का पालन करें, यह आवश्यक है।
  2. डेटाबेस निर्देशिकाओं को कॉपी करें - आपके पुराने इंस्टॉलेशन के प्रत्येक डेटाबेस के लिए एक होगा - नए DATADIR स्थान पर। लेकिन "mysql" और "performance_schema" निर्देशिकाओं को छोड़ दें।
  3. प्रतिलिपि डेटाबेस निर्देशिकाओं के बीच सही अनुमति। स्वामित्व mysql होना चाहिए: mysql, निर्देशिकाएं 700 होनी चाहिए, और फाइलें 660 होनी चाहिए।
  4. Mysql को पुनरारंभ करें। आपकी स्थापना के आधार पर, पुराने संस्करण DB फ़ाइलों को अद्यतन किया जाना चाहिए।

डाउन वोट के लिए खेद है, यह समाधान सही हो सकता है, इसे आज़माया नहीं गया है।
15:33 बजे user3338098

1

हमें MySQL को /homeडायरेक्टरी में स्थानांतरित करना पड़ा क्योंकि यह एक अन्य भौतिक डिस्क से मैप की गई थी। लाइव को सरल बनाने के लिए, my.cnf में निर्देशिका बदलने के बजाय, हमने नई निर्देशिका /home/mysqlको मूल निर्देशिका के स्थान पर मैप किया है /var/lib/mysql। यह हमारे लिए एक आकर्षण की तरह काम करता है (CentOS 7.1 पर परीक्षण किया गया)।

नई dir बनाएं और सही अनुमतियां सेट करें।

mkdir -p /home/mysql
chmod 755 /home/mysql
chown mysql:mysql /home/mysql

चल रहा है तो MySQL बंद करो।

systemctl stop mysql

डेटा को स्थानांतरित करें।

mv -f /var/lib/mysql/* /home/mysql

एक स्थायी माउंट बनाएं और इसे निष्पादित करें।

echo "/home/mysql /var/lib/mysql none    bind   0 0" >> /etc/fstab
mount -a

सर्वर को पुनरारंभ करें।

systemctl start mysql

1

यदि आप यह प्रोग्रामेटिक रूप से करना चाहते हैं (कोई मैनुअल पाठ प्रविष्टि gedit के साथ नहीं) तो यहां एक उपयोक्ता के लिए एक संस्करण है जो उपयोक्ता 131341296 के उत्तर पर आधारित है:

FROM spittet/ruby-mysql
MAINTAINER you@gmail.com

RUN cp -R -p /var/lib/mysql /dev/shm && \
    rm -rf /var/lib/mysql && \
    sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \
    /etc/init.d/mysql restart

यहां डॉकर हब पर उपलब्ध: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/


0

सबसे पहले, आपको पता होना चाहिए कि आपकी कॉन्फ़िग फ़ाइल कहाँ है? आपकी कॉन्फ़िग फ़ाइल कहाँ है?

यदि आप apt-get या yum install pt के साथ स्थापित करते हैं

कॉन्फ़िगरेशन फ़ाइल में दिखाई दे सकता है

/etc/mysql/my.cnf

datafile में दिखाई दे सकता है

/ Var / lib / mysql

और आपको क्या करना चाहिए

  1. mysql बंद करो
  2. mysql डेटा को नए dirctory में बदलें
  3. कॉन्फ़िगरेशन फ़ाइल को बदलें
  4. कॉन्फ़िग फ़ाइल पुनः लोड करें
  5. mysql को पुनरारंभ करें

और फिर नौकरी की।

लेकिन अगर आपने इसे उपयुक्त या यम के साथ स्थापित नहीं किया है, तो direcotry इसे पसंद नहीं कर सकता है, और आप mysql फ़ाइलों को इसके साथ पा सकते हैं

जिसमें mysql


नीचे मतदान किया गया क्योंकि यह serverfault.com/a/733998/279553
user3338098

0

SuSE 13.1 के तहत, यह mysql डेटा डायरेक्टरी को कहीं और स्थानांतरित करने के लिए ठीक काम करता है, उदाहरण के लिए / home / example_user /, और इसे अधिक जानकारीपूर्ण नाम देने के लिए:

में / var / lib /:

# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql

मैंने अपने आप को पुनः आरंभ किया:

# systemctl restart mysql.service

लेकिन संदेह है कि यह भी आवश्यक नहीं था।


0

एक वातावरण के लिए मैंने mysql डेटा निर्देशिका को नए स्थान पर बदल दिया, लेकिन mysql सर्वर के पुनरारंभ के दौरान, इसमें समय लग रहा था। इसलिए मैंने पोर्ट की जाँच की, और पाया कि अन्य प्रक्रिया mysql पोर्ट पर सुन रही थी। इसलिए मैंने इस प्रक्रिया को मार दिया और mysql सर्वर को फिर से शुरू किया और यह अच्छी तरह से काम किया।

मैंने डेटा निर्देशिका को बदलने के लिए निम्न चरणों का पालन किया जो उत्कृष्ट काम करता है। लिनक्स में mysql डेटा निर्देशिका बदलें


ढेर अतिप्रवाह में आपका स्वागत है! जब तक यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
टिम डाइकमैन

0

उपरोक्त चरण नींव और बुनियादी हैं। मैंने उनका अनुसरण किया और अभी भी "mysql शुरू करने में विफल रहा" की त्रुटि मिली।

Mysql डेटा को संग्रहीत करने के लिए नए फ़ोल्डर के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि फ़ोल्डर में अनुमतियाँ और स्वामित्व mysql: mysql है।

इसके अलावा, अगर यह, कहना, / डेटा / mysql / की mysql की मूल निर्देशिका की अनुमति और स्वामित्व की जाँच करने की आवश्यकता है। यहां / डेटा / निर्देशिका रूट: रूट होनी चाहिए। मैंने / mysql की मूल निर्देशिका के स्वामित्व को बदलने के बाद "mysql को प्रारंभ करने में विफल" की त्रुटि को ठीक किया। मेरे VM का OS RHEL 7.6 है।


मैंने SELELUX को बदलकर RHEL7.6 में selinux की कोशिश की = SELINUX = अनुज्ञेय के लिए लागू करके, मेरे लिए काम नहीं किया।
user3325137William

0

डेटादिर को सिम्बल करना भी संभव है। कम से कम macOS, देव वातावरण में।

(homebrew) उदा

# make sure you're not overwriting anything important, backup existing data
mv /usr/local/var/mysql [your preferred data directory] 
ln -s [your preferred data directory] /usr/local/var/mysql

Mysql को पुनरारंभ करें।


-1

यदि आप एसई लाइनक्स का उपयोग कर रहे हैं, तो इसे संपादन / आदि / सेलिनक्स / कॉन्फिग द्वारा अनुमेय मोड पर सेट करें और SELINUX को बदलकर = SELINUX को लागू करें = अनुमेय


जैसा कि यहाँ विस्तृत है serverfault.com/questions/503887/… selinux गलती पर नहीं है, datadirसंपत्ति के परिवर्तन को रोकने वाले कुछ अन्य मुद्दे हैं
user3338098
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.