Percona XtraBackup Տվյալների տվյալների բազայի տաք կրկնօրինակումների համար օգտակար ծրագիր է MySQL.
Տվյալների կրկնօրինակում ստեղծելիս ոչ մի աղյուսակ կողպված չէ, և ձեր համակարգը շարունակում է գործել առանց որևէ սահմանափակումների:
XtraBackup 2.4 կարող է ստեղծել աղյուսակների կրկնօրինակներ InnoDB- ը, XtraDB и Մայիսամ սերվերների վրա MySQL 5.11, 5.5, 5.6 և 5.7, և նաև սերվերի վրա Պերկոնա համար MySQL с XtraDB.
հետ աշխատելու համար MySQL 8.x տարբերակը պետք է օգտագործվի XtraBackup 8.x. Այս հոդվածը կխոսի միայն դրա մասին XtraBackup 2.4.
Հիմնական առավելությունը XtraBackup այն է, որ այս օգտակար ծրագիրը հարմար է ինչպես բարձր բեռնված սերվերների կրկնօրինակներ ստեղծելու, այնպես էլ փոքր քանակությամբ գործարքներ ունեցող համակարգերի համար:
Եթե ձեր MySQL տվյալների բազաների ընդհանուր չափը նշանակալի է (տասնյակ գիգաբայթ), ապա ստանդարտ օգտակար mysqldump թույլ չի տա արագ կրկնօրինակ ստեղծել, իսկ աղբանոցը վերականգնելը շատ ժամանակ կպահանջի:
Տեղակայում
Տեղակայում XtraBackup պահոցից հակված Պերկոնա.
Հաջորդաբար գործարկեք հետևյալ հրամանները.
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
2. Տեղադրվելուց հետո գործարկեք հրամանը xtrabackup -v
. Քանի որ, կարևոր է համոզվել, որ կոմունալը ճիշտ է աշխատում սերվերի վրա: Արդյունքում էկրանին կցուցադրվի նման բան.
xtrabackup. ճանաչված սերվերի արգումենտներ. - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup տարբերակ 2.4.20 հիմնված MySQL սերվերի 5.7.26 Linux (x8664) (վերանայման id՝ c8b4056)
Մուտքի իրավունքներ, թույլտվություններ և արտոնություններ
XtraBackup-ը պետք է կարողանա՝
-
Միացեք ձեր MySQL սերվերին:
-
Ունեք գրացուցակ մուտքի իրավունք datadir.
-
Պահուստային պատճեն ստեղծելիս գրելու իրավունքներ ունեցեք նշված պարամետրի վրա թիրախ-ռեժ կատալոգ.
Ի՞նչ է datadir-ը:
datadir այն գրացուցակն է, որտեղ տվյալների բազայի սերվերն է MySQL պահպանում է տվյալները։ Բոլոր շտեմարանները, բոլոր աղյուսակները կան: Linux բաշխումների մեծ մասում լռելյայն գրացուցակն է /var/lib/mysql.
Ինչ է target-dir գրացուցակը:
թիրախ-ռեժ - Սա այն գրացուցակն է, որտեղ կպահվի կրկնօրինակը:
Տվյալների բազայի օգտագործողին անհրաժեշտ են աղյուսակների և տվյալների բազաների հետևյալ մուտքի իրավունքները՝ կրկնօրինակելու համար.
-
ՎԵՐԱԲԵՐԵՆՔ և կողպեք ՍԵՂԱՆԱԿՆԵՐԸ
-
ՌԵՊԼԻԿԱՑԻՈՆ ՀԱՃԱԽՈՐԴ
-
ՍԵՂԱՆԻ ՏԱՐԱԾՔ ՍՏԵՂԾԵՔ
-
PROCESS- ը
-
SUPER
-
ՍՏԵՂԾԵԼ
-
INSERT
-
SELECT
Տեսիլ
Տեսիլ XtraBackup արվում է օգտագործելով ընտրանքներ, որոնք վարվում են նույնը, ինչ ստանդարտ MySQL ընտրանքները:
Ինչ է սա նշանակում.
Կազմաձևման պարամետրերը կարող են սահմանվել կամ հրամանի տողում կամ DBMS կազմաձևման ֆայլում, օրինակ. /etc/my.cnf.
XtraBackup կոմունալ ծրագիրը գործարկումից հետո կարդում է բաժանմունքները [mysqld] и [xtrabackup] MySQL կազմաձևման ֆայլերից: Դա արվում է այնպես, որ կոմունալ ծրագիրը կարողանա օգտագործել ձեր DBMS-ի կարգավորումները՝ առանց յուրաքանչյուր պահուստավորման ժամանակ պարամետրերը ձեռքով նշելու:
Օրինակ, արժեքը datadir և որոշ պարամետրեր InnoDB- ը Մենք ստանում ենք XtraBackup ձեր DBMS-ի կազմաձևումից:
Եթե XtraBackup-ն աշխատի, դուք ցանկանում եք վերացնել այն պարամետրերը, որոնք գտնվում են բաժնում [mysqld], ապա պարզապես նշեք դրանք բաժնի կազմաձևման ֆայլում [xtrabackup]. Քանի որ դրանք ավելի ուշ կկարդան, նրանց առաջնահերթությունը կլինի ավելի բարձր։
Պետք չէ որևէ պարամետր ավելացնել my.cnf. Բոլոր պահանջվող պարամետրերը կարող են նշվել հրամանի տողում: Սովորաբար միակ բանը, որը կարող է հարմար տեղավորվել բաժնում [xtrabackup] ձեր my.cnf պարամետր է թիրախ_դիր, որը լռելյայն նշում է գրացուցակը, որտեղ տեղադրվելու են կրկնօրինակները։ Բայց սա ընտրովի է:
Պահուստային պատճենով գրացուցակ տանող ճանապարհը նշելու օրինակ my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/
Կրկնօրինակման սցենար
Կրկնօրինակ ստեղծելու համար կարող եք օգտագործել հետևյալ սկրիպտը.
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup
--password=xxxx_SECRET_xxxx
--backup
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup
Ի՞նչ է տեղի ունենում սցենարի կատարման ժամանակ:
Առաջին հերթին մենք մաքրում ենք (ջնջում) այն գրացուցակը, որտեղ մենք կպահենք կրկնօրինակը.
rm -rf /mysql/backup.
Այնուհետև, օգտագործելով կոմունալը XtraBackup ստեղծեք պահեստային պատճեն և պահեք այն /mysql/պահուստավորում/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
Նախկինում մենք օգտատեր ենք ստեղծել MySQL-ում xtrabackup
պահանջվող արտոնություններով։ Օգտագործելով պարամետրը target-dir
մենք նշում ենք այն գրացուցակը, որտեղ պետք է պահվի կրկնօրինակը:
Կարեւոր կետ.
Նշեք սցենարի տողը.
xtrabackup --prepare --target-dir=/mysql/backup
Կատալոգի տվյալներ /mysql/կրկնօրինակում չեն հետևողական, քանի դեռ չեն եփվել:
Փաստն այն է, որ փոփոխություններ կարող են տեղի ունենալ ֆայլերը պատճենելիս: Գործողություն xtrabackup --prepare --target-dir=/mysql/backup
պահուստային տվյալները ժամանակի ընթացքում կատարելապես հետևողական են դարձնում:
Դուք կարող եք կատարել տվյալների պատրաստման գործողությունը ցանկացած մեքենայի վրա: Կարիք չկա դա անել այն սերվերի վրա, որտեղ գտնվում է աղբյուրի DBMS-ը: Դուք կարող եք պատճենել կրկնօրինակը թիրախային սերվերին և պատրաստել այն այնտեղ:
Վերջին բանը, որ մենք անում ենք, արխիվ ստեղծելն է, որտեղ տեղադրում ենք մեր կրկնօրինակը.
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
Կրկնօրինակի վերականգնում
Նախքան նպատակային սերվերում կրկնօրինակը վերականգնելը, տվյալները պետք է անցնեն նախապատրաստական փուլ: Տես վերևում, թե ինչպես դա անել:
Տվյալների վերականգնման գործընթացը շատ պարզ է. Դուք պետք է հանեք պահուստը արխիվից և փոխարինեք տվյալները datadir.
Ինչպե՞ս փոխարինել տվյալները datadir-ում:
Դիտարկենք երկու տարբերակ.
Ընտրանք 1
Օգտագործեք կոմունալը XtraBackup. Դուք պետք է նշեք տարբերակ -- պատճենահանում.
Ստորև բերված հրամանը կփոխանցի կրկնօրինակը datadir թիրախային սերվեր.
xtrabackup --copy-back --target-dir=/mysql/backup
Ընտրանք 2
Դուք կարող եք դա անել այլ կերպ, անել առանց օգտակարության XtraBackup.
Ձեզ անհրաժեշտ է միայն պատճենել կրկնօրինակը datadir. Դուք կարող եք դա անել cp կամ rsync.
Կարևոր է հասկանալ, որ կրկնօրինակը վերականգնելու կարգը հանգում է միայն գրացուցակի բովանդակությունը փոխարինելուն datadir.
Նախքան թիրախային սերվերի վրա կրկնօրինակը վերականգնելը, դուք պետք է.
-
Դադարեցրեք MySQL սերվերը:
-
Մաքրել թղթապանակը datadir կամ տեղափոխել դրա բովանդակությունը մեկ այլ վայր: Կատալոգ datadir պետք է դատարկ լինի:
Տվյալների փոխանցումն ավարտելուց հետո datadir MySQL սերվերը կարող է գործարկվել:
Օգտագործված նյութերը
Source: www.habr.com