बैकअप के लिए एक स्वचालित मार्ग के लिए अपने MySQL डेटाबेस:
बैकअप के किसी भी रूप करने के लिए आवश्यक शर्तें चल सिस्टम के प्रदर्शन में बाधा उत्पन्न बिना कार्य को पूरा या उपयोगकर्ताओं के साथ हस्तक्षेप करने के लिए दिन की आदर्श समय मिल रहा है। उस नोट पर, डेटाबेस के आकार को ड्राइव की I/O गति के साथ ध्यान में रखा जाना चाहिए - डेटाबेस बढ़ने के साथ यह तेजी से अधिक महत्वपूर्ण हो जाता है (एक अन्य कारक जो दिमाग में आता है वह ड्राइव की संख्या है, जैसा कि वैकल्पिक ड्राइव जहां डेटाबेस संग्रहीत नहीं होता है, वह सिर को पढ़ने और लिखने के लिए गति के कारण गति में वृद्धि करेगा।) इस पठनीय को रखने के लिए मैं मानता हूं कि डेटाबेस एक प्रबंधनीय आकार (100 एमबी) और काम का है पर्यावरण 9 बजे से शाम 5 बजे नौकरी है, बिना किसी वास्तविक तनाव या अन्य घंटों के चलने वाले सिस्टम।
पहला कदम रूट विशेषाधिकारों के साथ आपकी स्थानीय मशीन में लॉग इन करना होगा। एक बार रूट खोल पर, एक MySQL उपयोगकर्ता को केवल विशेषाधिकार पढ़ने के साथ बनाया जाना होगा। ऐसा करने के लिए आदेश का उपयोग MySQL खोल दर्ज करें:
mysql -uroot -ppassword
इसके बाद, एक उपयोगकर्ता केवल पढ़ने के लिए डेटाबेस का बैकअप लिया जाना चाहिए करने के लिए विशेषाधिकार के साथ बनाया जा करने की आवश्यकता होगी। इस मामले में, किसी उपयोगकर्ता को स्क्रिप्ट या प्रक्रिया का उपयोग बाद में किसी विशिष्ट डेटाबेस को असाइन करने की आवश्यकता नहीं होती है। MySQL खोल में इन आदेशों, पूर्ण पढ़ने के लिए विशेषाधिकार के साथ एक उपयोगकर्ता बनाने के लिए दर्ज करें:
grant SELECT on *.* TO [email protected] IDENTIFIED BY ' backuppassword';
FLUSH PRIVILEGES;
बनाया MySQL उपयोगकर्ता के साथ
, यह MySQL खोल से बाहर निकलने और बाहर निकलने का उपयोग कर जड़ खोल में वापस छोड़ने के लिए सुरक्षित है। यहां से, हमें स्क्रिप्ट बनाने की आवश्यकता होगी जिसे हम अपने बैकअप आदेशों को चलाने के लिए चाहते हैं, यह आसानी से बाश का उपयोग करके पूरा किया जाता है। इस स्क्रिप्ट को कहीं भी संग्रहीत किया जा सकता है, क्योंकि हम इस उदाहरण के लिए रात को स्क्रिप्ट चलाने के लिए क्रॉन नौकरी का उपयोग करेंगे, हम स्क्रिप्ट को एक नई निर्देशिका में रखेंगे जिसे हम "बैकअप स्क्रिप्ट" कहते हैं। इस निर्देशिका को बनाने के लिए, रूट कमांड पर इस कमांड का उपयोग करें:
mkdir /backupscripts
हमें स्थानीय रूप से हमारे बैकअप को स्टोर करने के लिए एक निर्देशिका बनाने की भी आवश्यकता होगी। हम इस निर्देशिका को "बैकअपॉग" नाम देंगे। जड़ खोल में इस आदेश जारी निर्देशिका बनाने के लिए:
useradd -c "backup user" -p backuppassword backupuser
:
mkdir /backuplogs
अगले कदम जड़ पहचान के साथ अपने दूरस्थ मशीन में लॉग इन करें और आदेश के साथ एक "बैकअप उपयोगकर्ता" बनाने के लिए किया जाएगा इससे पहले कि आप लॉग आउट
mkdir /backuplogs/
, आदेश का उपयोग भविष्य में संदर्भ के लिए रिमोट होस्ट का आईपी पते हड़पने:
अपने बैकअप के लिए एक निर्देशिका बनाने
ifconfig -a
eth0 वायर्ड नेटवर्क कनेक्शन के लिए मानक इंटरफ़ेस है। इस आईपी_एडीडीआर पर ध्यान दें।
अंत में, दूरस्थ सर्वर से लॉग आउट करें और अपने मूल होस्ट पर लौटें।
अगला हम उस फाइल को बनाएंगे जो हमारी मेजबान स्थानीय मशीन पर हमारी स्क्रिप्ट है, रिमोट नहीं। हम वीआईएम का उपयोग करेंगे (यदि आप नैनो या इमैक प्रशंसक हैं तो मुझे इसके खिलाफ न पकड़ें - लेकिन मैं सूची में नहीं हूं कि वीआईएम का उपयोग यहां फ़ाइल को संपादित करने के लिए कैसे करें) पहले फ़ाइल बनाएं और mysqldump का उपयोग करें , अपने डेटाबेस का बैकअप लें। डेटाबेस बनाने के बाद हम एसपीपी का उपयोग भी करेंगे, स्टोरेज के लिए अपनी फाइल को संपीड़ित करें। निर्देशों को पूरा करने के लिए फ़ाइल को STDOUT पर पढ़ें। अंत में, 7 दिनों से पुराने पुराने फ़ाइलों की जांच करें। उन्हें हटा दो। ऐसा करने के लिए, अपनी स्क्रिप्ट इस तरह दिखेगा: जगह में इस स्क्रिप्ट के साथ
vim /backupscripts/mysqldbbackup.sh
#!/bin/sh
# create a temporary file for the schema to be stored
BACKUPDIR = /backuplogs/
TMPFILE = tmpout.sql
CURRTIME = $(date +%Y%m%d).tgz
#backup your database
mysqldump -ubackupdbuser -pbackuppassword databasename > $BACKUPDIR$TMPFILE
#compress this file and store it locally with the current date
tar -zvcf /backuplogs/backupdb-$CURRTIME $BACKUPDIR$TMPFILE
#per instructions - cat the contents of the SQL file to STDOUT
cat $BACKUPDIR$TMPFILE
#cleanup script
# remove files older than 7 days old
find $BACKUPDIR -atime +7 -name 'backup-db-*.tgz' -exec rm {} \;
#remove the old backupdirectory from the remote server
ssh [email protected] find /backuplogs/ -name 'backup-db-*.tgz' -exec rm {} \;
#copy the current backup directory to the remote server using scp
scp -r /backuplogs/ [email protected]:/backuplogs/
#################
# End script
#################
, हम इतना है कि हम एक पासवर्ड हर बार हमारे स्क्रिप्ट चलाने के लिए संकेत नहीं कर रहे हैं, सेटअप ssh कुंजी की आवश्यकता होगी। हम इसे एसएसएच-कीजेन के साथ करेंगे और कमांड:
ssh-keygen -t rsa
प्रॉम्प्ट पर एक पासवर्ड दर्ज करें - इससे आपकी निजी कुंजी बनती है। इसे साझा न करें।
आपको जिस फ़ाइल को साझा करने की आवश्यकता है वह आपकी सार्वजनिक कुंजी है, यह फ़ाइल current_home/.ssh/id_rsa.pub फ़ाइल में संग्रहीत है। अगला चरण इस सार्वजनिक कुंजी को आपके रिमोट होस्ट में स्थानांतरित करना है। कुंजी का उपयोग करने के लिए कमांड प्राप्त करने के लिए:
cat current_home/.ssh/id_rsa.pub
फ़ाइल में स्ट्रिंग की प्रतिलिपि बनाएँ। अपने दूरस्थ सर्वर में अगला ssh आदेश का उपयोग:
ssh [email protected]
अपना पासवर्ड दर्ज करें और फिर फ़ाइल /.ssh/authorized_keys संपादित करें। अपनी id_rsa.pub फ़ाइल से अधिकृत_keys फ़ाइल में प्राप्त स्ट्रिंग पेस्ट करें। अपने संपादक का उपयोग कर फ़ाइल में बदलाव लिखें और फिर संपादक से बाहर निकलें। अपने रिमोट सर्वर से लॉग आउट करें और आरएसए कुंजी का परीक्षण पिछले ssh कमांड का उपयोग कर रिमोट सर्वर में लॉग इन करने का प्रयास करके किया है। यदि कोई पासवर्ड नहीं पूछा जाता है, तो यह ठीक से काम कर रहा है। रिमोट सर्वर से फिर से लॉग आउट करें।
अंतिम चीज़ जो हमें करने की आवश्यकता होगी, उपयोगकर्ताओं को लॉग इन करने के बाद हर रात इसे चलाने के लिए क्रॉन नौकरी तैयार करना है। क्रॉन्टाब का उपयोग करके, हम सभी अनुमति समस्याओं से बचने के लिए वर्तमान उपयोगकर्ता फ़ाइल (रूट) को संपादित करेंगे। * नोट - यदि डेटा, सुरक्षा भेद्यता आदि को हटाने सहित आपकी स्क्रिप्ट में त्रुटियां हैं, तो इससे गंभीर प्रभाव हो सकते हैं - अपने पूरे काम को दोबारा जांचें और सुनिश्चित करें कि आप अपने सिस्टम पर भरोसा करते हैं, यदि यह संभव नहीं है तो वैकल्पिक उपयोगकर्ता और मौजूदा सर्वर * पर अनुमतियां स्थापित की जानी चाहिए। अपने वर्तमान crontab संपादित करने के लिए हम आदेश जारी करेंगे:
crontab -e
crontab संपादक में (यह आपकी डिफ़ॉल्ट पाठ संपादक में खोल देंगे) करते हैं, हम 12 पर हर रात को चलाने के लिए हमारी स्क्रिप्ट स्थापित करने के लिए जा रहे हैं : 30am। संपादक में एक नई लाइन दर्ज करें:
30 0 * * * बैश /backupscripts/mysqldbbackup.sh
सहेजें इस फाइल और संपादक से बाहर निकलें। अपने cronjob ठीक से चलाने के लिए, हमें क्रॉन्ड सेवा को पुनरारंभ करने की आवश्यकता होगी। ऐसा करने के लिए, आदेश जारी करें:
/etc/init.d/crond restart
मुझे लगता है कि इस तरह के प्रश्न http://dba.stackexchange.com/ पर हैं, मैं इसे माइग्रेट करने के लिए आगे बढ़ूंगा लेकिन मेरे पास रिप: पी या शायद नहीं है http://www.Superuser.com लेकिन मुझे डेटाबेस के विशिष्ट होने के बाद से पूर्व पर संदेह होगा। – Jordan