MySQL GTID copiar y tratamiento de errores

No se basa en un nuevo GTID replicación copiado de Mysql5.6 comenzaron a apoyar esto con la manera tradicional basada en registros muy diferentes, en la copia original de la conexión basada en registros desde el servidor al servidor maestro y Tell compensado servidor principal desde el que el registro binario comienza a realizar la sincronización incrementales, a continuación, acceder a compensar si no se especifica, que puede resultar de datos maestros inconsistentes, y en base a la duplicación GTID evitar.
La replicación basada en GTID, el primero en decirle al servidor principal desde el servidor ya se está ejecutando sobre el valor GTID el que la transacción desde el servidor, entonces la base de datos primaria no poner todas las transacciones en la ejecución de la biblioteca, enviados para ser ejecutado desde la biblioteca, y el uso GTID asegura de replicación que sólo la misma operación ejecutada en el momento especificado de la biblioteca, así que para evitar problemas causados por las inconsistencias en los datos de compensación.
¿Cuál es el GTID, es decir, ID de transacción global, lo que garantiza a cada transacción confirmada en el primario puede generar un identificador único en el grupo de replicación.
A GITD consta de dos partes, a saber source_id y transaction_id, GTID = source_id: transaction_id, que source_id es valor de servidor-uuid, valor de servidor-uuid de la biblioteca principal de la ejecución de la transacción es el primer lanzamiento generada en el servicio MySQL, almacenada en la base de datos directorio de datos, hay un archivo auto.conf en el directorio de datos, el archivo contiene el valor del servidor-uuid (sólo). El ID de transacción es de la secuencia a partir de crecimiento, lo que indica que la transacción es la primera de varias operaciones ejecutadas en la biblioteca principal, MySQL y se asegurará de que esta transacción GTID relación uno a uno.

Configurar las necesidades de los servidores de base de datos primarios que se harán sobre los propietarios tradicionales, la necesidad de establecer una configuración mínima de casi en la cuenta de replicación del servidor principal, configurar el archivo de registro de base de datos de directorio, es necesario iniciar registro bin_log.
Puede especificar el directorio de almacenamiento bin_log, en lugar del directorio de datos, almacenamiento por separado es un buen hábito, especialmente si el registro y los datos en la partición de disco independiente, no sólo va a evitar el crecimiento de la partición de disco de datos de registro se completa, también puede mejorar S de disco. El bin_log = / usr / local / mysql / log / mysql-bin.

Ventajas
   A: muy conveniente para la conmutación por error, porque GTID es un identificador único a nivel mundial, por lo que es fácil de saber qué operación no se lleva a cabo desde un servidor, varios servidores de no necesitar ser configurado con múltiples desplazamientos de registro.

   B: desde la base de datos y la consistencia principal base de datos.

Desventaja
  A: Solución de problemas complejos que los de procesamiento de registro.
  B: Un poco de ejecución restricciones de la declaración.

Comenzar a configurar la replicación GTID maestro-esclavo

Máquina virtual IP: 192.168.136.142 (Maestro), 192.168.136.143 (Esclavo)

MySQL Versión: 5.6 (5.7 y 5.6 de configuración es un poco diferente, si la versión de MySQL 5.7, puede hacer referencia a otros artículos)

En primer lugar configurar el aspecto del servidor principal, editar /etc/my.cnf

[mysqld]
port = 3306
socket = /tmp/mysql.sock

basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
server-id = 142
log_bin = mysql-bin
bin_log = /usr/local/mysql/log/mysql-bin
binlog_format = ROW       //建议row
log-slave-updates=true      //在从服务器进入主服务器传入过来的修改日志所使用,在Mysql5.7之前主从架构上使用gtid模式的话,必须使用此选项,在Mysql5.7取消了,会增加系统负载。 
enforce-gtid-consistency=true   // 强制gtid一直性,用于保证启动gitd后事务的安全; 
gtid-mode=on //开启gtid模式 
master_info_repository=TABLE 
relay_log_info_repository=TABLE //指定中继日志的存储方式,默认是文件,这样配置是使用了 两个表,是INNODB存储引擎,好处是当出现数据库崩溃时,利用INNODE事务引擎的特点,对这两个表进行恢复,以保证从服务器可以从正确位置恢复数据。
sync-master-info=1           //同步master_info,任何事物提交以后都必须要把事务提交以后的二进制日志事件的位置对应的文件名称,记录到master_info中,下次启动自动读取,保证数据无丢失
slave-parallel-workers=2       //设定从服务器的启动线程数,0表示不启动
binlog-checksum=CRC32          //主服务端在启动的时候要不要校验bin-log本身的校验码
master-verify-checksum=1        //都是在服务器出现故障情况下,读取对服务器有用的数据
slave-sql-verify-checksum=1 
binlog-rows-query-log_events=1       //启用后,可用于在二进制日志记录事件相关信息,可降低故障排除复杂度(并非强制启动)
report-port=3306 
report-host=192.168.136.142

