Se você deseja compartilhar um banco de dados com alguns outros usuários, colocar o datadir no OneDrive não funcionará.
MySQL armazena dados nos arquivos sob o datadir, isso é verdade. Eles são armazenados em arquivos chamados tablespaces que tem o
.ibd
extensão. Mas conforme você faz as operações INSERT/UPDATE/DELETE, os dados são armazenados temporariamente na memória e nos logs de transação (
ib_logfile*
. O MySQL tem que fazer uma coordenação delicada entre estes, para salvar os dados de forma durável, garantindo ao mesmo tempo um bom desempenho. Funciona bem, mas apenas se o MySQL Server for o único processo de gravação nos arquivos. O OneDrive não está coordenando com o MySQL. Ele verificará periodicamente os arquivos que foram alterados desde a última sincronização. O intervalo de verificação de arquivos do OneDrive é a cada 10 minutos e isso não é configurável.
O OneDrive pode optar por sincronizar os arquivos em um momento após você ter feito algumas operações INSERT/UPDATE/DELETE e os dados serem modificados na RAM, mas ainda não foram atualizados nos arquivos de tablespace no disco.
Depois de confirmar uma alteração, ela também deve ser armazenada com segurança no log de transações, mesmo que não seja atualizada no tablespace. Mas se seus amigos receberem os arquivos nesse estado (o log de transações contém alterações que não estão presentes no tablespace), eles podem reconstruir os dados da sua RAM que não receberam. Isso é chamado de recuperação de falhas do InnoDB . O MySQL Server faz isso automaticamente se inicializar e descobrir que o log de transações contém alterações que não estão no tablespace. Ele assume que você teve uma reinicialização repentina e perdeu o que estava na RAM.
Se seus amigos tentarem apenas manter o MySQL Server funcionando continuamente, lendo um datadir que está sendo atualizado simultaneamente pelo OneDrive, ele basicamente substituirá seus arquivos e o MySQL ficará confuso. Ele apenas verifica se deve fazer a recuperação de falhas quando o MySQL Server é iniciado. Portanto, se os arquivos mudarem de maneira inesperada enquanto o MySQL Server já estiver em execução, ele apenas concluirá que seu disco rígido foi corrompido. Provavelmente relatará um erro fatal e desligará o MySQL.
Além disso, se seus amigos tentarem fazer suas próprias alterações no banco de dados, suas alterações entrarão em conflito com as atualizações do OneDrive. Em seguida, suas tentativas de substituir os arquivos acabariam sendo sincronizadas na direção oposta via OneDrive e também corromperiam seu banco de dados. Isso aconteceria sem aviso em intervalos de 10 minutos, sempre que o OneDrive optasse por fazer sua sincronização de arquivos.
Portanto, receio que o OneDrive não seja a solução para compartilhar seu banco de dados.
As alternativas que têm chance de funcionar incluem:
-
Hospedando uma única instância do MySQL Server em um site que todos compartilham e dando a cada um de vocês um cliente que pode usar o banco de dados. Um cliente gratuito popular é o phpMyAdmin . Dessa forma, haveria apenas uma instância do MySQL Server, um datadir, mesmo que cada um de vocês fosse clientes simultâneos lendo e gravando dados. Esta é a solução mais simples, com maior probabilidade de funcionar.
-
Exportando os dados de sua instância do MySQL Server usando mysqldump periodicamente e colocando o arquivo de exportação no OneDrive ou enviando-o para seus amigos por email ou qualquer outro meio. Então eles teriam que importar esses dados para o MySQL Server manualmente. Isso substituiria quaisquer alterações que eles tivessem feito em seu banco de dados, mas não apareceria como corrupção. Se eles quiserem enviar as alterações de volta para você, eles podem fazer uma operação semelhante:exportar o banco de dados, colocar o arquivo de despejo no OneDrive, então você obterá o arquivo de despejo e o importará para sua instância do MySQL Server, substituindo quaisquer alterações que você tenha feito localmente desde a última vez que você enviou sua exportação para seus amigos.
-
Use um complemento do MySQL para replicação síncrona de vários servidores, como Replicação do Grupo InnoDB ou Percona XtraDB Cluster . Mas isso provavelmente é muito complexo para você configurar se for um novato com o MySQL.