sql >> Base de Datos >  >> RDS >> Mysql

Cómo cambiar la carpeta de datos de MySQL 8.0. ¿Puedo usar las carpetas de OneDrive?

Si desea compartir una base de datos con un par de otros usuarios, poner el directorio de datos en OneDrive no funcionará.

MySQL almacena datos en los archivos bajo datadir, eso es cierto. Se almacenan en archivos llamados tablespaces que tienen el .ibd extensión.

Pero a medida que realiza las operaciones INSERT/UPDATE/DELETE, los datos se almacenan temporalmente en la memoria y en los registros de transacciones (ib_logfile* . MySQL tiene que hacer una delicada coordinación entre estos, para guardar los datos de forma duradera, asegurando al mismo tiempo un buen rendimiento. Funciona bien, pero solo si MySQL Server es el único proceso que escribe en los archivos.

OneDrive no se coordina con MySQL en absoluto. Periódicamente buscará archivos que hayan cambiado desde la última vez que se sincronizó. El intervalo en que OneDrive comprueba los archivos es de aproximadamente cada 10 minutos y no se puede configurar.

OneDrive puede optar por sincronizar los archivos en un momento después de haber realizado algunas operaciones de INSERTAR/ACTUALIZAR/ELIMINAR, y los datos se modifican en la RAM, pero aún no se han actualizado en los archivos de tablespace en el disco.

Una vez que haya confirmado un cambio, también debe almacenarse de forma segura en el registro de transacciones, incluso si no se actualiza en el espacio de tablas. Pero si sus amigos reciben los archivos en este estado (el registro de transacciones contiene cambios que no están presentes en el tablespace), pueden reconstruir los datos de su RAM que no recibieron. Esto se llama Recuperación de fallas de InnoDB . MySQL Server lo hace automáticamente si se inicia y encuentra que el registro de transacciones contiene cambios que no están en el tablespace. Asume que tuviste un reinicio repentino y perdiste lo que había en RAM.

Si sus amigos intentan simplemente mantener su servidor MySQL funcionando continuamente, leyendo un directorio de datos que está siendo actualizado simultáneamente por su OneDrive, básicamente sobrescribirá sus archivos y MySQL se confundirá. Solo verifica si debe hacer una recuperación de fallas cuando se inicia el servidor MySQL. Entonces, si los archivos cambian de manera inesperada mientras MySQL Server ya se está ejecutando, simplemente concluirá que su disco duro se ha dañado. Probablemente informará un error fatal y apagará MySQL.

Además, si sus amigos intentan realizar sus propios cambios en la base de datos, sus cambios entrarían en conflicto con las actualizaciones de OneDrive. Luego, sus intentos de sobrescribir archivos eventualmente se sincronizarían en la dirección opuesta a través de OneDrive y eventualmente corromperían su base de datos también. Esto sucedería sin previo aviso en intervalos de 10 minutos, cada vez que OneDrive decidiera realizar su sincronización de archivos.

Así que me temo que OneDrive no es la solución para compartir su base de datos.

Las alternativas que tienen posibilidades de funcionar incluyen:

  • Alojar una sola instancia de MySQL Server en un sitio web que todos comparten y darle a cada uno de ustedes un cliente que pueda usar la base de datos. Un popular cliente gratuito es phpMyAdmin . De esa manera, solo habría una instancia de MySQL Server, un datadir, aunque cada uno de ustedes sería un cliente concurrente leyendo y escribiendo datos. Esta es la solución más simple, la que tiene más probabilidades de funcionar.

  • Exportar los datos de su instancia de servidor MySQL usando mysqldump periódicamente, y colocando el archivo de exportación en OneDrive, o enviándolo a sus amigos por correo electrónico o cualquier otro medio. Luego, tendrían que importar esos datos a su servidor MySQL manualmente. Esto sobrescribiría cualquier cambio que hayan hecho en su base de datos, pero no aparecería como corrupción. Si quieren enviarte cambios, podrían hacer una operación similar:exportar su base de datos, colocar el archivo de volcado en OneDrive, luego obtendrías su archivo de volcado y lo importarías a tu instancia de MySQL Server, sobrescribiendo cualquier cambio que hayas hecho. hecho localmente desde la última vez que envió su exportación a sus amigos.

  • Use un complemento de MySQL para la replicación síncrona de varios servidores, como Replicación del grupo InnoDB o Clúster Percona XtraDB . Pero esto probablemente sea demasiado complejo para que lo configures si eres un novato con MySQL.