sql >> Databáze >  >> RDS >> Mysql

Jak replikovat databázi MySQL na jiný server

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.

  1. Upsert s transakcí

  2. Seskupená agregace řetězců / LISTAGG pro SQL Server

  3. Nelze použít UPDATE s klauzulí OUTPUT, když je na stole spouštěč

  4. Funkce zabezpečení v SQL Server 2017