Mysqldump വീണ്ടെടുക്കൽ. ഞങ്ങൾ MySQL ഡാറ്റാബേസ് ഉപേക്ഷിക്കുകയും കൺസോളിലേക്ക് ഡാറ്റ കയറ്റുമതി ചെയ്യുകയും ചെയ്യുന്നു. MySQL ഡംപ് ഫയലുകൾ കംപ്രസ് ചെയ്യുന്നു

ഒരു ഡാറ്റാബേസ് ഡമ്പ് (ബാക്കപ്പ്) ഉണ്ടാക്കുന്നത് വളരെ പ്രധാനമാണ്. അതിനാൽ ഞാൻ ഇതിന് ഉദാഹരണങ്ങൾ സഹിതം ചില അഭിപ്രായങ്ങൾ പറഞ്ഞു മികച്ച യൂട്ടിലിറ്റി mysqldump പോലെ.

mysqldump - ഒരു ഡാറ്റാബേസിന്റെ ഉള്ളടക്കം അല്ലെങ്കിൽ ഒരു കൂട്ടം ഡാറ്റാബേസുകൾ സൃഷ്ടിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു യൂട്ടിലിറ്റി ബാക്കപ്പ് കോപ്പിഅല്ലെങ്കിൽ മറ്റൊരു SQL ഡാറ്റാബേസ് സെർവറിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നു (ഒരു MySQL സെർവർ നിർബന്ധമല്ല). പട്ടികകൾ സൃഷ്‌ടിക്കാനും കൂടാതെ/അല്ലെങ്കിൽ പോപ്പുലേറ്റ് ചെയ്യാനുമുള്ള ഒരു കൂട്ടം SQL കമാൻഡുകൾ ഡമ്പിൽ അടങ്ങിയിരിക്കും.

mysqldump-u റൂട്ട് -p -f name_database >

ഈ ടീമിനൊപ്പം ഞങ്ങൾ ചെയ്യുന്നു ഡാറ്റാബേസ് ബാക്കപ്പ് mydb_backup_name_database.txt എന്ന ഫയലിൽ സി ഡ്രൈവ് ചെയ്യാൻ name_database എന്ന പേരിന് കീഴിലുള്ള ഡാറ്റ

നിങ്ങൾ ഫയൽ സൃഷ്ടിക്കേണ്ടതില്ല; MySQL അത് തന്നെ സൃഷ്ടിക്കും.

mysql-u റൂട്ട് -p -f name_database< C:\mydb_backup_name_database.txt

ഈ കമാൻഡ് ഉപയോഗിച്ച് നമ്മൾ C:\mydb_backup_name_database.txt എന്ന ഫയലിൽ നിന്ന് ബാക്കപ്പ് ഡാറ്റ ഇറക്കുമതി ചെയ്യുന്നു

കുറിപ്പ്: -f, --force എന്നത് ഒരു SQL പിശക് ലഭിച്ചാലും തുടരണമെന്ന് വ്യക്തമാക്കുന്ന ഒരു ഓപ്ഷനാണ്, അതായത്. പിശകുകൾ അവഗണിക്കുക. ഉദാഹരണത്തിന്, പട്ടികയിൽ സമാനമായ ഒരു വരി ഇതിനകം നിലവിലുണ്ടെങ്കിൽ.

ഒരു പാസ്‌വേഡ് ആവശ്യപ്പെടുന്നത് ഒഴിവാക്കാൻ, -p-ന് ശേഷം, അതായത് സ്‌പെയ്‌സുകളില്ലാതെ നിങ്ങൾ അത് എഴുതേണ്ടതുണ്ട്. പാസ്വേഡ് ആണെങ്കിൽ Pwd, അപ്പോൾ ഉദാഹരണം ഇതുപോലെ കാണപ്പെടും:

mysqldump-യു റൂട്ട് -പി Pwd-f name_database > C:\mydb_backup_name_database.txt

നിങ്ങൾ പലപ്പോഴും ഉപയോഗിക്കുകയാണെങ്കിൽ ഈ കമാൻഡ്, എങ്കിൽ ചെയ്യുന്നതാണ് നല്ലത് വ്യക്തിഗത ഉപയോക്താവ്കൂടെ ആവശ്യമായ അവകാശങ്ങൾ, റൂട്ട് പാസ്‌വേഡ് ദൃശ്യമാകാതിരിക്കാൻ

നമുക്ക് കൂടുതൽ പരിഗണിക്കാം നല്ല ക്രമീകരണങ്ങൾ mysqldump:

--ഡാറ്റാബേസുകൾക്രിയേറ്റ് ഡാറ്റാബേസ് /*!33333 ഇല്ലെങ്കിൽ*/ DBNAME, വീണ്ടെടുക്കൽ സ്ക്രിപ്റ്റിൽ DBNAME കമാൻഡുകൾ ഉപയോഗിക്കുക എന്നിവ mysqldump-നെ അനുവദിക്കുന്നു. സ്ക്രാച്ചിൽ നിന്ന് പ്രവർത്തന ഡാറ്റാബേസുകൾ സൃഷ്ടിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കും. അതായത്, --databases ഉപയോഗിക്കാതെ, ഉപയോക്താവ് ഒരൊറ്റ ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കുകയും പുനഃസ്ഥാപിച്ച ഡാറ്റ എവിടെ സ്ഥാപിക്കണമെന്ന് വ്യക്തമായി വ്യക്തമാക്കുകയും ചെയ്യുന്നു. ഡാറ്റയുടെ പൂർണ്ണമായി പ്രവർത്തിക്കുന്ന ഒരു പകർപ്പ് നിർമ്മിക്കുക എന്ന ലക്ഷ്യത്തോടെയാണ് ഒരു ബാക്കപ്പ് സൃഷ്ടിക്കപ്പെട്ടതെങ്കിൽ, ഉദാഹരണത്തിന്, മറ്റൊരു MySQL സെർവറിൽ, നിങ്ങൾ ഈ കീ ഉപയോഗിക്കേണ്ടതുണ്ട്;

