MySQL կրկնօրինակի ստեղծում՝ օգտագործելով XtraBackup կոմունալը

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)

MySQL կրկնօրինակի ստեղծում՝ օգտագործելով XtraBackup կոմունալը

Մուտքի իրավունքներ, թույլտվություններ և արտոնություններ 

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 սերվերը կարող է գործարկվել:

Օգտագործված նյութերը

Պաշտոնական փաստաթղթեր Պերկոնա XtraBackup.

Source: www.habr.com

Добавить комментарий