GNU/Linux >> Znalost Linux >  >> Linux

Nakonfigurujte replikaci zdrojové repliky MySQL

Replikace MySQL® umožňuje replikaci jednoho databázového serveru (v tomto článku označovaného jako sourceserver) na jeden nebo více databázových serverů (v tomto článku označovaných jako replikační servery). S MySQL je replikace asynchronní. To znamená, že replikační servery nemusí být připojeny trvale, aby mohly přijímat aktualizace ze zdrojového serveru. Můžete například zastavit replikované vlákno na replikačním serveru a restartovat jej později a automaticky se synchronizuje se zdrojem.

Tento výukový program poskytuje jednoduché nastavení (jediný zdrojový server replikující se na jediný replikovaný server), které replikuje všechny databáze ze zdroje do repliky.

Předpoklady

Před zahájením tohoto kurzu proveďte následující kroky.

  • Nainstalujte operační systém. (Kroky v tomto článku se provádějí pomocí operačního systému CentOS®)
  • Nainstalujte mysql
  • Nainstalujte mysql-devel
  • Nainstalujte mysql-server

Poznámka: Postup v tomto článku popisuje konfiguraci replikace na nové sadě serverů bez dat nebo databáze. To je důležité, protože existující data na serverech ruší replikaci. Tento postup můžete použít pro další příchutě Linux®

Shromažďovat informace o IP

Konfigurace MySQL v tomto článku se replikuje přes soukromé IP adresy vašeho cloudového serveru. Poznamenejte si privátní IP každého serveru.

Zdroj:

[user@mysql-source ~]$ /sbin/ifconfig
 eth0      Link encap:Ethernet  HWaddr 40:40:51:B7:A4:2E
           inet addr:67.23.9.185  Bcast:67.23.9.255  Mask:255.255.255.0
           inet6 addr: fe80::4240:51ff:feb7:a42e/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:28878 errors:0 dropped:0 overruns:0 frame:0
           TX packets:15147 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:37708534 (35.9 MiB)  TX bytes:1129533 (1.0 MiB)

 eth1      Link encap:Ethernet  HWaddr 40:40:1A:AF:35:F2
           inet addr:10.176.41.72  Bcast:10.176.63.255 Mask:255.255.224.0
           inet6 addr: fe80::4240:1aff:feaf:35f2/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:3 errors:0 dropped:0 overruns:0 frame:0
           TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:230 (230.0 b)  TX bytes:762 (762.0 b)

 lo        Link encap:Local Loopback
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING  MTU:16436  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Chcete si poznamenat IP, která se zobrazuje pro eth1 . IP adresa je uvedena hned za inet addr: . V tomto příkladu je soukromá IP zdrojového serveru 10.176.41.72. Opakujte to na replikovaném serveru a poznamenejte si soukromou IP.

Replika:

 [user@mysql-replica ~]$ /sbin/ifconfig
 eth0      Link encap:Ethernet  HWaddr 40:40:BE:90:EB:1E
           inet addr:67.23.10.69  Bcast:67.23.10.255  Mask:255.255.255.0
           inet6 addr: fe80::4240:beff:fe90:eb1e/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:29047 errors:0 dropped:0 overruns:0 frame:0
           TX packets:13527 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:37743828 (35.9 MiB)  TX bytes:1473375 (1.4 MiB)

 eth1      Link encap:Ethernet  HWaddr 40:40:AE:5B:35:3A
           inet addr:10.176.41.207  Bcast:10.176.63.255 Mask:255.255.224.0
           inet6 addr: fe80::4240:aeff:fe5b:353a/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:3 errors:0 dropped:0 overruns:0 frame:0
           TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:230 (230.0 b)  TX bytes:762 (762.0 b)

 lo        Link encap:Local Loopback
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING  MTU:16436  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

IP adresa našeho replikovaného serveru je v tomto příkladu 10.176.41.207. Když máte někde zaznamenané obě soukromé IP adresy, je dobré začít s konfigurací.

Nakonfigurujte server

Zdroj

  • Upravte soubor /etc/my.cnf soubor na zdrojovém serveru, abyste povolili binární protokolování a nastavili název serveru.

      [user@mysql-source ~]$ sudo vi /etc/my.cnf
    
  • Přidejte tyto řádky pod mysqld sekce.

      log-bin=/var/lib/mysqllogs/RackspaceServerID-theServerShortName-binary-log
      expire_logs_days=7
      server-name=<server_number>
    
  • Nastavte uživatele replikace.

      mysql> GRANT REPLICATION SLAVE ON *.* to 'replicant'@'slaveIP' IDENTIFIED BY 'somepassword';
    

Zdroj my.cnf konfigurace je dokončena.

Příprava repliky

  • Ověřte, že se časová pásma mezi zdrojem a replikou shodují.

  • Nastavte následující položky:

      relay-log=/var/lib/mysqllogs/RackspaceServerID-theServerShortName-relay-log
      relay-log-space-limit = 16G
      read-only=1
      server-name=<server_number>
    

Počáteční kopie dat do repliky

Chcete-li data zkopírovat do repliky, vyberte jednu z následujících možností.

  • mysqldump
  • Zkopírujte ploché soubory

mysqldump

Zvažte tuto možnost, pokud má datový adresář rozumnou velikost a pokud můžete mít své tabulky po dobu trvání procedury zamčené.

 mysqldump -A --flush-privileges --master-data=1 | gzip -1 > ~rack/master.sql.gz

Přeneste soubor výpisu do repliky a importujte jej.

Zkopírujte ploché soubory

Pro tuto metodu zastavte MySQL na obou serverech a přesuňte datový adresář mimo cestu na replice. Pokud není MySQL zastaveno na obou serverech, je nutné provést zálohu:

 # mv /var/lib/mysql{,.prereplication}

Použijte jednu z výše uvedených metod k vytvoření kopie datového adresáře repliky ze zdroje. Například:

 # rsync -azv --progress --delete /var/lib/mysql/ slave:/var/lib/mysql/

Po dokončení kopírování dat restartujte MySQL na obou serverech. Ověřte, že innodb-log-file-size v /etc/my.cnf je nastavena stejně pro repliku a zdroj, jinak se MySQL na replice nespustí.

Pokud je replika novější verzí MySQL, spusťte mysql_upgrade na replikapřed vydáním start slave příkaz.

Připojit repliku ke zdroji

Potřebujete název souboru a pozici binárního protokolu ze zdroje, který odpovídá záloze. Pokud používáte mysqldump , bude to součástí souborumaster.sql.gz samotný soubor.

 # zgrep -m 1 -P 'CHANGE MASTER' master.sql.gz
 CHANGE MASTER TO MASTER_LOG_FILE = '<binary log filename>', MASTER_LOG_POS = <binary log position>;

Pro kopii na úrovni souboru, jako je studená kopie získaná vypnutím MySQL a pomocí rsync , název souboru a pozice binárního protokolu bude prvním souborem protokolu vytvořeným po restartování MySQL.

Můžete to získat pomocí následujících kroků:

 # service mysqld stop
 # tail -n 1 /var/lib/mysqllogs/db1-1234-bin-log.index
 /var/lib/mysqllogs/db1-1234-bin-log.000001
 # rsync ...
 # service mysqld start

V tomto případě začněte u názvu souboru db1-bin-log.000001 + 1 = db1-1234-bin-log.000002 na začátku tohoto souboru. Dostanete tento výsledek:

 MASTER_LOG_FILE = 'db1-1234-bin-log.000002', MASTER_LOG_POS = 4

Nyní spusťte CHANGE MASTER na replice pro nastavení přihlašovacích údajů pro připojení ke zdroji a také binárního souboru protokolu a pozice, ze které se má replikace zahájit.

 mysql> change master to master_host='master-ip',master_user='userSetAbove', master_password='passwordSetAbove',master_log_file='logfile-from-above-command', master_log_pos=4;
 mysql> start slave;

Kořenové pověření MySQL

Ujistěte se, že nová replika má stejné přihlašovací údaje v /root/.my.cnf soubor jako zdrojový server. Databáze MySQL a tabulka uživatelských oprávnění se také synchronizují s replikou.

Holandsko

Protože jste importovali databázi MySQL ze zdroje, všechna hesla jsou nyní stejná. Stejně jako jste aktualizovali /root/.my.cnf na dbReplica, aby odpovídal dbSource, možná budete muset aktualizovat /etc/holland/backupsets/default.conf soubor použít stejné přihlašovací údaje jako zdroj pro rackspace_backup .

Testování

Otestujte svá nastavení vytvořením fiktivní databáze na zdroji a ověřením, že se zobrazuje v replice. Po ověření můžete fiktivní databázi zahodit a potvrdit, že replika ji automaticky zahodí.

Pokud se zobrazí chyba jako Last_IO_Error: error connecting to master , ručně otestujte uživatele replikace. Z repliky vyzkoušejte dvě věci:

nc masterIP 3306

Pokud zde vidíte chybu, váš grant je nesprávný, pravděpodobně proto, že jste v jiném segmentu sítě, než jste si mysleli. Chyba bude vypadat taktoHost dbSlave is not allowed to connect to this MySQL server .

mysql -ureplicant -hmasterDb -p

Pokud se zobrazí chyba, váš grant je chybný.

Pokud se některý z nich nepodaří připojit, možná budete muset upravit bránu firewall nebo ověřit, že děláte správné předpoklady o tom, jak je síť pro tohoto zákazníka nakonfigurována.

Filtrování

Doporučuje se nepoužívat filtrování replikace. Pokud chcete z repliky vyloučit některé tabulky, jedinou doporučenou metodou je jedna z následujících my.cnf možnosti nakonfigurované na replice:

 replicate-wild-do-table=dbase1.%
 replicate-wild-do-table=dbase3.%

 replicate-wild-ignore-table=dbase2.%
 replicate-wild-ignore-table=dbase4.someTable

Vzory mohou obsahovat zástupné znaky % a \_ , které mají stejný význam jako LIKE operátor porovnávání vzorů. Pokud potřebujete použít znak literal_, escapujte jej následovně:

 replicate-wild-ignore-table=%.%\_tmp

V MySQL 5.5 možnosti filtrování na úrovni databáze rozlišují malá a velká písmena na platformách podporujících rozlišování velkých a malých písmen v názvech souborů. Možnosti filtrování na úrovni tabulky nerozlišují malá a velká písmena na žádné platformě, bez ohledu na hodnotu lower_case_table_names systémová proměnná.

Události

Pokud my.cnf byla povolena na zdroji, můžete ji deaktivovat na replice. Pokud je třeba plánovač událostí na replice povolit, ověřte, že existující události byly vytvořeny pomocí CREATE EVENT ... DISABLE ON SLAVE s něčím jako:select db, name from mysql.event where status not in (‘disabled’,‘slavename_disabled’);

Monitorování

Vždy sledujte replikaci. V Emerging obecně používámeSiteScope Content Match s check_replication.php , který obvykle žije v snamee httpd běžícím na replice.

K tomu musíte vydat GRANT na zdroji, který se replikuje do repliky:

 GRANT REPLICATION CLIENT ON *.* TO 'rep_monitor'@'slavePrimaryIP' IDENTIFIED BY 'somePassword';

Za předpokladu, že jste za firewallem, „slavePrimaryIP“ by měla být interní IP adresa replikačního serveru [192.168.100.x]. V souboru check_replication.php skript, nastavte host=‘192.168.100.x , interní IP serveru, na kterém běží skript. To je obvykle stejné jako slavePrimaryIP .

Kontaktujte svého správce účtu a požádejte o nastavení monitoru SiteScope. Adresa URL by měla být veřejná IP monitorovacího serveru, napříkladhttps://68.23.45.32/check_replication.php

Poznámka: Skript může mít další prvky v dsn list pole a zkontrolujte více replik pomocí jedné sondy SiteScope. Dokumentace PHP uvádí, že čárka za posledním prvkem pole je volitelná a lze ji vynechat. Když však sonda SiteScope kontroluje více replik, může být méně jasné, která replika měla problém, když výstraha rychle zmizí. V tomto ohledu může mít smysl mít check_replication.php a odpovídající sonda SiteScope běžící na každé replice.

Nyní se pohodlně usaďte a nechte svůj replikační server replikovat ze zdroje. Ujistěte se, že neprovádíte žádné zápisy na replikační server, protože to přeruší replikaci! Všechny zápisy provedené na zdroji jsou automaticky odeslány do repliky prostřednictvím binárního protokolu a replikace. Další informace o replikaci MySQL najdete na https://dev.mysql.com/doc/refman/5.0/en/replication.html.


Linux
  1. Jak nakonfigurovat replikaci MySQL Multi-Master Replication na Oracle Linux

  2. Nakonfigurujte server MySQL na operačním systému Ubuntu

  3. Nakonfigurujte replikaci zdrojové repliky MySQL

  1. Nakonfigurujte replikaci zdroje MySQL

  2. Nastavte replikaci zdrojové repliky MySQL

  3. Jak nakonfigurovat databázi MySQL Slave

  1. Jak nastavit replikaci MySQL Master-Master Replication

  2. Nakonfigurujte WSO2 API Manager s databází MySQL

  3. Jak nastavit replikaci MySQL na CentOS