sql >> Base de Datos >  >> RDS >> Mysql

Cómo replicar la base de datos MySQL a otro servidor

MySQL Replication le permite copiar fácilmente la base de datos de un servidor a otro. MySQL admite diferentes tipos de replicación, como maestro-esclavo, maestro-maestro y replicación de grupo. MariaDB también es compatible con la replicación multimaestro. En este artículo, veremos la replicación Maestro-Esclavo en MySQL y aprenderemos cómo replicar la base de datos MySQL en Linux. Puede usar estos pasos para replicar la base de datos MySQL en Ubuntu, Debian, CentOS, Fedora, Red Hat y otros tipos de Linux.


Cómo replicar una base de datos MySQL

Estos son los pasos para replicar la base de datos MySQL. Para nuestra configuración, necesitaremos una base de datos maestra (IP – 54.24.32.12) y una base de datos esclava (IP – 45.12.21.23). Replicaremos la base de datos llamada exampledb de amo a esclavo. Hemos asumido que tiene MySQL instalado en ambos servidores y tiene privilegios de root para ambos. De lo contrario, puede instalar MySQL con el siguiente comando

$ sudo apt-get install mysql-server mysql-client

Lectura adicional:las mejores alternativas de MySQL Workbench


1. Editar archivo de configuración maestra

Abra la terminal en el servidor de la base de datos maestra y ejecute el siguiente comando

$ sudo vi /etc/mysql/my.cnf

De forma predeterminada, las conexiones remotas están deshabilitadas en MySQL. Necesitamos permitir la conexión remota del esclavo al maestro para la replicación. Descomentamos las siguientes dos líneas para permitir conexiones remotas, agregando # al principio, como se muestra a continuación

#skip-networking
#bind-address=127.0.0.1

Agregue o elimine los comentarios de las siguientes líneas en el bloque [mysqld] para que se vean como lo siguiente.

[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb

Veamos cada una de las líneas anteriores. La primera línea server-id especifica un número de identificación único para el maestro. Tiene que ser un número positivo del 1 al 2^32.

contenedor de registro especifica la ubicación del archivo de registro que MySQL completará con los detalles de la replicación.

binlog-do-db indica el nombre de la base de datos que necesita ser replicada.

Reinicie el servidor MySQL para aplicar los cambios

$ sudo service mysql restart

Inicie sesión en MySQL como usuario root

$ sudo mysql -u root -p

y ejecute el siguiente comando

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 |   exampledb  |                  |
+------------------+----------+--------------+------------------+

Tenga en cuenta los detalles anteriores, los necesitaremos más adelante en el Paso 3.

Lectura adicional:Cómo habilitar SSL/TLS en MySQL


2. Crear usuario de replicación

Inicie sesión en el servidor MySQL en el maestro.

$ sudo mysql -u root -p

Se le pedirá la contraseña de root.

Después de iniciar sesión en MySQL, ejecute los siguientes comandos para crear un usuario remoto slave_user y concédale permisos de replicación para todas las bases de datos. Reemplace 45.12.21.23 a continuación con la IP de su servidor esclavo y reemplace $password con una contraseña adecuada según sus requisitos.

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;

Agregue una regla de firewall entrante para el puerto 3306 y permita 45.12.21.23. Este usuario remoto necesita conectarse a la base de datos maestra para que se produzca la replicación.

Lectura adicional:Cómo cambiar la intercalación de todas las tablas en MySQL


3. Editar archivo de configuración de esclavo

Abra la terminal en el servidor de la base de datos esclava y ejecute el siguiente comando

$ sudo vi /etc/mysql/my.cnf

Agregue las siguientes líneas debajo de [mysqld] para que parezca

[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

En la primera línea, asignamos la ID del servidor de 2 al servidor esclavo. El siguiente par de líneas especifican las ubicaciones de los archivos de registro de replicación y registro de retransmisión. La última línea especifica la base de datos que se replicará.

Reinicie el servidor MySQL e inicie sesión en MySQL

$ sudo service mysql restart
$ sudo mysql -u root -p

Ejecute los siguientes comandos para crear una base de datos vacía en el esclavo.

mysql> CREATE DATABASE exampledb; 
mysql> USE exampledb;

Cargue datos de la base de datos maestra para llenar la base de datos esclava

mysql> LOAD DATA FROM MASTER;

Salga de MySQL.

Lectura adicional:Principales blogs de bases de datos a seguir


4. Inicializar replicación

Mientras está conectado a MySQL, ejecute los siguientes comandos para iniciar el proceso de replicación. Reemplazar partes en negrita con tus valores.

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:dirección IP o nombre de host del maestro (54.24.32.12).
MASTER_USER – usuario esclavo que creamos en el paso #2.
MASTER_PASSWORD:contraseña del usuario esclavo que creamos en el paso n.º 2.
MASTER_LOG_FILE:archivo que MySQL devolvió en el paso n. ° 1 cuando ejecutó
MOSTRAR ESTADO DEL MAESTRO
MASTER_LOG_POS:posición que MySQL devolvió cuando ejecutó SHOW MASTER STATUS en el paso n.º 1

Finalmente, iniciamos el esclavo para comenzar la replicación de la base de datos MySQL.

mysql> START SLAVE;

Con suerte, este artículo lo ayudará a replicar la base de datos MySQL.