gh-ost
es una solución de migración de esquema en línea inyectable para MySQL. Es comprobable y proporciona pausabilidad, control dinámico/reconfiguración, auditoría y muchas ventajas operativas.
gh-ost
produce una carga de trabajo ligera en el maestro a lo largo de la migración, desacoplado de la carga de trabajo existente en la tabla migrada.
Se ha diseñado en base a años de experiencia con soluciones existentes y cambia el paradigma de las migraciones de tabla.
Todas las herramientas existentes de cambio de schema en línea funcionan de manera similar: crean una tabla de fantasmas a semejanza de su tabla original, migran esa tabla mientras están vacías, copian datos lenta e incrementales de su tabla original a la tabla de fantasmas , mientras que propagando cambios continuos (Cualquier INSERT
, DELETE
, UPDATE
aplicada a su tabla) a la tabla Ghost . Finalmente, en el momento adecuado, reemplazan su tabla original con la mesa fantasma .
gh-ost
usa el mismo patrón. Sin embargo, difiere de todas las herramientas existentes al no usar desencadenantes. Hemos reconocido que los desencadenantes son la fuente de muchas limitaciones y riesgos.
En cambio, gh-ost
usa la transmisión de registro binaria para capturar los cambios en la tabla, y los aplica asincrónicamente en la tabla fantasma . gh-ost
asume algunas tareas que otras herramientas dejan para que la base de datos realice. Como resultado, gh-ost
tiene un mayor control sobre el proceso de migración; realmente puede suspenderlo; realmente puede desacoplar la carga de escritura de la migración de la carga de trabajo del maestro.
Además, ofrece muchas ventajas operativas que lo hacen más seguro, confiable y divertido de usar.
gh-ost
probándolo en réplicas. gh-ost
emitirá el mismo flujo que lo hubiera hecho en el maestro, para migrar una tabla en una réplica, sin reemplazar realmente la tabla original, dejando la réplica con dos tablas que puede comparar y satisfacer que la herramienta funciona correctamente. Así es como probamos continuamente gh-ost
en producción.gh-ost
se aceleran, realmente cesa escribe en Master: sin copias de filas y sin procesamiento de eventos en curso. Por estrangulamiento, devuelve a su maestro a su carga de trabajo originalgh-ost
, incluso cuando la migración aún se ejecuta. Puede iniciar la fuerza por la fuerza.gh-ost
para el estado. gh-ost
escucha en unix Socket o TCP.gh-ost
se puede instruir para posponer lo que probablemente sea el paso más crítico: el intercambio de tablas, hasta el momento en que esté cómodamente disponible. No es necesario preocuparse de que ETA esté fuera del horario de oficina.gh-ost
con su entorno particular.Consulte los documentos para obtener más información. No, realmente, lee los documentos.
La hoja de trucos lo tiene todo. Puede estar interesado en invocar gh-ost
en varios modos:
gh-ost
resuelve las identidades de los servidores involucrados. Modo requerido si su maestro usa la replicación basada en la declaración)gh-ost
prefiere el primero)gh-ost
.Nuestros consejos:
--test-on-replica
las primeras veces. Mejor aún, hazlo continuo. Tenemos múltiples réplicas en las que iteramos toda nuestra flota de tablas de producción, migrándolas una por una, atenuando los resultados, verificar la migración es buena.--execute
.Más consejos:
--exact-rowcount
para una indicación de progreso precisa--postpone-cut-over-flag-file
para obtener el control sobre el tiempo de corteVer también:
gh-ost
en AWS RDSgh-ost
en la base de datos de Azure para MySQL Originalmente, esto se llamaba gh-osc
: cambio de esquema en línea de GitHub, en los gustos de Facebook Online Schema Change y PT-Online-Schema-Change.
Pero luego ocurrió una rara mutación genética, y la c
se transformó en t
. Y eso nos envió por el camino de tratar de descubrir un nuevo acrónimo. gh-ost
(pronuncie: fantasma ), representa el esquema en línea de GitHub/transmrogriador/traductor/transformer/transfigurator
gh-ost
tiene licencia bajo la licencia MIT
gh-ost
utiliza bibliotecas de terceros, cada una con su propia licencia. Estos se encuentran aquí.
gh-ost
se libera en un estado estable, pero con kilometraje para ir. Estamos abiertos a las solicitudes. Primero discuta sus intenciones a través de temas.
Desarrollamos gh-ost
en Github y para la comunidad. Podemos tener diferentes prioridades que otras. De vez en cuando podemos sugerir una contribución que no esté en nuestra hoja de ruta inmediata pero que pueda atraer a los demás.
Consulte Coding GH-OST para una guía para comenzar a desarrollar con GH-OST.
gh-ost
ahora es GA y estable.
gh-ost
está disponible en formato binario para Linux y Mac OS/X
Descargue el último lanzamiento aquí
gh-ost
es un proyecto Go; Está construido con GO 1.15
y más. Para construir por su cuenta, use:
./bin/gh-ost
binary.tar.gz
artefactos en /tmp/gh-ost-release
En términos generales, la rama master
es estable, pero solo se utilizarán lanzamientos en la producción.
gh-ost
es diseñado, escrito, revisado y probado por el equipo de infraestructura de la base de datos en Github: