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.