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 =1Server B
[[email protected] ~]# vi /etc/my.cnfserver-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 =2Ujistě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 mysqldServer 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 systemctlServer 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/