GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit replikaci MySQL Master-Master Replication

Tento článek sjednocuje informace z několika zdrojů do formátu, který používám k nastavení replikace MySQL Master/Master Replication. Krása Linuxu a open source spočívá v tom, že existuje mnoho různých způsobů, jak toho dosáhnout. Podívejte se prosím na mé reference a použijte je k uspokojení případných potřeb. Pokud máte nějaké dotazy nebo narazíte na nějaké problémy, neváhejte mi napsat do komentářů.

Předpoklady

Tento článek předpokládá, že jste již nainstalovali MySQL na každý ze svých serverů. Pokud ne, můžete tak snadno učinit prostřednictvím webové stránky MySQL na adrese https://www.mysql.org/downloads. Tento článek nebyl testován na MariaDB, ale měl by fungovat, pokud dáváte přednost použití MariaDB.

Změňte SELINUX na permisivní (pokud je nainstalován)

Server A

[[email protected] ~]# vi /etc/selinux/config
 # Tento soubor řídí stav SELinuxu v systému.# SELINUX=může nabývat jedné z těchto tří hodnot:# vynucování - bezpečnostní politika SELinux je vynucována.# permisivní - SELinux místo vynucování vypisuje varování.# vypnuto - Žádný SELinux politika je načtena.SELINUX=permisivní# SELINUXTYPE=může nabývat jedné z těchto dvou hodnot:# targeted - Cílené procesy jsou chráněny,# mls - Multi Level Security protection.SELINUXTYPE=targeted 

Server B

[[email protected] ~]# vi /etc/selinux/config
 # Tento soubor řídí stav SELinuxu v systému.# SELINUX=může nabývat jedné z těchto tří hodnot:# vynucování - bezpečnostní politika SELinux je vynucována.# permisivní - SELinux místo vynucování vypisuje varování.# vypnuto - Žádný SELinux politika je načtena.SELINUX=permisivní# SELINUXTYPE=může nabývat jedné z těchto dvou hodnot:# targeted - Cílené procesy jsou chráněny,# mls - Multi Level Security protection.SELINUXTYPE=targeted 

Zastavte a deaktivujte firewall na každém serveru

Server A

