MySQL Replication umožňuje snadno kopírovat databázi z jednoho serveru na druhý. MySQL podporuje různé druhy replikace, jako je master-slave, master-master a skupinová replikace. MariaDB také podporuje multi-master replikaci. V tomto článku se podíváme na replikaci Master-Slave v MySQL a naučíme se, jak replikovat databázi MySQL v Linuxu. Tyto kroky můžete použít k replikaci databáze MySQL v Ubuntu, Debianu, CentOS, Fedoře, Red hat a dalších typech Linuxu.
Jak replikovat databázi MySQL
Zde jsou kroky k replikaci databáze MySQL. Pro naše nastavení budeme potřebovat hlavní databázi (IP – 54.24.32.12) a podřízenou databázi (IP – 45.12.21.23). Budeme replikovat databázi s názvem exampledb z pána na otroka. Předpokládali jsme, že na obou těchto serverech máte nainstalovanou MySQL a pro oba máte oprávnění root. Jinak můžete nainstalovat MySQL pomocí následujícího příkazu
$ sudo apt-get install mysql-server mysql-client
Bonusové čtení:Nejlepší alternativy MySQL Workbench
1. Upravit hlavní konfigurační soubor
Otevřete terminál na serveru hlavní databáze a spusťte následující příkaz
$ sudo vi /etc/mysql/my.cnf
Ve výchozím nastavení jsou vzdálená připojení v MySQL zakázána. Musíme povolit vzdálené připojení z slave na master pro replikaci. Odkomentujeme tedy následující dva řádky, abychom umožnili vzdálená připojení, přidáním # na jejich začátek, jak je znázorněno níže
#skip-networking #bind-address=127.0.0.1
Přidejte nebo odkomentujte následující řádky v bloku [mysqld], aby vypadaly takto.
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
Podívejme se na každý z výše uvedených řádků. První řádek server-id určuje jedinečné ID číslo pro master. Musí to být kladné číslo od 1 do 2^32.
přihlašovací schránka určuje umístění souboru protokolu, který bude naplněn MySQL s podrobnostmi o replikaci.
binlog-do-db označuje název databáze, kterou je třeba replikovat.
Pro použití změn restartujte MySQL Server
$ sudo service mysql restart
Přihlaste se do MySQL jako uživatel root
$ sudo mysql -u root -p
a spusťte následující příkaz
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
Všimněte si prosím výše uvedených podrobností, budeme je potřebovat později v kroku #3.
Bonusové čtení:Jak povolit SSL/TLS v MySQL
2. Vytvořit uživatele replikace
Přihlaste se k serveru MySQL na hlavním serveru.
$ sudo mysql -u root -p
Budete vyzváni k zadání hesla root.
Po přihlášení do MySQL spusťte následující příkazy a vytvořte vzdáleného uživatele slave_user a udělte mu oprávnění k replikaci pro všechny databáze. Nahraďte prosím 45.12.21.23 níže IP adresou vašeho podřízeného serveru a nahraďte $password vhodným heslem podle vašich požadavků.
mysql> CREATE USER slave_user@45.12.21.23; mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23 IDENTIFIED BY '$password'; mysql> FLUSH PRIVILEGES;
Přidejte prosím pravidlo příchozí brány firewall pro port 3306 a povolte 45.12.21.23. Tento vzdálený uživatel se potřebuje připojit k hlavní databázi, aby mohla probíhat replikace.
Bonusové čtení:Jak změnit řazení všech tabulek v MySQL
3. Upravit konfigurační soubor Slave
Otevřete terminál na serveru slave databáze a spusťte následující příkaz
$ sudo vi /etc/mysql/my.cnf
Přidejte následující řádky pod [mysqld], aby vypadaly jako
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = exampledb
V prvním řádku přiřadíme podřízenému serveru ID serveru 2. Dalších několik řádků určuje umístění souborů protokolu přenosu a protokolu replikace. Poslední řádek určuje databázi, která má být replikována.
Restartujte MySQL Server a přihlaste se do MySQL
$ sudo service mysql restart $ sudo mysql -u root -p
Spuštěním následujících příkazů vytvořte prázdnou databázi na slave.
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
Načíst data z hlavní databáze do podřízené databáze
mysql> LOAD DATA FROM MASTER;
Ukončete MySQL.
Bonusové čtení:Nejlepší databázové blogy ke sledování
4. Inicializovat replikaci
Když jste přihlášeni do MySQL, spusťte následující příkazy pro zahájení procesu replikace. Vyměňte díly tučně s vašimi hodnotami.
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
MASTER_HOST – IP adresa nebo název hostitele mastera (54.24.32.12).
MASTER_USER – slave uživatel, kterého jsme vytvořili v kroku #2.
MASTER_PASSWORD – heslo podřízeného uživatele, které jsme vytvořili v kroku #2.
MASTER_LOG_FILE – soubor, který MySQL vrátil v kroku #1, když jste spustili
ZOBRAZIT STAV HLAVNÍHO
MASTER_LOG_POS – pozice, kterou MySQL vrátilo, když jste v kroku #1 spustili SHOW MASTER STATUS
Nakonec spustíme slave, abychom zahájili replikaci databáze MySQL.
mysql> START SLAVE;
Doufejme, že vám tento článek pomůže replikovat databázi MySQL.