Cluster MySql ( Cluster Circular Master-Master)

Para realizar  se debe configurar el archivo /etc/my.cnf con los siguientes datos.

Servidor A:
/etc/my.cnf
server-id=1
log-bin = mysql-bin
sync_binlog                        = 1
max-binlog-size                  = 500M
expire_logs_days                = 4
innodb_flush_log_at_trx_commit  = 1
relay-log                   = mysqld-relay-bin
max-relay-log-size   = 500M
relay_log_purge       = 1
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Servidor B:
/etc/my.cnf
server-id=2
 log-bin = mysql-bin
 sync_binlog                        = 1
 max-binlog-size                  = 500M
 expire_logs_days                = 4
 innodb_flush_log_at_trx_commit  = 1
 relay-log                   = mysqld-relay-bin
 max-relay-log-size   = 500M
 relay_log_purge       = 1
 symbolic-links=0
[mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid

En los dos servidores se debe crear un usuario para la replicación, esto se realiza en el cli de mysql. Se realiza con los siguientes comandos:

# mysql -u root -p
 mysql>
 mysql> grant replication slave, replication client on *.* to 'replication'@'%' identified by 'Master20';
mysql> FLUSH PRIVILEGES;
mysql> show grants for replication@"%";

Se debe saber la direccion del archivo binario y la posición en la que se encuentra el puntero. esto se debe teneren cuenta en los dos servidores

mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73       | test         | manual,mysql     |
+---------------+----------+--------------+------------------+

En el ejemplo el archivo binario es mysql-bin.003 y esta en la posición 73.

Con la información del archivo binario y la posición del servidor A se ejecuta la edición en el servidor B, se debe parar el sistema de esclavo, la sentencia es la siguiente.

mysql>slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='{IP_SERVIDOR_A}',MASTER_USER='replication', MASTER_PASSWORD='Master20', MASTER_LOG_FILE='{Binary_Log}', MASTER_LOG_POS=  {Binary_Position};
mysql> slave start;

En el caso del ejemplo nos da:

mysql>slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='{IP_SERVIDOR_A}',MASTER_USER='replication', MASTER_PASSWORD='Master20', MASTER_LOG_FILE='mysql-bin.003', MASTER_LOG_POS=  73;
mysql> slave start;

Luego de realizar este cambio se debe revisar los tiempos de sincronización con la sentencia:

mysql> show slave status\G

Creacion de servidor SysLog

Para crear un servidor de logs se utiliza rsyslog. Rsyslog permite tener un servidor de logs multi plataforma escalable y estable.

En RHEL 6.x/ CentOs 6.x viene instalado por defecto para versiones anteriores se debe instalar con el comando:

yum install rsyslog

Para versiones basadas en Debian se puede utilizar:

apt-get install rsyslog

La configuración de rsyslog se la realiza en el archivo /etc/rsyslog

Para configurar como servidor externo se debe descomentar las lineas de uso del módulo TCP y UDP:

#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
#######

Se debe iniciar el servicio con el comando:

# service rsyslog restart

Con esta configuración, el servidor escucha en el puerto 514 tanto en TCP como en UDP.  Para abrir el firewall en este puerto se usa las siguientes lineas en el archivo

/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 514 -j ACCEPT
-A INPUT -m udp -p udp --dport 514 -j ACCEPT

Estas líneas deben estar antes de las reglas REJECT.