Una determinada base de datos en el entorno de producción de la empresa debe realizar la replicación maestro-esclavo sobre la base de los datos existentes en la base de datos maestra. Cuando se trata del entorno de producción, debe tener cuidado.
1. Instale la base de datos esclava
La biblioteca principal ya existe, la IP de la intranet es 10.200.9.183 y la biblioteca esclava está lista para construirse el 10.200.9.188.
(1) Descargue y descomprima el paquete de compresión de la base de datos
La versión de la base de datos utilizada es mariadb-10.0.33, método de descarga:
wget https://downloads.mariadb.com/MariaDB/mariadb-10.0.33/bintar-linux-x86_64/mariadb-10.0.33-linux-x86_64.tar.gz
Descomprima el paquete comprimido de la base de datos:
tar -xzvf mariadb-10.0.33-linux-x86_64.tar.gz
Mover a la ubicación especificada:
mv mariadb-10.0.33-linux-x86_64 /data/mariadb-10.0.33
(2) Cambiar configuración
Haga una copia de seguridad del archivo de configuración de la base de datos predeterminada en / etc:
mv /etc/my.cnf /etc/my.cnf.bak
Copie la plantilla del archivo de configuración en la base de datos en / etc /
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
Editar archivo de configuración
vim /etc/my.cnf
Cambiar lo siguiente
basedir=/data/mariadb-10.0.33
datadir=/data/mariadb-10.0.33/data
(3) Cree un usuario de mysql y cambie los permisos
Crea un usuario de mysql:
useradd -s /sbin/nologin -M mysql
Cambie el usuario y el grupo de todos los archivos mysql a mysql
chown -R mysql:mysql /data/mariadb-10.0.33
Especifique el usuario y la ruta del archivo para inicializar mysql
./scripts/mysql_install_db --basedir=/data/mariadb-10.0.33 --datadir=/data/mariadb-10.0.33/data/ --user=mysql
(4) Configure el script de inicio para iniciar mysql
MariaDB proporciona un script de inicio. En el directorio de archivos de soporte del directorio de instalación, el nombre del archivo es mysql.server y cópielo en /etc/init.d
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
Iniciar mysql
/etc/init.d/mysqld start
o
service mysqld start
Configuración de inicio automático de inicio de mysql:
chkconfig --add mysqld
chkconfig mysqld on
Verifique si mysql se agrega a la lista de inicio:
chkconfig --list
Como se muestra a continuación, la adición es exitosa
(5) autorización de usuario root de mysql:
Iniciar sesión en mysql
/data/mariadb-10.0.33/bin/mysql -u root
Autorización:
grant all privileges on *.* to 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
grant all privileges on *.* to 'root'@'127.0.0.1' identified by '123456';
Actualizar permisos:
flush privileges;
(6) Agregue el comando mysql a la variable de entorno
Edite el archivo / etc / profile:
vim /etc/profile
Agregue lo siguiente a la última línea
export PATH=$PATH:/data/mariadb-10.0.33/bin
Actualizar variables de entorno
source /etc/profile
2. Configuración de la biblioteca principal
(1) Edite el archivo de configuración de la biblioteca principal:
vim /etc/my.cnf
Configure el nombre del archivo binlog:
log-bin = mysql-bin
Establezca el ID del servidor (el ID del servidor debe ser único y no se puede duplicar desde la biblioteca):
server-id = 1
Configure la sincronización maestro-esclavo para sincronizar solo una determinada base de datos
binlog-do-db = newenergy
Establezca el tiempo de vencimiento del binlog:
expire_logs_days = 2
Establecer formato de registro
binlog_format = mixed
- declaración guarda la declaración SQL
- fila guarda los datos del registro de impacto
- Se
recomienda configurar la combinación de los dos primeros en modo mxed
(2) Cree una cuenta con permisos de copia
La IP es de la IP de la biblioteca
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@' 10.200.9.188' IDENTIFIED BY 'replpass';
Actualizar permisos
FLUSH PRIVILEGES;
Reiniciar la base de datos
service mysqld restart
4. Conjunto de la biblioteca
(1) Edite el archivo de configuración de la biblioteca
vim /etc/my.cnf
Establecer registro de relés registro de relés
relay-log = relay-bin
Establezca server-id (server-id debe ser único y no puede entrar en conflicto con la biblioteca principal y otras bibliotecas esclavas):
server-id = 2
(2) Reinicie el
servicio de base de datos mysqld restart
5. Sincronice la base de datos principal de la base de datos.
(1) Bloquee la biblioteca principal para que solo tenga permisos de solo lectura.
flush table with read lock;
(2) Verifique el estado del maestro y recuerde el punto de respaldo
El contenido del cuadro rojo debe mantenerse y registrarse, y la copia de seguridad se inicia desde este lugar.
(3) Haga una copia de seguridad de la base de datos principal
Debido a que solo se sincroniza una base de datos, es suficiente realizar una copia de seguridad de esta.
mysqldump -uroot -p123456 newenergy > newenergy.sql
(4) Desbloquear mesa
unlock tables;
(5) Importe la copia de seguridad de la biblioteca
mysql -uroot -p123456
source newenergy.sql
(6) De la biblioteca a la biblioteca principal
Se recomienda utilizar la sentencia SQL "CHANGE MASTER TO" para modificar la configuración correspondiente. Las principales modificaciones son:
- master_host: IP de host maestro
- master_port: puerto de la base de datos maestra
- master_user: el nombre de usuario utilizado por el esclavo para conectarse al maestro para la autenticación
- master_password: la contraseña utilizada por el esclavo para conectarse al maestro para la autenticación
- master_log_file: el nombre del registro binario maestro
- master_log_pos: la posición inicial del registro binario donde el esclavo comienza a replicarse
El contenido de configuración de los dos últimos parámetros master_log_file y master_log_pos son los contenidos de Archivo y Posición que previamente se requería que se mantuvieran durante el estado del maestro de la demostración.
Inicie sesión en la base de datos esclava
mysql -u root -p123456
Conéctese a la biblioteca principal
CHANGE MASTER TO MASTER_HOST='10.200.9.183',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='mysql-bin.000002',master_port=3307,MASTER_LOG_POS=154;
(7) Inicie el esclavo
start slave;
(8) Ver el estado del esclavo
show slava status\G;
Como se muestra a continuación, tanto Slave_SQL_Running como Slave_IO_Running muestran Sí para demostrar que el esclavo se conectó con éxito al maestro.
(9) Solución de problemas
Si Slave_IO_Running no muestra sí, Last_IO_Error mostrará la causa del error, como se muestra en la figura:
Aquí, el ID de servidor de la base de datos maestro-esclavo del nombre de la tabla está duplicado y uno de los ID de servidor debe ser modificado y reiniciado.
Esto significa que no se puede conectar a la base de datos principal, lo que puede deberse a la falla del puerto de la base de datos principal o la IP inalcanzable. Compruebe si la biblioteca secundaria se puede conectar a la biblioteca maestra.
6. Verifique si la sincronización es exitosa
Cree una tabla o agregue un campo en la base de datos newenergy de la biblioteca principal, y podrá verlo en la biblioteca esclava para indicar que la sincronización se realizó correctamente. También puede ver el retraso de sincronización al ver el valor de Seconds_Behind_Master.