[[e-mail chráněný] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl deaktivace firewallu

Spusťte následující příkaz, abyste se ujistili, že neexistují žádná pravidla brány firewall

[[email protected] ~]# iptables -L

Výsledek by měl vypadat takto:

VSTUP řetězce (přijetí zásad)
cílový     chráněný zdroj volby               cíl

Řetěz VPŘED (přijetí zásad)
cíl     ochranný zdroj ochrany               cíl /
VÝSTUP (přijetí zásad)
cíl     chráněný zdroj               cíl

Server B

[[e-mail chráněný] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl deaktivace firewallu

Spusťte následující příkaz, abyste se ujistili, že neexistují žádná pravidla brány firewall.

[[email protected] ~]# iptables -L

Výsledek by měl vypadat takto:

VSTUP řetězce (přijetí zásad)
cílový     chráněný zdroj volby               cíl

Řetěz VPŘED (přijetí zásad)
cíl     ochranný zdroj ochrany               cíl /
VÝSTUP (přijetí zásad)
cíl     chráněný zdroj               cíl

Upravit /etc/my.cnf na obou serverech

Přidejte následující informace na konec sekce [mysqld]

Server A

[[email protected] ~]# vi /etc/my.cnf
 server-id=1 log-bin="mysql-bin" binlog-do-db=name_of_database replicate-do-db=name_of_database relay-log="mysql-relay-log" auto-increment-offset =1  

Server B

[[email protected] ~]# vi /etc/my.cnf
 server-id=2 log-bin="mysql-bin" binlog-do-db=name_of_database replicate-do-db=name_of_database relay-log="mysql-relay-log" auto-increment-offset =2  

Ujistěte se, že jste nahradili name_of_database názvem databáze, kterou chcete replikovat

Restartujte a povolte démona MySQL na každém serveru

Server A

[[email protected] ~]# systemctl restart mysqld
[[email protected] ~]# systemctl povolit mysqld

Server B

[[email protected] ~]# systemctl restart mysqld
[[email protected] ~]# systemctl povolit mysqld

Vytvoření uživatele replikátoru na každém serveru

[[email protected] ~]# mysql -u root -p

mysql> VYTVOŘIT UŽIVATELE 'replicator'@'%' IDENTIFIKOVÁNO 'change_me';
mysql> GRANT REPLICATION SLAVE ON foo.* TO 'replicator'@'%'
[[email protected] ~]# mysql -u root -p

mysql> VYTVOŘIT UŽIVATELE 'replicator'@'%' IDENTIFIKOVÁNO 'change_me';
mysql> GRANT REPLICATION SLAVE ON foo.* TO 'replicator'@'%'

Získat informace o souboru protokolu pro použití na druhém serveru

Server A

[[e-mail chráněný] ~]# mysql -u root -p

mysql> ZOBRAZIT STAV HLAVNÍHO STAVU;

+---------- --------+----------+------------------+----------- -------+
| Soubor             | Pozice | Binlog_Do_DB     | Binlog_Ignore_DB |
+------------------+----------+------------- -----+------------------+
| mysql-bin.000001 | 154      | název_databáze | |
+------------------+----------+-------------- ----+------------------+
1 řádek v sadě (0,00 s)

Všimněte si "Soubor" a "Pozice" z tohoto příkazu

Server B

[[e-mail chráněný] ~]# mysql -u root -p

mysql> STOP SLAVE;

mysql> ZMĚNIT MASTER NA MASTER_HOST ='Server A IP adresa nebo HOSTNAME',MASTER_USER ='replikátor', MASTER_PASSWORD ='change_me', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS =154;
mysql> START SLAVE;

Opakujte stejné kroky na serveru B

Server B

[[e-mail chráněný] ~]# mysql -u root -p mysql> ZOBRAZIT STAV HLAVNÍHO STAVU;

+------------------ +----------+------------------+------------------+
| Soubor             | Pozice | Binlog_Do_DB     | Binlog_Ignore_DB |
+------------------+----------+------------- -----+------------------+
| mysql-bin.000001 | 154      | název_databáze | |
+------------------+----------+-------------- ----+------------------+
1 řádek v sadě (0,00 s)

Všimněte si "Soubor" a "Pozice" z tohoto příkazu

Server A

[[e-mail chráněný] ~]# mysql -u root -p 

mysql> STOP SLAVE; CHANGE MASTER TO MASTER_HOST ='IP adresa serveru B nebo HOSTNAME', MASTER_USER ='replikátor', MASTER_PASSWORD ='passw0rd', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS =154;
mysql> START SLAVE;

Restartujte oba servery

Server A

[[email protected] ~]# restart systemctl

Server B

[[email protected] ~]# restart systemctl

Na kterémkoli serveru vytvořte svou databázi

[[email protected] ~]# mysql -u root -p 

mysql> CREATE DATABASE foo;

Na druhém serveru zkontrolujte, zda existuje databáze

[[email chráněný] ~]# mysql -u root -p

mysql> ZOBRAZIT DATABÁZE;

+--------------------+
| Databáze           |
+--------------------+
| informační_schéma |
| foo                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 řádků v sadě (0,00 s)

Zdroje

  • https://www.howtoforge.com/mysql_database_replication
  • https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication
  • https://www.howtoforge.com/mysql_master_master_replication
  • http://www.ryadel.com/en/mysql-master-master-replication-setup-in-5-easy-steps/

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

  2. Jak nastavit Pure-FTPD s MySQL na CentOS a RedHat

  3. Nastavte replikaci zdrojové repliky MySQL

  1. Nastavení replikace Master-Master s MySQL na Debian 8 (Jessie)

  2. Jak nastavit LogAnalyzer s Rsyslog a MySQL

  3. Jak nastavit replikaci MySQL na CentOS

  1. Jak nastavit replikaci MySQL Master Slave Replication

  2. Jak nastavit replikaci MariaDB Master Slave na Ubuntu 18.04

  3. Nakonfigurujte replikaci zdroje MySQL