Nota :Rackspace Support no puede ayudar con las configuraciones de replicación de origen a origen debido a la complejidad de la configuración y la probabilidad de error. Como alternativa a la replicación fuente-fuente directa de MySQL, considere nuestro servicio de bases de datos en la nube o un motor de replicación como Tungsten para una replicación de datos más confiable entre instancias de bases de datos.
Replicación fuente-fuente de MySQL
Este artículo le muestra cómo configurar la replicación de clústeres:replicación bidireccional y circular entre dos servidores en la nube. La replicación de datos fuente-fuente permite que los datos replicados, almacenados en varias computadoras, sean actualizados por cualquier miembro contribuyente autorizado del grupo. Esto permite una colaboración más abierta que la replicación de réplicas de fuentes, donde cualquier cambio necesario identificado por un miembro del grupo debe enviarse a la fuente designada del nodo.
Este tutorial utiliza el sistema operativo Debian 5 (Lenny), creado a partir de la imagen base de RackspaceCloud.
Resumen de configuración
Hay dos servidores en la nube, debian501
y debian502
, en este ejercicio. Ambos servidores tienen dos direcciones IP (una pública y otra privada). El ejercicio configura la replicación para que se realice a través de la interfaz de IP privada para que no incurra en cargos por ancho de banda.
Creando los Servidores en la Nube
Debe crear dos servidores en la nube de Linux utilizando la imagen base de Debian 5. Utilice los siguientes pasos para crear cada servidor por separado.
- Inicie sesión en el Panel de control de la nube.
- En la barra de navegación superior, haga clic en Seleccione un producto> Rackspace Cloud .
- Seleccione Servidores> Servidores en la nube .
- Haga clic en Crear servidor .
- Nombra los servidores para que puedas identificarlos fácilmente durante la configuración. En este ejercicio se denominan debian501 y debian502.
- Seleccione la imagen de Debian.
- Seleccione la configuración de RAM (tipo) que cumpla con los requisitos de su base de datos.
- Haga clic en Crear servidor .
Los siguientes comandos del servidor deben ejecutarse como un usuario privilegiado (raíz, grupo sudo).
Instalando MySQL
Primero necesitamos instalar MySQL en ambos servidores Debian Cloud. Como siempre, antes de instalar cualquier paquete, debemos asegurarnos de que nuestra lista de paquetes esté actualizada y que nuestra configuración regional/idioma esté configurada correctamente.
-
Actualice la base de datos del paquete:
# aptitude update
-
Instalar configuraciones regionales:
# aptitude install locales # dpkg-reconfigure locales
-
Los
dpkg-reconfigure locales
El comando abre una ventana de configuración de locales donde puede elegir los locales para su sistema dependiendo de su país y región. En este caso, elijaen\_GB.UTF-8
. -
Ahora, ejecute los siguientes comandos para instalar MySQL:
# aptitude install mysql-server mysql-client libmysqlclient15-dev
Configuración de la replicación
Una vez que el servidor mysql El paquete se ha instalado correctamente, comience a configurar cada uno de los nodos de MySQL para habilitar la replicación entre ellos.
Debe crear la base de datos que se replicará, así como el nombre de usuario y la contraseña de replicación que se usarán con ella. Puede usar los comandos que se describen a continuación para configurarlos, recordando cambiar todas las cadenas/valores entre paréntesis para que se apliquen a su configuración específica.
-
Primero, en debian501, inicie sesión en la consola mysql (utilizando la contraseña raíz de mysql que configuró durante la instalación de MySQL).
# mysql -u root -p mysql>
-
Ahora, cree el usuario de replicación, que se utiliza para sincronizar los cambios.
mysql> grant replication slave on \*.\* to replicauser@'[private IP of debian502]' identified by '[some password]'; mysql> flush privileges; mysql> exit
-
Haga lo mismo para debian502.
mysql> grant replication slave on \*.\* to replicauser@'[private IP of debian501]' identified by '[some password]'; mysql> flush privileges; mysql> exit
-
De vuelta en debian501, edite /etc/mysql/my.cnf e inserte, actualice o descomente las siguientes entradas:
bind-address = 0.0.0.0 server-id = 1 log-bin = /var/log/mysql/var/bin.log log-slave-updates log-bin-index = /var/log/mysql/log-bin.index log-error = /var/log/mysql/error.log relay-log = /var/log/mysql/relay.log relay-log-info-file = /var/log/mysql/relay-log.info relay-log-index = /var/log/mysql/relay-log.index auto_increment_increment = 10 auto_increment_offset = 1 master-host = [private IP address of debian502] master-user = [replication username] master-password = [replication password] replicate-do-db = <database name to be replicated>
-
Repita los pasos en el servidor debian502.
bind-address = 0.0.0.0 server-id = 2 log-bin = /var/log/mysql/bin.log log-slave-updates log-bin-index = /var/log/mysql/log-bin.index log-error = /var/log/mysql/error.log relay-log = /var/log/mysql/relay.log relay-log-info-file = /var/log/mysql/relay-log.info relay-log-index = /var/log/mysql/relay-log.index auto_increment_increment = 10 auto_increment_offset = 2 master-host = [private IP address of debian501] master-user = [replication username] master-password = [replication user password] replicate-do-db = [database name to be replicated]
-
Ahora, reinicie ambas bases de datos. Si falla el reinicio del servicio en cualquiera de los servidores, verifique /var/log/mysql/error.log archivo para cualquier error. Actualice la configuración y verifique que no haya errores tipográficos, y así sucesivamente.
Probando los escenarios
Para probar su configuración de replicación, cree la base de datos especificada en la sección de configuración anterior. También cree una tabla de prueba en uno de los nodos y observe los archivos de registro en /var/log/mysql directorio. Tenga en cuenta que todos los cambios en la base de datos deben replicarse en su otro servidor inmediatamente.
mysql> create database [your-db-name];
mysql> use [your-db-name]
mysql> create table foo (id int not null, username varchar(30) not null);
mysql> insert into foo values (1, 'bar');
-
Como prueba adicional, detenga el servicio MySQL en debian502, realice cambios en la base de datos en el servidor debian501 y luego reinicie el servicio MySQL en debian502. El servicio MySQL de debian502 debería sincronizar todos los cambios nuevos automáticamente.
-
También debe considerar cambiar los valores predeterminados de rotación de registros binarios (
expire_logs_days
ymax_binlog_size
) en el /etc/mysql/my.cnf porque, de forma predeterminada, todos los registros binarios se conservan durante 10 días. Si tiene un alto número de transacciones en su aplicación de base de datos, puede causar un uso significativo del espacio del disco duro en los registros. Por lo tanto, considere cambiar esos valores para que coincidan con las políticas de copia de seguridad de su servidor. Por ejemplo, si tiene copias de seguridad diarias configuradas de su nodo MySQL, no necesita mantener 10 días de registros binarios.