sql >> Databáze >  >> NoSQL >> MongoDB

Jak zálohovat a obnovit ClusterControl

ClusterControl 1.7.1 představil novou funkci, která vám umožní zálohovat váš server ClusterControl a obnovit jej (spolu s metadaty o vašich spravovaných databázích) na jiný server. Zálohuje aplikaci ClusterControl i všechna její konfigurační data. Migrace ClusterControl na nový server bývala bolest, ale už ne.

Tento příspěvek na blogu vás provede touto novou funkcí.

Provedeme migraci ClusterControl z jednoho serveru na druhý, přičemž zachováme všechny konfigurace a nastavení.

Také vám ukážeme, jak přenést správu clusteru z jedné instance ClusterControl do druhé.

Naše vzorová architektura začala se dvěma produkčními clustery (zobrazenými na snímku obrazovky níže):

  • ID clusteru 1:3 uzly Galera (PXC) + 1 HAProxy + 1 ProxySQL (5 uzlů)
  • ID clusteru 2:1 hlavní MySQL + 2 slave MySQL + 1 ProxySQL (4 uzly)

Úvod

ClusterControl CLI (s9s) je nástroj rozhraní příkazového řádku pro interakci, řízení a správu databázových clusterů pomocí platformy ClusterControl. Počínaje verzí 1.4.1 instalační skript automaticky nainstaluje tento balíček do uzlu ClusterControl.

Pod příkazem „s9s backup“ jsou v zásadě představeny 4 nové možnosti, které lze použít k dosažení našeho cíle:

