V mém předchozím příspěvku na blogu, který se týkal upgradu na nejnovější verzi Jira spolu s nejnovější verzí MariaDB, jsem stručně zmínil, že při upgradu na MariaDB Server 10.3 byste se měli podívat na to, jak se provádí zálohování. S MariaDB Server 10.3 přichází MariaDB Backup, která podporuje nejnovější funkce MariaDB Server. Je také k dispozici na všech stejných platformách jako MariaDB Server a je distribuován společně se serverem.
Pokud jste zálohovali pomocí XtraBackup a pokusili se spustit stejné příkazy na serveru MariaDB Server 10.3, zobrazí se chybová zpráva:
$ innobackupex ~/backup_to_dir --user=username --password=password
...
InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.3.9.
První věta v poslední zprávě je o čem to je. XtraBackup nerozumí souborům v protokolu redo 10.3. Všimněte si, že jsme použili starou verzi XtraBackup, a proto je příkaz stále innobackupex .
Z tohoto a některých dalších důvodů uvedených níže je server MariaDB nyní dodáván se zálohou MariaDB, která podporuje nový formát protokolu redo. S MariaDB Backup máte stejnou funkcionalitu, na kterou jste zvyklí u XtraBackup, ale s podporou vylepšeného formátu redo log a podporou pro šifrování dat MariaDB v klidu. Dalším velmi žádaným aspektem je, že MariaDB Backup je k dispozici také pro Windows, což XtraBackup není. Pokud se chcete dozvědět více o změně protokolu opakování, přečtěte si toto.
Na začátku tohoto příspěvku zmiňuji, že jsme nedávno upgradovali Jiru na nejnovější verzi a MariaDB Server na 10.3. V tomto starším prostředí jsme používali XtraBackup. Abychom získali zálohy pro MariaDB Server 10.3, museli jsme aktualizovat naše zálohovací skripty, aby používaly MariaDB Backup.
Po přepnutí na MariaDB Backup příkaz pro zálohování vypadá takto:
$ mariabackup --backup --target-dir /backup/to/dir --user=username --password=password --parallel=4
Museli jsme změnit samotný příkaz z innobackupex na mariabackup a přidali jsme dvě možnosti; –záloha říct mariabackup že chceme, aby vytvořil zálohu a –target-dir, aby určil, že daný adresář je místo, kam mají jít záložní soubory. Je třeba poznamenat, že pokud bychom používali novější verzi XtraBackup, možnosti příkazového řádku by byly zcela kompatibilní s XtraBackup, takže jediná věc, kterou by bylo třeba změnit, by byl samotný příkaz z xtrabackup na mariabackup .
Abychom měli jistotu, že záloha funguje, zkopírujeme ji na jiný server a pokusíme se ji tam obnovit. Chcete-li obnovit zálohu, musíme ji nejprve připravit:
$ mariabackup --prepare --target-dir full-2018-09-11_09-38-32
Všimněte si, že mám úplnou zálohu instance serveru MariaDB, která nahradí vše, co by existovalo v instanci, do které obnovuji. Proto zastavím server a odstraním všechny datové soubory, které obsahuje.
$ sudo service mariadb stop
$ sudo rm -rf /var/lib/mysql/*
Nyní lze záložní soubory umístit do datového adresáře této instance serveru. Mělo by to být provedeno pomocí mariabackup, aby se to udělalo správně. Dělá některé věci související s formátem redo log vysvětleným výše.
$ sudo mariabackup --copy-back --target-dir full-2018-09-11_09-38-32
Ujistěte se, že jsou oprávnění správná. V mém případě se používá normální uživatel a skupina. Poté spusťte server.
$ sudo chown mysql:mysql /var/lib/mysql -R
$ sudo service mariadb start
Pojďme se připojit k serveru a ověřit, že má data, která má mít. Rozhodl jsem se zeptat na maximální číslo vydání v Jira.
# connect to mariadb
$ mysql -uusername -ppassword
# query the database
MariaDB [(none)]> USE jiradb
MariaDB [jiradb]> SELECT MAX(issuenum) FROM jiraissue;
Voila! Nyní máme zálohy fungující na serveru MariaDB 10.3.