--എല്ലാ ഡാറ്റാബേസുകളുംനൽകിയിരിക്കുന്ന MySQL സെർവറിൽ നിലവിലുള്ള എല്ലാ ഡാറ്റാബേസുകളുടെയും പകർപ്പുകൾ നിർമ്മിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. നിങ്ങൾക്ക് ചില ഡാറ്റാബേസുകളുടെ മാത്രം പകർപ്പുകൾ നിർമ്മിക്കണമെങ്കിൽ, കമാൻഡ് ലൈനിൽ നിന്ന് mysqldump-ലേക്ക് വിളിക്കുമ്പോൾ അവയെ ഒരു സ്‌പെയ്‌സ് ഉപയോഗിച്ച് വേർപെടുത്തിയാൽ മതി (മുകളിൽ കാണുക);

താക്കോൽ --സഹായം. mysqldump പ്രോഗ്രാമിന് നിരവധി പതിപ്പുകളുണ്ട്. ഈ കീ ഉപയോഗിച്ച് നിങ്ങളുടെ പതിപ്പ് പ്രത്യേകമായി പിന്തുണയ്ക്കുന്ന ഫീച്ചറുകൾ നിങ്ങൾക്ക് കാണാൻ കഴിയും;

--ആഡ്-ഡ്രോപ്പ്-ടേബിൾ- പട്ടികകൾ സൃഷ്‌ടിക്കുന്നതിന് മുമ്പ് തത്ഫലമായുണ്ടാകുന്ന സ്‌ക്രിപ്റ്റിലേക്ക് ഒരു ഡ്രോപ്പ് ടേബിൾ കമാൻഡ് ചേർക്കാൻ mysqldump-നെ നിർബന്ധിക്കുന്ന ഒരു സ്വിച്ച്. ഒരു ബാക്കപ്പിൽ നിന്ന് ഒരു ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കുമ്പോൾ ചില പിശകുകൾ ഒഴിവാക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കും. തീർച്ചയായും, പ്രവർത്തന പകർപ്പിൽ സ്ഥിതി ചെയ്യുന്ന പട്ടികകൾ (ബാക്കപ്പിൽ അതേ പേരിലുള്ള പട്ടികകൾ നിലവിലുണ്ടെങ്കിൽ) പ്രധാന ഡാറ്റാബേസിൽ നിന്ന് ഇല്ലാതാക്കുകയും ബാക്കപ്പിൽ നിന്ന് പുനഃസ്ഥാപിക്കുന്നതിന് മുമ്പ് ബാക്കപ്പിൽ നിന്ന് പുനഃസൃഷ്ടിക്കുകയും ചെയ്യുമെന്ന് നിങ്ങൾ കണക്കിലെടുക്കേണ്ടതുണ്ട്;

--ഡാറ്റാ ഇല്ല. ഈ കീ ഉപയോഗിച്ച്, ഡാറ്റ ഇല്ലാതെ തന്നെ നിങ്ങൾക്ക് പട്ടികയുടെ/ഡാറ്റാബേസ് ഘടനയുടെ ഒരു പകർപ്പ് വേഗത്തിൽ നിർമ്മിക്കാൻ കഴിയും. ഉദാഹരണത്തിന്, നിങ്ങൾ ഒരു സങ്കീർണ്ണമായ പട്ടിക സൃഷ്ടിച്ചു, ഭാവിയിൽ അതിന്റെ ഘടന സംരക്ഷിക്കാൻ ആഗ്രഹിക്കുന്നു, എന്നാൽ ഒരു ബാക്കപ്പ് പകർപ്പിൽ ഈ പട്ടികയിലുള്ള ഡാറ്റ തന്നെ നിങ്ങൾക്ക് ആവശ്യമില്ല;

--ഫല-ഫയൽ=...- ഈ സ്വിച്ച് ഒരു ഫയലിലേക്ക് ഔട്ട്പുട്ട് റീഡയറക്ട് ചെയ്യാൻ ഉപയോഗിക്കാം. ">" കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് സാധാരണ Unix റീഡയറക്ഷൻ ഉപയോഗിക്കാം, അല്ലെങ്കിൽ നിങ്ങൾക്ക് ഈ കീ ഉപയോഗിക്കാം. ആർക്ക് എന്ത് ഇഷ്ടമാണ്;

മറ്റൊന്ന് വളരെ സഹായകരമായ ഉപദേശംഒരു ഹോസ്റ്റിംഗ് പരിതസ്ഥിതിയിൽ mysqldump ഉപയോഗിക്കുമ്പോൾ. ചട്ടം പോലെ, ഹോസ്റ്റിംഗ് ഉപയോഗിക്കുമ്പോൾ, ഉപയോക്താവിന് ചില നിയന്ത്രണങ്ങൾ ഏർപ്പെടുത്തുന്നു. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഒരു നിശ്ചിത തുകയിൽ കൂടുതൽ കടം വാങ്ങാൻ കഴിയില്ല ശാരീരിക മെമ്മറി(റാം, റാം). mysqldump സ്ഥിരസ്ഥിതിയായി MySQL സെർവറിൽ നിന്ന് ലഭിച്ച എല്ലാ ഡാറ്റയും മെമ്മറിയിലേക്ക് ഇടുന്നു, തുടർന്ന് അതെല്ലാം ഡിസ്കിലേക്ക് എഴുതുന്നു. അതനുസരിച്ച്, ദാതാവ് നിങ്ങളെ കടം വാങ്ങാൻ അനുവദിക്കുകയാണെങ്കിൽ, ഉദാഹരണത്തിന്, 30 MB മെമ്മറി, കൂടാതെ നിങ്ങൾ mysqldump ഉപയോഗിച്ച് പകർത്തുന്ന ഡാറ്റാബേസ്, 50 MB ഉൾക്കൊള്ളുന്നു, തീർച്ചയായും, ഇവിടെ ഒരു പിശക് സംഭവിക്കും - mysqldump ന് ശരിയായി പ്രവർത്തിക്കാൻ കഴിയില്ല. തകരുകയും ചെയ്യും, അത് നിങ്ങളെ അറിയിക്കും. മെമ്മറിയിൽ താൽക്കാലികമായിപ്പോലും ഡാറ്റ സംഭരിക്കുന്നതിനുപകരം, നേരിട്ട് ഡിസ്കിലേക്ക് ഡാറ്റ എഴുതാൻ mysqldump-നെ നിർബന്ധിക്കാൻ, കീ ഉപയോഗിക്കുക --വേഗം. ഇത് പ്രശ്നം പരിഹരിക്കും.