Příznak Popis
--save-controller Uloží stav ovladače do tarballu.
--restore-controller Obnoví celý ovladač z dříve vytvořeného tarballu (vytvořeného pomocí --save-controller
--save-cluster-info Ukládá informace, které má řadič o jednom clusteru.
--restore-cluster-info Obnoví informace, které má řadič o klastru z dříve vytvořeného archivního souboru.

Tento blogový příspěvek se bude zabývat příklady použití, jak tyto možnosti využít. V tuto chvíli jsou ve fázi kandidátů na vydání a jsou dostupné pouze prostřednictvím nástroje ClusterControl CLI.

Zálohování ClusterControl

Aby to bylo možné, musí být server ClusterControl alespoň na verzi 1.7.1 a novější. Chcete-li zálohovat řadič ClusterControl, jednoduše spusťte následující příkaz v uzlu ClusterControl jako uživatel root (nebo pomocí sudo):

$ s9s backup \
--save-controller \
--backup-directory=$HOME/ccbackup \
--output-file=controller.tar.gz \
--log

--output-file musí být název souboru nebo fyzická cesta (pokud chcete vynechat příznak --backup-directory) a soubor nesmí předem existovat. ClusterControl nenahradí výstupní soubor, pokud již existuje. Zadáním --log počká, dokud nebude úloha provedena a protokoly úloh se zobrazí v terminálu. Ke stejným protokolům lze přistupovat prostřednictvím uživatelského rozhraní ClusterControl v části Aktivita -> Úlohy -> Uložit ovladač :

Úloha 'Save Controller' v podstatě provádí následující procedury:

  1. Načtěte konfiguraci řadiče a exportujte ji do JSON
  2. Exportujte databázi CMON jako soubor výpisu MySQL
  3. Pro každý databázový cluster:
    1. Načtěte konfiguraci clusteru a exportujte ji do formátu JSON

Ve výstupu si můžete všimnout, že nalezená úloha je N + 1 cluster, například „Nalezeny 3 clustery k uložení“, i když máme pouze dva databázové clustery. To zahrnuje ID clusteru 0, které má v ClusterControl zvláštní význam jako globální inicializovaný cluster. Nepatří však do komponenty CmonCluster, což je databázový cluster pod správou ClusterControl.

Obnovení ClusterControl na nový server ClusterControl

Předpokládá se, že ClusterControl je již nainstalován na novém serveru, rádi bychom migrovali databázové clustery, které budou spravovány novým serverem. Následující diagram ilustruje naši migraci:

Nejprve přeneste zálohu ze starého serveru na nový server:

$ scp $HOME/ccbackup/controller.tar.gz 192.168.0.190:~

Než provedeme obnovu, musíme nastavit SSH bez hesla pro všechny uzly z nového serveru ClusterControl:

$ ssh-copy-id 192.168.0.11 #proxysql cluster 1
$ ssh-copy-id 192.168.0.12 #proxysql cluster 1
$ ssh-copy-id 192.168.0.21 #pxc cluster 1
$ ssh-copy-id 192.168.0.22 #pxc cluster 1
$ ssh-copy-id 192.168.0.23 #pxc cluster 1
$ ssh-copy-id 192.168.0.30 #proxysql cluster 2
$ ssh-copy-id 192.168.0.31 #mysql cluster 2
$ ssh-copy-id 192.168.0.32 #mysql cluster 2
$ ssh-copy-id 192.168.0.33 #mysql cluster 2

Poté na novém serveru proveďte obnovu:

$ s9s backup \
--restore-controller \
--input-file=$HOME/controller.tar.gz \
--debug \
--log

Poté musíme synchronizovat cluster v uživatelském rozhraní tak, že přejdeme do Globální nastavení -> Registrace clusteru -> Synchronizovat cluster . Pokud se pak vrátíte na hlavní panel ClusterControl, uvidíte toto:

Nepanikařte. Nové uživatelské rozhraní ClusterControl není schopno načíst data monitorování a správy kvůli nesprávnému tokenu RPC API. Jen to musíme odpovídajícím způsobem aktualizovat. Nejprve načtěte hodnotu rpc_key pro příslušné clustery:

$ cat /etc/cmon.d/cmon_*.cnf | egrep 'cluster_id|rpc_key'
cluster_id=1
rpc_key=8fgkzdW8gAm2pL4L
cluster_id=2
rpc_key=tAnvKME53N1n8vCC

V uživatelském rozhraní klikněte na odkaz „zde“ v řádku „Zde změnit token RPC API“. Zobrazí se následující dialogové okno:

Vložte příslušnou hodnotu rpc_key do textového pole a klikněte na Uložit. Opakujte pro další shluk. Chvíli počkejte a seznam clusterů by se měl automaticky aktualizovat.

Posledním krokem je opravit uživatelská oprávnění MySQL cmon pro nové změny IP adresy ClusterControl, 192.168.0.190. Přihlaste se do jednoho z PXC uzlu a spusťte následující:

$ mysql -uroot -p -e 'GRANT ALL PRIVILEGES ON *.* TO [email protected]"192.168.0.190" IDENTIFIED BY "<password>" WITH GRANT OPTION';

** Nahraďte identickým heslem Cmon MySQL jako v hodnotě mysql_password v /etc/cmon.cnf. Opakujte stejný krok na druhém clusteru, replikaci MySQL, ale proveďte jej pouze jednou na hlavním uzlu.

Jakmile je oprávnění nastaveno, měli byste vidět seznam clusterů zeleně, podobně jako ten starý:

Stojí za zmínku, že ve výchozím nastavení ClusterControl zakáže automatické obnovení clusteru (jak můžete vidět červenou ikonu vedle slova „Cluster“), aby se zabránilo konfliktu s jinou instancí ClusterControl. Je doporučeno povolit tuto funkci (kliknutím na ikonu zezelená), jakmile bude starý server vyřazen z provozu.

Naše migrace je nyní dokončena. Všechny konfigurace a nastavení ze starého serveru jsou zachovány a přeneseny na nový server.

Migrace správy clusteru na jiný server ClusterControl

Zálohování informací o clusteru

Jedná se o zálohování metadat a informací clusteru, abychom je mohli přenést na jiný server ClusterControl, také známý jako částečná záloha. V opačném případě musíme provést „Importovat existující server/klastr“, abychom je znovu naimportovali do nového ClusterControl, což znamená, že byste přišli o monitorovací data ze starého serveru. Máte-li nástroje pro vyrovnávání zatížení nebo asynchronní podřízené instance, bylo by nutné je importovat po importu clusteru, jeden uzel po druhém. Takže je to trochu problém, pokud máte kompletní sadu nastavení výroby.

Cvičení migrace "správce" clusteru je znázorněno na následujícím diagramu:

V podstatě chceme migrovat naši replikaci MySQL (ID clusteru:2), aby byla spravována jinou instancí ClusterControl. V tomto případě použijeme volby --save-cluster-info a --restore-cluster-info. Volba --save-cluster-info exportuje odpovídající informace o clusteru a uloží je někam jinam. Pojďme exportovat náš MySQL Replication Cluster (ID clusteru:2). Na aktuálním serveru ClusterControl proveďte:

$ s9s backup \
--save-cluster-info \
--cluster-id=2 \
--backup-directory=$HOME/ccbackup \
--output-file=cc-replication-2.tar.gz \
--log

V terminálu uvidíte spoustu nových řádků, které označují, že zálohovací úloha běží (výstup je také dostupný přes ClusterControl -> Aktivita -> Úlohy ):

Pokud se podíváte na protokoly úloh pozorně, všimnete si, že se úloha pokoušela exportovat všechny související informace a metadata pro cluster ID 2. Výstup je uložen jako komprimovaný soubor a je umístěn pod cestou, kterou jsme zadali pod pomocí --backup -příznak adresáře. Pokud je tento příznak ignorován, ClusterControl uloží výstup do výchozího záložního adresáře, který je domovským adresářem uživatele SSH, pod $HOME/backups.

Obnovení informací o clusteru

Zde vysvětlené kroky jsou podobné jako u kroků obnovení pro úplnou zálohu ClusterControl. Přeneste zálohu z aktuálního serveru na druhý server ClusterControl:

$ scp $HOME/ccbackup/cc-replication-2.tar.gz 192.168.0.190:~

Než provedeme obnovu, musíme nastavit SSH bez hesla pro všechny uzly z nového serveru ClusterControl:

$ ssh-copy-id 192.168.0.30 #proxysql cluster 2
$ ssh-copy-id 192.168.0.31 #mysql cluster 2
$ ssh-copy-id 192.168.0.32 #mysql cluster 2
$ ssh-copy-id 192.168.0.33 #mysql cluster 2
$ ssh-copy-id 192.168.0.19 #prometheus cluster 2

Poté na novém serveru proveďte obnovu informací o clusteru pro naši replikaci MySQL:

$ s9s backup \
--restore-cluster-info \
--input-file=$HOME/cc-replication-2.tar.gz \
--log

Průběh můžete ověřit v části Aktivita -> Úlohy -> Obnovit cluster :

Pokud se podíváte na zprávy úloh pozorně, uvidíte, že ClusterControl automaticky znovu přiřadí ID clusteru 1 na této nové instanci (ve staré instanci to bylo ID clusteru 2).

Poté synchronizujte cluster v uživatelském rozhraní tak, že přejdete na Globální nastavení -> Registrace clusteru -> Synchronizovat cluster . Pokud se vrátíte zpět na hlavní panel ClusterControl, uvidíte toto:

Chyba znamená, že nové uživatelské rozhraní ClusterControl není schopno načíst data monitorování a správy kvůli nesprávnému tokenu RPC API. Jen to musíme odpovídajícím způsobem aktualizovat. Nejprve načtěte hodnotu rpc_key pro naše ID clusteru 1:

$ cat /etc/cmon.d/cmon_1.cnf | egrep 'cluster_id|rpc_key'
cluster_id=1
rpc_key=tAnvKME53N1n8vCC

V uživatelském rozhraní klikněte na odkaz „zde“ v řádku „Zde změnit token RPC API“. Zobrazí se následující dialogové okno:

Vložte příslušnou hodnotu rpc_key do textového pole a klikněte na Uložit. Chvíli počkejte a seznam clusterů by se měl automaticky aktualizovat.

Posledním krokem je opravit uživatelská oprávnění MySQL cmon pro nové změny IP adresy ClusterControl, 192.168.0.190. Přihlaste se k hlavnímu uzlu (192.168.0.31) a spusťte následující příkaz:

$ mysql -uroot -p -e 'GRANT ALL PRIVILEGES ON *.* TO [email protected]"192.168.0.190" IDENTIFIED BY "<password>" WITH GRANT OPTION';

** Nahraďte identickým heslem cmon MySQL jako v hodnotě mysql_password v /etc/cmon.cnf.

Můžete také zrušit stará uživatelská oprávnění (zrušením se uživatel nesmaže) nebo starého uživatele jednoduše zrušit:

$ mysql -uroot -p -e 'DROP USER [email protected]"192.168.0.19"'

Jakmile je oprávnění nastaveno, měli byste vidět, že je vše zelené:

V tuto chvíli naše architektura vypadá asi takto:

Naše migrační cvičení je nyní dokončeno.

Poslední myšlenky

Nyní je možné provádět úplnou a částečnou zálohu vašich instancí ClusterControl a clusterů, které spravují, což vám umožňuje s minimálním úsilím je volně přesouvat mezi hostiteli. Návrhy a zpětná vazba jsou vítány.


  1. Laravel a redis scan

  2. Draft.js – Nelze získat data z databáze. Chyba křížového původu

  3. Redis jako zprostředkovatel zpráv

  4. Node.js ovladač mongodb async/wait dotazy