Volver a MySQL Básico
Replicación y Alta Disponibilidad en MySQL
Replicación Primario-Réplica
# Configuración del servidor primario (my.cnf)
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
# Configuración del servidor réplica (my.cnf)
[mysqld]
server-id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
read_only = 1
-- En el primario: crear usuario de replicación
CREATE USER 'replication'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
-- Obtener posición del binlog
SHOW MASTER STATUS;
-- En la réplica: configurar y arrancar
CHANGE MASTER TO
MASTER_HOST='primary_ip',
MASTER_USER='replication',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
Replicación GTID
[mysqld]
server-id = 1
log_bin = mysql-bin
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_format = ROW
-- Configurar réplica con GTID
CHANGE MASTER TO
MASTER_HOST='primary',
MASTER_USER='replication',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION = 1;
START SLAVE;
Group Replication (Multi-Primary)
-- Instalar plugin
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
-- Configurar el primer nodo (bootstrap)
SET GLOBAL group_replication_bootstrap_group = ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group = OFF;
-- Unir nodos adicionales
START GROUP_REPLICATION;
-- Verificar miembros del grupo
SELECT * FROM performance_schema.replication_group_members;
Respaldos con mysqldump
# Backup consistente con bloqueo de lecturas
mysqldump --single-transaction \
--flush-logs \
--master-data=2 \
--all-databases \
-u root -p > full_backup.sql
# Restaurar
mysql -u root -p < full_backup.sql
InnoDB Cluster con MySQL Shell
// Crear un cluster desde MySQL Shell
var cluster = dba.createCluster('MiCluster');
// Agregar instancias
cluster.addInstance('user@host2:3306');
cluster.addInstance('user@host3:3306');
// Ver estado del cluster
cluster.status();
// Conmutación por error manual
cluster.setPrimaryInstance('user@host2:3306');