കുറച്ച് കൂടുതൽ ഉപയോഗപ്രദമായ ഉദാഹരണങ്ങൾ ഇതാ:

mysqldump -u റൂട്ട് -p Pwd-f --default-character-set=cp1251 DBNAME| gzip -c > filename.txt .gz

കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് അത്തരമൊരു ആർക്കൈവ് അൺപാക്ക് ചെയ്യാം:

gunzip filename.txt.gz

ഏത് തീയതിയാണ് ബാക്കപ്പ് നിർമ്മിച്ചതെന്ന് അറിയാൻ, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന കമാൻഡ് എഴുതാം:

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `തീയതി "+%Y-%m-%d"`.gz

വ്യത്യസ്ത എൻകോഡിംഗുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഡംപുകൾ നിർമ്മിക്കണമെങ്കിൽ, വേരിയബിളുകൾ ഉപയോഗിക്കുന്നത് സൗകര്യപ്രദമാണ്:

സെറ്റ് DBCHARACTER= utf8

സെറ്റ് DBNAME= ലംഘനം

mysqldump -u റൂട്ട് -p Pwd-f --default-character-set=$ DBCHARACTER $DBNAME| bzip2 -c > sql. $DBNAME.`തീയതി "+%Y-%m-%d"`.bz2

പഴയ ആർക്കൈവുകൾ നീക്കംചെയ്യുന്നത് നിങ്ങൾക്ക് ഓട്ടോമേറ്റ് ചെയ്യണമെങ്കിൽ, ക്രോൺ ഉപയോഗിച്ച് ശ്രമിക്കുക കമാൻഡ് കണ്ടെത്തുക, ഇത് സാധാരണയായി യുണിക്സിൽ കാണപ്പെടുന്നു. ഇടയ്ക്കിടെ ഓടുന്നു

കണ്ടെത്തുക~/directory-with-archives -name "*.gz" -mtime +7 -exec rm -f () \;

അങ്ങനെ, ഏഴ് ദിവസത്തേക്കാൾ "പഴയ" ആർക്കൈവുകൾ നിങ്ങൾ ഇല്ലാതാക്കും.

നിങ്ങൾക്ക് ഒന്നിലധികം തവണ ഡാറ്റാബേസ് ഡംപുകൾ ഇറക്കുമതി ചെയ്യേണ്ടി വന്നിട്ടുണ്ടാകും. ഈ ടാസ്ക്കിന്റെ നിസ്സാരത ഉണ്ടായിരുന്നിട്ടും, ഇതുമായി ബന്ധപ്പെട്ട ചോദ്യങ്ങളും ചിലപ്പോൾ പ്രശ്നങ്ങളും പലപ്പോഴും ഉയർന്നുവരുന്നു. കമാൻഡ് ലൈനിൽ നിന്ന് ഒരു ഡാറ്റാബേസ് ഡംപ് വേഗത്തിൽ പ്രയോഗിക്കുന്നതിന് ആവശ്യമായ എല്ലാ കോഡുകളും ചുവടെയുണ്ട്.

പേരുകൾ സജ്ജീകരിക്കുക utf8; ഡ്രോപ്പ് ഡാറ്റാബേസ് `mydb`; ഡാറ്റാബേസ് സൃഷ്‌ടിക്കുക `mydb` ഡിഫോൾട്ട് ക്യാരക്ടർ സെറ്റ് utf8; `mydb` ഉപയോഗിക്കുക; സെറ്റ് SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; സെറ്റ് ഓട്ടോകമ്മിറ്റ്=0; SET Foreign_key_checks=0; SET unique_checks=0; ഉറവിടം /path/to/db_dump.sql; കമ്മിറ്റ്; സെറ്റ് ഓട്ടോകമ്മിറ്റ്=1; SET വിദേശ_കീ_ചെക്കുകൾ=1; SET തനത്_ചെക്കുകൾ=1;

ഒരു ഡാറ്റാബേസ് ഡംപ് വേഗത്തിൽ ഇറക്കുമതി ചെയ്യാനും പ്രശ്നങ്ങൾ ഒഴിവാക്കാനും ഈ കമാൻഡുകൾ നിങ്ങളെ അനുവദിക്കും. മാത്രമല്ല, ഈ പ്രശ്നങ്ങളിൽ ചിലത് phpMyAdmin പോലുള്ള സാധാരണ mysql ക്ലയന്റുകൾ പോലും പരിഹരിക്കപ്പെടുന്നില്ല.

നമുക്ക് അത് മനസിലാക്കാൻ ശ്രമിക്കാം ഈ കോഡ്ക്രമത്തിൽ.

