Ինչպես ստեղծել պահուստային պատճեն և վերականգնել MySQL տվյալների բազան
Եթե դուք պահում եք տվյալներ MySQL տվյալների բազայում և կարևոր է, որ դրանք չկորցնեք, ապա պետք է կանոնավորապես կատարեք բեկապներ: Այս հոդվածը կսովորեցնի ձեզ արագ կերպով, օգտագործելով կոնսոլը, կատարել բեկապներ և վերականգնել դրանք MySQL տվյալների բազայում: Այնպես նաև դուք կկարողանաք տեղափոխել տվյալները մյուս սերվերին:
- Ինչպես կատարել բեկապ կոմանդային տողով (օգտագործելով mysqldump)
- Ինչպես կատարել MySQL տվյալների բազայի բեկապ սեղմելով
- Ինչպես վերականգնել MySQL տվյալների բազան բեկապից
- Բեկապ և վերականգնում Adminer-ի միջոցով
Ինչպես կատարել բեկապ կոմանդային տողով (օգտագործելով mysqldump)
$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
[uname] - Տվյալների բազայի օգտատիրոջ անունը (կներառի նաև root)
[pass] - Ձեր օգտատիրոջ գաղտնաբառը, կարող եք գրել միասին, եթե այն չունի հատուկ նշաններ և բացատներ, օրինակ՝ -proot, -ppassword
[dbname] - Ձեր տվյալների բազայի անունը
[backupfile.sql] - Բեկապի պահպանման համար ֆայլի անունը
[--opt] - Պարամետրեր mysqldump հրամանի համար, կարելի է բաց թողնել
Ենթադրենք, դուք ունեք Drupal տվյալների բազա, օգտատիրոջ անունը root է՝ գաղտնաբառով password, իսկ ֆայլի անունը backup.sql, ապա հրամանը կլինի հետևյալը:
$ mysqldump -u root -ppassword DrupalDB > backup.sql
Կարող եք բաց թողնել գաղտնաբառը, կամ եթե գաղտնաբառը պարունակում է բացատներ և հատուկ նշաններ (#!,-_), ապա ստիպված կլինեք նշել գաղտնաբառը առանձին, և հրամանը կլինի հետևյալը:
$ mysqldump -u root -p DrupalDB > backup.sql
Կարող եք նաև բեկապ անել միայն որոշակի սեղաններ, դրա համար պետք է գրեք սեղանների անունները մեկից ավելի հեռավորությունների մեջ, օրինակ՝ nodes users:
$ mysqldump -u root -p DrupalDB nodes users > backup.sql
Բացի այդ, կարող եք բեկապ անել միանգամից մի քանի տվյալների բազաներ, դրա համար պետք է օգտագործեք --databases պարամետրը՝ դա թույլ կտա ճշգրտել բազաները, որոնք կցուցադրվեն հեռավորությունների մեջ:
$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql
Եթե ցանկանում եք ամբողջ MySQL սերվերը տեղափոխել, կարող եք բոլոր տվյալները պատճենել՝ օգտագործելով --all-databases պարամետրը:
$ mysqldump -u root -p --all-databases > alldb_backup.sql
Կոմանդը mysqldump նաև ունի մի քանի օգտակար պարամետրեր:
--add-drop-table - թույլ է տալիս ջնջել սեղանները նախքան բեկապի վերականգնումը (այսինքն՝ դամպում կավելացվեն SQL հարցումներ DROP TABLE նախքան CREATE TABLE նույն սեղանի համար):
--no-data - թույլ է տալիս պատճենել միայն տվյալների բազայի կառուցվածքը՝ առանց տվյալների, օրինակ՝ օգտակար է, երբ պատճենում եք կետեր, որոնք Drupal-ում կարող են պարունակել հարյուր հազարավոր անհրաժեշտ գրառումներ:
--add-lock - թույլ է տալիս ավելացնել LOCK TABLES և UNLOCK TABLES: Եթե տվյալների բազան մեծ է, ապա սեղանները կարող են լինել փակված երկար ժամանակ:
Ինչպես կատարել MySQL տվյալների բազայի բեկապ սեղմելով
Հավանաբար լավագույն տարբերակն է, քանի որ սեղմումը կարող է կատարել 10-20 անգամ և բեկապները մեծ տվյալների բազաներից կարող են դառնալ բավական փոքր չափսերով: Սեղմման համար մենք կօգտագործենք gzip հրամանը:
$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz
Եթե ցանկանում եք բացել ֆայլը (չնայած վերականգնել տվյալների բազան, պարզապես բացել), օգտագործեք այս հրամանը:
$ gunzip backup.sql.gz
Ինչպես վերականգնել MySQL տվյալների բազան բեկապից
Բեկապից տվյալների բազան վերականգնելու համար ձեզ անհրաժեշտ է մաքուր տվյալների բազա, կարող եք ջնջել սեղանները՝ օգտագործելով adminer կամ phpmyadmin: Եթե դուք օգտագործել եք --add-drop-table պարամետրը, ապա սեղանները ինքնաբերաբար ջնջվում և դրված են, և ոչինչ ջնջել պետք չէ: Ահա հրամանը տվյալների բազան վերականգնելու համար:
$ mysql -u root -p DrupalDB < backup.sql
Եթե դուք ունեցել եք սեղմված բեկապ, ապա օգտագործեք այս հրամանը:
gunzip < backup.sql.gz | mysql -u root -p DrupalDB
Բեկապ և վերականգնում Adminer-ի միջոցով (PhpMyAdmin-ի փոխարեն)
Adminer - դա PhpMyAdmin-ի փոխարինող է: Այն նման է գործառույթներով, բայց պատրաստված է մեկ փոքր ֆայլի տեսքով, ինչը շատ հարմար է:
Պարզապես պատճենեք ֆայլը կայքի արմատ և մուտք գործեք դրան՝ օգտագործելով բրաուզերը:
http://իմ_կայքի_անուն/adminer-4.2.1.php (կարող եք վերանվանել այն adminer.php ավելի հարմարության համար):
Մուտք գործեք և բացեք այն տվյալների բազան, որն անհրաժեշտ է, իմ դեպքում դա Drupal7 է:
Հիմա սեղմեք Էքսպորտ (Dump) և արտահանումը բեռնել: Իսկապես մենք կարող ենք չարտահանել մեզ անհրաժեշտ տվյալները՝ կետի համար:
Վերաբեռնելու համար օգտագործեք Իմպորտ (Import) բաժինը: