Mysql: replica circolare master-master

Alcuni appunti presi http://www.azns.it/2011/04/13/due-server-mysql-in-replica-circolare-master-master/ per configurare un mysql in replica circolare master-master in modo da scalare.

Configurazione server 1:

/etc/mysql/conf.d/replica.cnf
[mysqld]
bind-address			= 0.0.0.0
server-id                       = 10
auto_increment_increment        = 10
auto_increment_offset           = 1
master-host                     = server2.dominio.local
master-user                     = replicauser
master-password                 = replicapass
log_bin				= /var/log/mysql/mysql-bin.log
binlog_ignore_db		= mysql

Configurazione server 2:

/etc/mysql/conf.d/replica.cnf
[mysqld]
bind-address			= 0.0.0.0
server-id                       = 20
auto_increment_increment        = 10
auto_increment_offset           = 2
master-host                     = server1.dominio.local
master-user                     = replicauser
master-password                 = replicapass
log_bin				= /var/log/mysql/mysql-bin.log
binlog_ignore_db		= mysql

Riavviare mysql su entrambi i server e impartire il seguente comando da console:

CREATE USER 'replicauser'@'%.san.local' IDENTIFIED BY 'replicapass';
GRANT replication slave ON *.* TO 'replicauser'@'%.dominio.local';
START slave;
SHOW slave STATUS\G;

Controllare la replica mysql

Dopo diversi problemi con la replica di mysql ho realizzato uno script che una volta inserito nel crontab mi avverte per posta di un eventuale errore

check_mysql_replicate.sh

#!/bin/bash
check_str=`mysql -u user_mysql --password=password_mysql -e "SHOW SLAVE STATUSG" |grep Last_Error | cut -d ':' -f 2 `
check=`echo $check_str | tr -d ' '`
if [ $check ]; then
  echo "                 ATTENZIONE !!!!!"
  echo "POSSIBILE ERRORE NELLA REPLICA DI MYSQL"
  echo
  echo
  echo ERRORE=$check_str
fi