പേരുകൾ സജ്ജീകരിക്കുക utf8; UTF-8 എൻകോഡിംഗിൽ ഡാറ്റാ കൈമാറ്റം നടക്കുമെന്നും അവിടെയാണ് അത് സ്ഥിതി ചെയ്യുന്നതെന്നും പറയുന്നു യഥാർത്ഥ ഫയൽഡാറ്റാബേസ് ഡംപ്, ഇതാണ് അന്തിമ ഡാറ്റാബേസിന് ഉണ്ടായിരിക്കുക.

ഡ്രോപ്പ് ഡാറ്റാബേസ് `mydb`;ഒപ്പം ഡാറ്റാബേസ് സൃഷ്‌ടിക്കുക `mydb` ഡിഫോൾട്ട് ക്യാരക്ടർ സെറ്റ് utf8;നിർവഹിക്കുക നാശം UTF-8 എന്ന ഡിഫോൾട്ട് എൻകോഡിംഗ് ഉപയോഗിച്ച് ഡാറ്റാബേസും അതിന്റെ തുടർന്നുള്ള സൃഷ്ടിയും. ഇത് അവയിലെ എല്ലാ പട്ടികകളും ഡാറ്റയും മായ്‌ക്കുമെന്ന് വ്യക്തമാണ്, എന്നാൽ തത്ഫലമായുണ്ടാകുന്ന ഡാറ്റാബേസ് ഡംപ് ഫയലിലെ ഡാറ്റയുമായി പൂർണ്ണമായും പൊരുത്തപ്പെടുമെന്ന് ഇത് ഞങ്ങൾക്ക് ആത്മവിശ്വാസം നൽകും.

`mydb` ഉപയോഗിക്കുക;ഡംപ് ഫയലിൽ നിന്നുള്ള എല്ലാ കമാൻഡുകൾക്കും ഈ പ്രത്യേക ഡാറ്റാബേസ് ഉപയോഗിക്കണമെന്ന് സൂചിപ്പിക്കുന്നു (ആശയക്കുഴപ്പം ഒഴിവാക്കുന്നതിനായി മറ്റൊരു ഡാറ്റാബേസിനെ സൂചിപ്പിക്കുന്ന ഈ നിർദ്ദേശത്തിന്റെ സാന്നിധ്യത്തിനായി ഡംപ് ഫയൽ പരിശോധിക്കുക).

സെറ്റ് SQL_MODE="NO_AUTO_VALUE_ON_ZERO";ഓട്ടോ ഇൻക്രിമെന്റ് ഫീൽഡിലേക്ക് മൂല്യം 0 എഴുതുമ്പോൾ യാന്ത്രിക-വർദ്ധന കൌണ്ടർ വർദ്ധിപ്പിക്കുന്നത് പ്രവർത്തനരഹിതമാക്കുന്നു. ഡിഫോൾട്ടായി, അത്തരം ഒരു ഫീൽഡിലേക്ക് എഴുതുമ്പോൾ NULL മൂല്യങ്ങൾഅല്ലെങ്കിൽ 0 അത് യാന്ത്രികമായി വർദ്ധിപ്പിക്കും. ഒരു ഓട്ടോ-ഇൻക്രിമെന്റൽ ഫീൽഡിൽ 0 എന്ന മൂല്യമുണ്ടെങ്കിലും അങ്ങനെയല്ല മികച്ച പരിശീലനം, ചിലപ്പോഴൊക്കെ ഡമ്പിൽ അത്തരം ലൈനുകൾ ഉണ്ടെന്ന് ഇപ്പോഴും സംഭവിക്കുന്നു (Magento-യിൽ നിന്നുള്ള ഒരു ഡമ്പിൽ സമാനമായ ഒന്ന് ഞാൻ നേരിട്ടു). കുറച്ചുകാലമായി mysqldump ഉൾപ്പെടുത്തിയിരിക്കുന്നതും മാറ്റിസ്ഥാപിക്കുന്നത് മൂല്യവത്താണ് ഈ നിർദ്ദേശംഅവരുടെ ഡംപുകളിൽ സ്ഥിരസ്ഥിതിയായി.

സെറ്റ് ഓട്ടോകമ്മിറ്റ്=0;ഡംപ് അപ്‌ലോഡ് ചെയ്യുന്നതിന് മുമ്പ് ഒപ്പം കമ്മിറ്റ്;അതിനു ശേഷം, InnoDB ടേബിളുകൾക്കായുള്ള INSERT-കളുടെ നിർവ്വഹണം അവർ വേഗത്തിലാക്കുന്നു, കാരണം ഓട്ടോ-കമ്മിറ്റ് മോഡ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഓരോ INSERT-ലും ലോഗുകൾ ഡിസ്കിലേക്ക് സംരക്ഷിക്കപ്പെടും. വലിയ ഡമ്പുകൾ ഉരുട്ടുമ്പോൾ സഹായിക്കും.

SET Foreign_key_checks=0;ഏറ്റവും വ്യക്തമായ ഓപ്ഷൻ, ഇത് കൂടാതെ മിക്ക ഡമ്പുകളും പ്രയോഗിക്കാൻ കഴിയില്ല. വൃത്താകൃതിയിലുള്ള റഫറൻസുകൾ ഉൾപ്പെടെ ഏത് ക്രമത്തിലും ഡാറ്റ എഴുതാൻ അനുവദിക്കുന്ന വിദേശ കീ പരിശോധനകൾ പ്രവർത്തനരഹിതമാക്കുന്നു വിദേശ കീകൾ. ഈ ഓപ്ഷൻ ഡംപ് ഇറക്കുമതി വേഗത്തിലാക്കുന്നു.

