mysql modificación online estructura de la tabla PT-online-esquema-cambio de la gran

prefacio

operaciones DDL MySQL grandes campos: el campo Modificado, índice, modificar los atributos de campo, etc., antes de la 5.1 es mucho tiempo y mano de obra, servicios, especialmente MySQL tendrá un impacto. Después de 5.1 Con el advenimiento de la línea Plugin de Innodb indexado mejorado mucho, pero también afectan a la (tiempo corto), principalmente durante el cambio, generará un mutex, el bloqueo de todas las operaciones en toda la tabla. Pero MySQL 5.6 para evitar la situación anterior, apoyar las operaciones DDL en línea. Pero la mayoría están utilizando versión anterior a 5.6, por lo que la operación de personal de operación y mantenimiento DDL ha sido un dolor de cabeza. Entonces, ¿cómo segura y rápida actualización de la estructura de la tabla sin la tabla de bloqueo? Ahora para explicar bajo Percona-toolkit de pt-online-esquema-cambio (abreviatura: OSC) instrucciones para su uso, puede resolver los problemas anteriormente.

En nuestro enfoque anterior con el fin de no afectar el negocio en línea, generalmente usamos: primera estructura de tabla de cambio en línea de la biblioteca, y luego vuelva a colocar las modificaciones de la línea de la biblioteca, por lo que Taiwán y Taiwán, y, finalmente, la biblioteca principal para hacer algunas de conmutación, un proceso tomará un largo tiempo, y la última palabra cuando se cambia de bibliotecas, el riesgo es muy grande, ¿cómo podemos hacer el tiempo más corto, y no puede bloquear el caso de lectura-escritura modificarlo en línea?

modificaciones en línea pueden afectar a una gran mesa:

  • Modificar una gran mesa de tiempo de ejecución de la estructura es a menudo impredecible, por lo general mucho tiempo
  • Dado que la estructura de la tabla modificada es un bloqueo a nivel de tabla, y por lo tanto, cuando la estructura de tabla modificado, las operaciones de escritura afectan mesa
  • Si modificar larga estructura de la tabla, la modificación de la mitad falló debido estructura de la tabla de modificación es una transacción, por lo que después de que la estructura de la tabla restauraciones de fallo, en la tabla de procesos están bloqueados no se puede escribir
  • Grande llevar fácilmente a modificar la estructura de la base de datos de la CPU, el consumo de IO y otras propiedades, por lo que el servidor de la degradación del rendimiento de MySQL
  • Línea estructura de la tabla Modificar fácilmente dar lugar a grandes retrasos maestro-esclavo, lo que afecta a la lectura de negocios

Actualmente motor InnoDB DDL se lleva a cabo mediante las siguientes etapas:

  1. En la tabla original (original_table) estructura de la tabla y las instrucciones de DDL, una nueva tabla temporal invisible (tabla llamada tmp_table)
  2. En la tabla además de escritura de bloqueo original, bloqueando todas las operaciones de actualización (insertar, eliminar, actualizar, etc.)
  3. 执行inserción en tabla llamada tmp_table  seleccione  * desde original_table
  4. Cambiar nombre original_table 和 tabla llamada tmp_table, 最后 original_table gota
  5. Desactivar el bloqueo de escritura.

Podemos ver cuando la ejecución InnoDB DDL, la tabla original es de sólo lectura no se puede escribir.

Con el lanzamiento de una herramienta pt-online-esquema-perconal cambio, que se caracteriza por el proceso de modificación no causa la obstrucción de leer y escribir.

Cómo funciona:

Si la tabla tiene una clave externa, a menos teclas -alter-extranjera-método para especificar un valor en particular, de lo contrario no se ejecutará la herramienta.

  1. Creación de una y que desea realizar las mismas operaciones espaciales estructura de la tabla de modificación de tabla.
  2. modificaciones estructurales Tabla realizaron, y los datos de la tabla original a la mesa para copiar la estructura de tabla modificado,
  3. Crear una tabla en el original gatillo proceso copiará los datos, la operación de actualización actualiza la tabla original a la nueva tabla Nota: Si la tabla se ha definido gatillo esta herramienta no funcionará.
  4. Después de la copia, en lugar de la tabla original mesa de cambio de nombre de una nueva tabla, eliminar la tabla predeterminada original.

Instalación pt-esquema-cambio en línea:

#安装依赖
yum install perl-DBI
yum install perl-DBD-MySQL
yum install perl-Time-HiRes
yum -y install perl-Digest-MD5
yum install perl-IO-Socket-SSL
# 切换目录
cd /usr/local/src
# 下载
wget percona.com/get/percona-toolkit.tar.gz
# 解压
tar -zvxf percona-toolkit.tar.gz
cd percona-toolkit-3.0.13/
# 安装perl依赖
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
perl Makefile.PL
# 编译安装
make
make install
# 验证
pt-online-schema-change

Uso pt-online-esquema de cambio:

./bin/pt-online-schema-change --help se pueden ver los argumentos, sólo queremos modificar una estructura de la tabla, sólo es necesario conocer algunos parámetros simples en él

--user=        连接mysql的用户名
--password=    连接mysql的密码
--host=        连接mysql的地址
P=3306         连接mysql的端口号
D=             连接mysql的库名
t=             连接mysql的表名
--alter        修改表结构的语句
--execute      执行修改表结构
--charset=utf8 使用utf8编码,避免中文乱码
--no-version-check  不检查版本,在阿里云服务器中一般加入此参数,否则会报错

Con el fin de evitar cada vez que un grupo de parámetros de entrada, escribir un script que la reutilización, pt.sh:

#!/bin/bash
table=$1
alter_conment=$2

cnn_host='127.0.0.1'
cnn_user='user'
cnn_pwd='password'
cnn_db='database_name'

echo "$table"
echo "$alter_conment"
/root/percona-toolkit-2.2.19/bin/pt-online-schema-change --charset=utf8 --no-version-check --user=${cnn_user} --password=${cnn_pwd} --host=${cnn_host}  P=3306,D=${cnn_db},t=$table --alter="${alter_conment}" --execute

campos de la tabla como la adición de instrucción SQL:
ALTER TABLE  test el agrega la columna  status tinyint (4) NOT NULL DEFAULT 0;
a continuación, utilizar el PT-online-esquema de cambio, puede escribir
SH pt.sh la prueba de "la ALTER TABLE  test el agrega la columna  status tinyint (4) NOT NULL DEFAULT 0 "

Los resultados son los siguientes:

otros:

  • herramientas pt-online-esquema de cambio hay muchos otros parámetros, hay muchas restricciones, tales como las restricciones a la CPU, el número de hilos, estado, etc., de la biblioteca, pero modificó la estructura de una tabla de 6000W, encontraron casi ninguna penalización en el rendimiento , muy suave y muy estable en la estructura de la tabla modificada, por lo que el uso de los parámetros más convencionales para cumplir con el negocio básico
  • Asegúrese de hacer el período de menor negocio, a fin de garantizar a toda prueba

expediente

1. oficial de referencia: HTTPS: //www.percona.com/doc/p ...
2. Descargar Oficial: HTTPS: //www.percona.com/downl ...

Referencia: https://segmentfault.com/a/1190000014924677

Publicados 109 artículos originales · ganado elogios 101 · vistas 360 000 +

Supongo que te gusta

Origin blog.csdn.net/Alen_xiaoxin/article/details/105095189
Recomendado
Clasificación