Después de la configuración, no se olvide de reiniciar MySQL.

Mira el estado de maestro de más de uno.

Servicio en el principal Mysql, la línea de comandos para realizar la autorización

grant replication client,replication slave on *.* to root@'192.168.136.%' identified by 'root123';  //ip段与账号密码
flush privileges;  //刷新权限
show grants for root@'192.168.136.%'; 

Antes de iniciar la configuración, también tenemos que ser inicializado desde el servidor. Después de que el método de inicialización básica del servidor y en base a los puntos de registro son los mismos, pero en el modo de GTID inicio, cuando la copia de seguridad no está registrada en el nombre del archivo de registro binario de copia de seguridad y offset, sino más bien los registros están respaldados el valor GTID final.

Mira lo que la base de datos, MySQL salir de la terminal, introduzca un directorio, copia de seguridad de base de datos del objetivo, hay testdb

mysqldump --single-transaction --master-data=2 --triggers --routines --database testdb -uroot -p > testdb.sql

Después de la copia de seguridad, mirar el contenido del archivo sql.

A continuación, copie el archivo en el servidor SQL actual, usando el comando scp aquí.

scp -P22 testdb.sql [email protected]:/data/mysql/

Después de la copia terminado, Mysql en el terminal desde el servidor, cree la base de datos de destino, y después se vertió en la biblioteca.

mysql -uroot -p testdb < testdb.sql

Después se vierte éxito, seguido dispuesto aproximadamente constante desde el servidor, la configuración del servidor principal, se puede añadir read_only = ON en el archivo de configuración desde el servidor, y la causa sólo desde el servidor para no una operación de lectura, este parámetro no válido superusuario y será el impacto copiado desde el servidor;

port = 3306
socket = /tmp/mysql.sock


basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 143
log_bin = mysql-bin
bin_log = /usr/local/mysql/log/mysql-bin
binlog_format = ROW    //建议row
log-slave-updates=true
enforce-gtid-consistency=true
gtid-mode=on
master_info_repository=TABLE  
relay_log_info_repository=TABLE  //指定中继日志的存储方式,默认是文件,这样配置是使用了 两个表,是INNODB存储引擎,好处是当出现数据库崩溃时,利用INNODE事务引擎的特点,对这两个表进行恢复,以保证从服务器可以从正确位置恢复数据。
sync-master-info=1
slave-parallel-workers=2  //开启线程数,0就表示禁用线程
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=192.168.136.143
read_only = on //这个参数主要保证从服务器的数据安全性

No se olvide de reiniciar MySQL.

procede luego terminales MySQL, utilizando un cambio de configuración maestro maestro-esclavo

change master to master_host='192.168.136.142',
                 master_user='root',
                 master_passwrd='root123',
                 master_auto_position=1;

start slave;  //配置完成启动slave

 En el aspecto lateral de base de datos principal

 

Configuración de un éxito. A continuación, intente llevar a cabo en la biblioteca principal de inserción una declaración en la vista de la biblioteca, bien, los datos han sido también

 

Nunca sincronización GTID maestro

MySQL principales sitios de replicación convencional se determinaron utilizando dos parámetros de MASTER_LOG_POS master_log_files y replicación. Cuando los errores de copia se pueden configurar para que omita el error de las transacciones para restaurar la sincronización, MySQL proporciona parámetros sql_slave_skip_counter para conseguir esta funcionalidad. Utilice la siguiente manera:

root@(none) >stop slave;
Query OK, 0 rows affected (0.00 sec)

root@(none) >SET GLOBAL SQL_SLAVE_SKIP_COUNTER = N; #跳过N个事务
Query OK, 0 rows affected (0.00 sec)

root@(none) >start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)

Si está utilizando la replicación del GTID primaria por encima de este enfoque no es efectivo. Si algunos estudiantes han tratado, debe recibir el siguiente mensaje de error.