SET unique_checks=0;ദ്വിതീയ കീകൾക്കായുള്ള അദ്വിതീയ പരിശോധന പ്രവർത്തനരഹിതമാക്കുന്നു, അത് വീണ്ടും ഇറക്കുമതി പ്രക്രിയ വേഗത്തിലാക്കും.

ഒടുവിൽ, ഇതെല്ലാം ആസൂത്രണം ചെയ്ത പ്രധാന ടീം - ഉറവിടം /path/to/db_dump.sql;നേരിട്ട് mysql ഡാറ്റാബേസ് ഡംപ് ഇറക്കുമതി ചെയ്യുന്നു വ്യക്തമാക്കിയ ഫയൽ. ഫയലിലേക്കുള്ള പാത നിങ്ങൾ mysql കൺസോൾ ആക്‌സസ് ചെയ്‌ത ഡയറക്‌ടറിയുമായി കേവലമോ ആപേക്ഷികമോ ആകാം.

ഇറക്കുമതി പൂർത്തിയായ ശേഷം, ഞങ്ങൾ ഫ്ലാഗുകളുടെ മൂല്യം പുനഃസ്ഥാപിക്കുന്നു, ഇത് ചെയ്യേണ്ടതില്ലെങ്കിലും, കമാൻഡ് കാരണം സെറ്റ് mysql-ൽ, സ്ഥിരസ്ഥിതിയായി, നിലവിലെ സെഷന്റെ സന്ദർഭത്തിൽ മാത്രം വേരിയബിളുകളുടെ മൂല്യങ്ങൾ മാറ്റുന്നു.

ഇത് വിചിത്രമാണ്, പക്ഷേ ഇന്റർനെറ്റിൽ ഈ വിവരങ്ങൾ കണ്ടെത്തുന്നത് വളരെ ബുദ്ധിമുട്ടാണ്. ഒരു കൂട്ടം തെറ്റായ ശുപാർശകൾ. എന്നാൽ വാസ്തവത്തിൽ, എല്ലാം ലളിതമാണ്. കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഡംപ് പുനഃസ്ഥാപിക്കാം:

# mysql-u -p< mysql_dump.sql.

പകരം, ഉപയോക്തൃനാമം മാറ്റിസ്ഥാപിക്കുക, ഞാൻ വ്യക്തിപരമായി റൂട്ടിൽ നിന്ന് വീണ്ടെടുക്കൽ നടത്തുന്നു. mysql_dump-ൽ, sql, യഥാർത്ഥത്തിൽ, ഡംപ് നിർമ്മിച്ചിരിക്കുന്നു mysqldumpയൂട്ടിലിറ്റി. -p ഓപ്ഷൻ ഒരു പാസ്‌വേഡ് ഉള്ള അംഗീകാരത്തെ സൂചിപ്പിക്കുന്നു; എന്റർ അമർത്തിയാൽ നിങ്ങളോട് ഒരു പാസ്‌വേഡ് ആവശ്യപ്പെടും. യഥാർത്ഥത്തിൽ അത്രമാത്രം. കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു ഡംപ് ഉണ്ടാക്കാം:

# mysqldump-u റൂട്ട് -p -f database_name > file_with_dump.sql

ഇവിടെ -f database_name പരാമീറ്റർ നമ്മൾ സേവ് ചെയ്യുന്ന ഡാറ്റാബേസിന്റെ പേര് വ്യക്തമാക്കുന്നു. നിങ്ങൾക്ക് എല്ലാം വേണമെങ്കിൽ, ഞങ്ങൾ അത് മാറ്റിസ്ഥാപിക്കും --എല്ലാ ഡാറ്റാബേസുകളും.സെർവറിൽ എല്ലാ ഡാറ്റാബേസുകളും സംരക്ഷിക്കുന്നത് ഈ ഓപ്ഷൻ സൂചിപ്പിക്കും. ഓരോ തവണയും പാസ്‌വേഡ് നൽകാതിരിക്കാൻ, നിങ്ങൾക്ക് അത് നേരിട്ട് കമാൻഡിൽ വ്യക്തമാക്കാൻ കഴിയും (നിങ്ങൾ ഒരു സ്‌ക്രിപ്റ്റിൽ നിന്ന് ക്രോൺ ഡംപ് ചെയ്യുകയാണെങ്കിൽ ഇത് ആവശ്യമാണ്), എന്നിരുന്നാലും, സുരക്ഷാ വീക്ഷണകോണിൽ നിന്ന്, ഇവിടെ ചോദ്യങ്ങൾ ഉയർന്നുവരുന്നു, പ്രത്യേകിച്ചും പാസ്‌വേഡ് പേശികളുടെ റൂട്ട് ആണ്. ഇപ്പോൾ, പേശികൾക്ക് മാത്രം md5 പാസ്‌വേഡുകളെങ്കിലും മനസ്സിലായെങ്കിൽ ... എന്നിരുന്നാലും, ഇത് അദ്ദേഹത്തിന് മനസ്സിലാകാത്ത ഒരു വസ്തുതയല്ല, എനിക്ക് ഒരുപക്ഷേ എനിക്കറിയില്ല :)

രചയിതാവ്

അലക്സ് റസ്ഗിബലോവ്

ഒരു ഭ്രാന്തൻ, അനിശ്ചിതകാല പ്രായം, പീഡനത്തിന്റെ വ്യാമോഹം ആസ്വദിക്കുന്നു. രോഗശാസ്ത്രപരമായി അവിശ്വാസം, സ്വാർത്ഥത, സ്വേച്ഛാധിപത്യം. ദ്വിതീയ രോഗനിർണയം - പ്രോഗ്രാമറും സഹായിയും. ഉടമസ്ഥനായിരിക്കുക ആംഗലേയ ഭാഷവൃത്തികെട്ട സംഭാഷണ തലത്തിൽ. മറ്റ് ചില ഭാഷകളും പരിചിതമാണ്. അവൻ എല്ലാവരിലും എല്ലാത്തിലും താൽപ്പര്യമുള്ളവനാണ്, അതിനാൽ ഏത് മേഖലയിലും അവന്റെ അറിവ് ഉപരിപ്ലവവും ആഴം കുറഞ്ഞതുമാണ്. സ്വഭാവം നിയന്ത്രണാതീതമാണ്. ശക്തി - 55 ഡിഗ്രി.

ഡാറ്റാബേസ് ഉപേക്ഷിക്കുകയും പുനഃസ്ഥാപിക്കുകയും ചെയ്യുക MySQL ഡാറ്റ SSH വഴിയോ സെർവർ കൺസോൾ വഴിയോ വിദൂരമായി ചെയ്യുന്നത് വളരെ ലളിതവും സൗകര്യപ്രദവുമാണ്. വിദൂരമായി, പുട്ടി/കിറ്റി പ്രോഗ്രാമുകൾ ഉപയോഗിച്ച് ഇത് ചെയ്യാൻ കഴിയും. പ്രവർത്തിപ്പിക്കുന്നതിലൂടെ നിങ്ങൾക്ക് വിൻഡോസിൽ ചുവടെയുള്ള ഉദാഹരണങ്ങൾ പ്രവർത്തിപ്പിക്കാനും കഴിയും കമാൻഡ് ലൈൻcmd‘. MySQL ഡാറ്റാബേസ് ഡംപുകൾ എങ്ങനെ സൃഷ്ടിക്കാം എന്നതിന്റെ ഉദാഹരണങ്ങൾ ചുവടെയുണ്ട്, തുടർന്ന് ആവശ്യമെങ്കിൽ അവ പുനഃസ്ഥാപിക്കാം, ഉദാഹരണത്തിന് നിങ്ങളുടെ വെബ്സൈറ്റ്, ഓൺലൈൻ സ്റ്റോർ അല്ലെങ്കിൽ മറ്റേതെങ്കിലും പ്രോജക്റ്റ്.

ഒരു MySQL ഡാറ്റാബേസ് ഡമ്പ് സൃഷ്ടിക്കുന്നു

ഈ കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യുന്നതിനായി, മുകളിൽ ലിസ്റ്റുചെയ്തിരിക്കുന്ന പ്രോഗ്രാമുകളിലൊന്ന് ഉപയോഗിച്ച് SSH വഴി നിങ്ങളുടെ സെർവറിലേക്ക് വിദൂരമായി ബന്ധിപ്പിക്കുക. സെർവർ/ഹോസ്‌റ്റിംഗുമായി ബന്ധിപ്പിച്ച് അംഗീകാരം നൽകിയ ശേഷം, നിങ്ങൾക്ക് താഴെയുള്ള കമാൻഡുകൾ നൽകാം.

# mysqldump -uroot -p your_base > dump_file.sql # ഓൺ-ലേക്ക് ഒരു ഡാറ്റാബേസ് ഡംപ്_ഫൈൽ. വിൻഡോസ് ഡംപ്"\r\n" എന്ന പുതിയ ലൈൻ പ്രതീകങ്ങൾ "\n" mysqldump -uroot -p your_base -r dump_file_utf8.sql എന്നതിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതുമൂലം ഡംപ് ലൈനുകളുടെ # ആകസ്മികമായ ഓവർറൈറ്റിംഗ് തടയുന്ന അൽപ്പം വ്യത്യസ്തമായ ഒരു കമാൻഡ് സൃഷ്ടിക്കുന്നതാണ് നല്ലത്. വ്യക്തിഗത പട്ടികകളുടെ മാത്രം , മുഴുവൻ ഡാറ്റാബേസ് അല്ല # (ഡാറ്റാബേസ് നാമത്തിന് ശേഷം ഒരു സ്പേസ് കൊണ്ട് വേർതിരിച്ച പട്ടികയുടെ പേരുകൾ വ്യക്തമാക്കുക) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # നിങ്ങൾക്ക് ഡാറ്റാബേസിന്റെ മാത്രം ബാക്കപ്പ് സൃഷ്ടിക്കണമെങ്കിൽ ഡാറ്റ ഇല്ലാതെ തന്നെ ഘടന mysqldump -uroot -p -- no-data your_base > dump_file.sql # എല്ലാ ഡാറ്റാബേസുകളും current_date.gz ഫയലിലേക്ക് ബാക്കപ്പ് ചെയ്യുക mysqldump -uroot -p --all_databases | gzip -c > "date "+%Y-%m-%d"".gz # ബാക്കപ്പ്, ഇവിടെ ഓരോ റെക്കോർഡിനും ഒരു പ്രത്യേക ഇൻസേർട്ട് സൃഷ്‌ടിക്കുന്നു # കൂടാതെ ഡാറ്റാബേസ് എൻകോഡിംഗ് UTF-8 mysqldump -uroot -p. --default- character-set=utf8 your_base --extended-insert=തെറ്റ് | gzip -c > "തീയതി "+%Y-%m-%d"".gz

# dump_file.sql-ലേക്ക് ഒരു ഡാറ്റാബേസ് ബാക്കപ്പ് ചെയ്യുക

mysqldump - uroot - p your_base > dump_file . sql

# വിൻഡോസിൽ തടയുന്ന അല്പം വ്യത്യസ്തമായ കമാൻഡ് ഉപയോഗിച്ച് ഒരു ഡംപ് സൃഷ്ടിക്കുന്നതാണ് നല്ലത്

# "\r\n" എന്ന പുതിയ ലൈൻ പ്രതീകങ്ങൾ "\n" ആയി പരിവർത്തനം ചെയ്യുന്നതിനാൽ ഡംപ് ലൈനുകളുടെ ക്രമരഹിതമായ ഓവർറൈറ്റിംഗ്

mysqldump - uroot - p your_base - r dump_file_utf8 . sql

# നിങ്ങൾക്ക് വ്യക്തിഗത പട്ടികകളുടെ മാത്രം ബാക്കപ്പ് ആവശ്യമുണ്ടെങ്കിൽ, മുഴുവൻ ഡാറ്റാബേസും അല്ല

# (ഡാറ്റാബേസ് പേരിന് ശേഷം ഒരു സ്പേസ് കൊണ്ട് വേർതിരിച്ച പട്ടികയുടെ പേരുകൾ സൂചിപ്പിക്കുക)

mysqldump - uroot - p your_base TABLE1 TABLE2 TABLE3 > dump_file . sql

# നിങ്ങൾക്ക് ഡാറ്റ ഇല്ലാതെ ഡാറ്റാബേസ് ഘടന മാത്രം ബാക്കപ്പ് ചെയ്യണമെങ്കിൽ

mysqldump - uroot - p -- no - data your_base > dump_file . sql

# current_date.gz ഫയലിലേക്ക് എല്ലാ ഡാറ്റാബേസുകളും ബാക്കപ്പ് ചെയ്യുക

mysqldump - uroot - p -- all_databases | gzip - c > "തീയതി "+%Y-%m-%d"" . gz

# ബാക്കപ്പ്, ഓരോ എൻട്രിക്കും പ്രത്യേകം ഇൻസേർട്ട് സൃഷ്‌ടിക്കുന്നു

# കൂടാതെ ഡാറ്റാബേസ് എൻകോഡിംഗ് UTF-8 വ്യക്തമായി വ്യക്തമാക്കുന്നു

mysqldump - uroot - p -- default - character - set = utf8 your_base -- extended - insert = FALSE | gzip - c > "തീയതി "+%Y-%m-%d"" . gz