ERROR 1858 (HY000): sql_slave_skip_counter can not be set when the server is running with @@GLOBAL.GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction

Use sql_slave_skip_counter parámetros en el modo GTID causarán un error:

root@(none) >stop slave;
Query OK, 0 rows affected (0.00 sec)

root@(none) >set global sql_slave_skip_counter = 1;
ERROR 1858 (HY000): sql_slave_skip_counter can not be set when the server is running with @@GLOBAL.GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction

¿Cómo lidiar con los errores al copiar una base de datos replicada que el uso GTID suceda? De hecho, el mensaje de error anterior se ha sugerido la solución: Inserte una transacción vacío en número de transacción GTID se produjo el error, para lograr esta replicación resultados de error.

Métodos de operación:

1 "Mostrar estado de esclavo \ G" para encontrar el número de transacción GTID (el ejemplo muestra única copia el mensaje de error, otra información omitida) errores de replicación se producen se pueden encontrar errores de replicación GTID que se producen como: ab1b2733-2401-11e7-82fc-525400abbf4b: 50

root@(none) >show slave status\G
 1. row **
                   Last_Error: Worker 7 failed executing transaction 'ab1b2733-2401-11e7-82fc-525400abbf4b:50' at master log mysql-bin.000012, end_log_pos 156045; Could not execute Delete_rows_v1 event on table test.test2; Can't find record in 'test2', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log FIRST, end_log_pos 156045

2 GTID encontrar un espacio para insertar la transacción anterior

stop slave;                 # 关闭 slave 复制
SET GTID_NEXT='$GTID_NO';   # 设置 GTID_NEXT 为复制出错的 GTID_NO
begin; commit;              # 向 $GTID_NO 写入空事务
SET GTID_NEXT="AUTOMATIC";  # 重新设置 GTID_NEXT 为自动获取
start slave;                # 启动 slave 复制

Ejemplo:

root@(none) >stop slave;
Query OK, 0 rows affected (0.00 sec)

root@(none) >SET GTID_NEXT='ab1b2733-2401-11e7-82fc-525400abbf4b:50';
Query OK, 0 rows affected (0.00 sec)

root@(none) >begin;
Query OK, 0 rows affected (0.00 sec)

root@(none) >commit;
Query OK, 0 rows affected (0.00 sec)

root@(none) >SET GTID_NEXT="AUTOMATIC";
Query OK, 0 rows affected (0.00 sec)

root@(none) >start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)

3 importantes: los datos revisados

O utilizar las siguientes formas de resolver

Biblioteca principal para ver y grabar gtid_purged

mysql> show global variables like '%gtid_purged%'\G

Variable_name: gtid_purged
        Value: 0003be53-e103-11e7-9374-7cd30ab49ab8:1-209325833,
0a3aea84-f824-11e6-a4f1-ecf4bbd14b7c:1-226325123,
1494a77a-93ba-11e7-9b7e-6c92bf3160a3:1-113493689,
cdcb29ce-f7ad-11e5-9c99-f84abfe485f4:1-4244249,
db4186a3-f7ad-11e5-9c99-ac853daf2ee1:1-4,
fde4cefa-93b9-11e7-9b7d-6c92bf2c1761:1-131616080

En la ejecución de la biblioteca

#清除从库的主从信息
mysql> stop slave;
mysql> reset slave;
mysql> reset master;

#设置gtid_purged
mysql> set @@global.gtid_purged='0003be53-e103-11e7-9374-7cd30ab49ab8:1-209325833,
0a3aea84-f824-11e6-a4f1-ecf4bbd14b7c:1-226325123
,1494a77a-93ba-11e7-9b7e-6c92bf3160a3:1-113493689,
cdcb29ce-f7ad-11e5-9c99-f84abfe485f4:1-4244249,
db4186a3-f7ad-11e5-9c99-ac853daf2ee1:1-4,
fde4cefa-93b9-11e7-9b7d-6c92bf2c1761:1-131616080';

#重新设置主从同步
mysql> change master to master_host='ip地址',
master_port=3306,
master_user='usernamet',
master_password='password',
master_auto_position=1;

#启动从
mysql> start slave;

Si el maestro-esclavo errores de configuración de sincronización ha encontrado un error similar a 1, puede utilizar la solución para resolver el equivocado.

 

 

 

Publicado 35 artículos originales · ganado elogios 61 · vistas 160 000 +

Supongo que te gusta

Origin blog.csdn.net/woailyoo0000/article/details/86079667
Recomendado
Clasificación