മുകളിലുള്ള ഉദാഹരണത്തിൽ, ഒരു ബാക്കപ്പ് സൃഷ്ടിക്കാൻ യൂട്ടിലിറ്റി ഉപയോഗിക്കുന്നു mysqldump, ഇത് mysql-ൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഒരു ഡാറ്റാബേസ് ബാക്കപ്പ് സൃഷ്ടിക്കുന്നതിനുള്ള പാരാമീറ്ററുകൾ ഇനിപ്പറയുന്നവയാണ്, അത് ഞങ്ങൾ കൂടുതൽ വിശദമായി പരിശോധിക്കും:

  • -യു- ഡാറ്റാബേസിലേക്ക് കണക്റ്റുചെയ്യാൻ ഉപയോഗിക്കുന്ന ലോഗിൻ പാരാമീറ്റർ വ്യക്തമാക്കുന്നു. ഉദാഹരണത്തിൽ, ഞങ്ങൾ റൂട്ട് ലോഗിൻ ഉപയോഗിക്കുന്നു, അത് ഈ പരാമീറ്ററിൽ സ്പേസ് ഇല്ലാതെ വ്യക്തമാക്കണം! തൽഫലമായി, ഇത് -uroot പോലെ കാണപ്പെടുന്നു
  • -പി- നിർദ്ദിഷ്ട ലോഗിൻ ചെയ്യുന്നതിന് നിങ്ങൾ ഒരു പാസ്‌വേഡ് നൽകേണ്ടതുണ്ടെന്ന് പരാമീറ്റർ സൂചിപ്പിക്കുന്നു. ഞങ്ങൾ അത് ശൂന്യമായി ഉപേക്ഷിച്ചു, അതിന്റെ ഫലമായി കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ "Enter" അമർത്തിയാൽ പാസ്വേഡ് നൽകേണ്ടതുണ്ട്. എന്നിരുന്നാലും, ലോഗിൻ പാരാമീറ്ററിലെന്നപോലെ, -p ന് ശേഷമുള്ള സ്ഥലമില്ലാതെ നിങ്ങൾക്ക് ഇവിടെ തന്നെ പാസ്‌വേഡ് വ്യക്തമാക്കാൻ കഴിയും, എന്നിരുന്നാലും, ഈ രീതി സുരക്ഷിതമല്ല, കാരണം കൺസോൾ നിങ്ങളുടെ കമാൻഡുകൾ ഒരു ലോഗ് ഫയലിലേക്ക് സംരക്ഷിക്കുന്നു, നിങ്ങൾ ഇത് പതിവായി മായ്‌ക്കുന്നില്ലെങ്കിൽ, ഒരു ആക്രമണകാരി അത് കണ്ടേക്കാം.
  • നിങ്ങളുടെ_അടിസ്ഥാനം- ഉദാഹരണത്തിലെ ഈ വരിക്ക് പകരം, നിങ്ങൾ ഒരു ബാക്കപ്പ് സൃഷ്ടിക്കുന്ന നിങ്ങളുടെ ഡാറ്റാബേസിന്റെ യഥാർത്ഥ പേര് സൂചിപ്പിക്കേണ്ടതുണ്ട്.
  • > - പ്രവർത്തനത്തിന്റെ ദിശ കാണിക്കുന്ന ഒരു ഓപ്പറേറ്റർ, അതായത്. നിങ്ങൾ ഡാറ്റാബേസിൽ നിന്ന് ഒരു ഫയലിലേക്ക് എഴുതാൻ പോകുന്നുവെന്ന് സൂചിപ്പിക്കുന്നതുപോലെ.
  • dump_file.sql– ഇതാണ് നിങ്ങളുടെ ഡാറ്റാബേസ് സംരക്ഷിക്കേണ്ട നിങ്ങളുടെ .slq ഫയലിന്റെ പേര്. '>' ഓപ്പറേറ്ററിന് ശേഷം ഒരു സ്പേസ് ഉപയോഗിച്ച് ഇത് സൂചിപ്പിച്ചിരിക്കുന്നു. നിങ്ങൾക്ക് മറ്റേതെങ്കിലും പേര് വ്യക്തമാക്കാം. ഉദാഹരണത്തിന്, പേരിൽ സിസ്റ്റം സ്വയമേവ ചേർക്കുന്നു വര്ത്തമാന കാലം, ഇതുപോലുള്ള ഒരു വരി വ്യക്തമാക്കുക:

    "തീയതി "+%Y-%m-%d""

    "തീയതി "+%Y-%m-%d""


    ഉദാഹരണത്തിലെ ഈ വരിക്ക് ശേഷം ഫയൽ എക്സ്റ്റൻഷൻ സൂചിപ്പിച്ചിരിക്കുന്നു ' .gz‘. തൽഫലമായി, ഇതുപോലുള്ള ഒരു ഫയൽ ' 2014-11-15.gz‘.

    ശ്രദ്ധ!നിങ്ങൾ ഫയലിന്റെ പേര് മാത്രം വ്യക്തമാക്കിയാൽ, നിങ്ങൾ ഈ കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്ന അതേ ഡയറക്ടറിയിൽ അത് സംരക്ഷിക്കപ്പെടും. ആ. കമാൻഡ് പ്രോംപ്റ്റിൽ ഇതുപോലെ എന്തെങ്കിലും കണ്ടാൽ # , എവിടെ റൂട്ട്@ഡിവിഎസ്ഇതാണ് ലോഗിൻ, സെർവർ നാമം, ഫയൽ ഡയറക്ടറിയിൽ സൃഷ്ടിക്കപ്പെടും /വീട്. ഫയൽ സംരക്ഷിക്കുന്നത് മറ്റൊരു പാതയിലേക്ക് മാറ്റുന്നതിന്, പേരിന് പകരം വ്യക്തമാക്കുക മുഴുവൻ പാതഒരു ഫയൽ സംരക്ഷിക്കാൻ, ഉദാഹരണത്തിന്: /var/www/backup/dump_file.sql.

  • രണ്ടാമത്തെ ഉദാഹരണത്തിൽ, ഓപ്പറേറ്ററിന് പകരം ' > 'ഓപ്പറേറ്റർ' ഉപയോഗിക്കുന്നു | ', ഇത് നിർവഹിക്കേണ്ടതിന്റെ ആവശ്യകതയെ സൂചിപ്പിക്കുന്നു അധിക കമാൻഡ്പാരാമീറ്റർ ഉപയോഗിച്ച് gzip ' -സി' ഇത് ഉടൻ തന്നെ ഒരു ആർക്കൈവിലേക്ക് ഡംപ് പാക്ക് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു, അതിനുശേഷം മാത്രമേ അത് ' പോലെയുള്ള ഒരു ഫയലിലേക്ക് സംരക്ഷിക്കൂ. 2014-11-15.gz', ഓപ്പറേറ്റർ റിപ്പോർട്ട് ചെയ്തതുപോലെ' > ‘.
  • പരാമീറ്റർ -ഡാറ്റാ ഇല്ലഡാറ്റ ഇല്ലാതെ ഡാറ്റാബേസ് ഘടന മാത്രം ഡംപ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. ഡാറ്റ ആവശ്യമില്ലാത്ത ചില സന്ദർഭങ്ങളിൽ വളരെ ഉപയോഗപ്രദമാണ്.
  • ഓപ്ഷനുകൾ –default-character-set=utf8ഒപ്പം –extended-insert=FALSE. ഈ ഡാറ്റാബേസ് ഉപയോഗിക്കുന്ന എൻകോഡിംഗ് വ്യക്തമായി വ്യക്തമാക്കാൻ ആദ്യത്തേത് നിങ്ങളെ അനുവദിക്കുന്നു, അതുവഴി തെറ്റായ എൻകോഡിംഗിൽ ഡാറ്റാബേസ് സംരക്ഷിക്കുന്നത് ഒഴിവാക്കുന്നു. utf8-ന് പകരം നിങ്ങൾക്ക് മറ്റേതെങ്കിലും എൻകോഡിംഗ് വ്യക്തമാക്കാം, ഉദാഹരണത്തിന് cp1251. കയറ്റുമതി ചെയ്യുമ്പോൾ ഓരോ റെക്കോർഡിനും ഒരു പ്രത്യേക INSERT കമാൻഡ് സൃഷ്ടിക്കേണ്ടതുണ്ടെന്ന് വ്യക്തമാക്കാൻ രണ്ടാമത്തെ പാരാമീറ്റർ നിങ്ങളെ അനുവദിക്കുന്നു. ചില സന്ദർഭങ്ങളിൽ, ഒരു ഡമ്പിൽ നിന്നുള്ള ഡാറ്റ ഭാഗികമായി പുനഃസ്ഥാപിക്കുമ്പോൾ ഇത് ആവശ്യമായി വന്നേക്കാം.
  • ഒരു MySQL ഡംപ് ഫയലിൽ നിന്ന് ഒരു ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കുന്നു

    ഇപ്പോൾ ഒരു ഡംപ് ഫയലിൽ നിന്ന് ഒരു ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കുന്നതിനുള്ള വിപരീത പ്രക്രിയ നോക്കാം. ഈ നടപടി mysql പ്രോഗ്രാം ഉപയോഗിച്ചാണ് നടപ്പിലാക്കിയത്. നമുക്ക് ഉടനടി ഒരു ഉദാഹരണം നോക്കാം.