Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment changer le dossier de données MySQL 8.0. Puis-je utiliser les dossiers OneDrive ?

Si vous souhaitez partager une base de données avec quelques autres utilisateurs, placer le répertoire de données dans OneDrive ne fonctionnera pas.

MySQL stocke les données dans les fichiers sous le datadir, c'est vrai. Ils sont stockés dans des fichiers appelés tablespaces qui ont le .ibd extension.

Mais lorsque vous effectuez des opérations INSERT/UPDATE/DELETE, les données sont temporairement stockées en mémoire et dans les journaux de transactions (ib_logfile* . MySQL doit faire une coordination délicate entre ceux-ci, pour sauvegarder les données de manière durable, tout en assurant de bonnes performances. Cela fonctionne bien, mais seulement si le serveur MySQL est le seul processus écrivant dans les fichiers.

OneDrive ne se coordonne pas du tout avec MySQL. Il vérifiera périodiquement les fichiers qui ont été modifiés depuis la dernière synchronisation. L'intervalle de vérification des fichiers par OneDrive est d'environ toutes les 10 minutes et n'est pas configurable.

OneDrive peut choisir de synchroniser les fichiers à un moment après que vous avez effectué certaines opérations INSERT/UPDATE/DELETE, et les données sont modifiées dans la RAM, mais n'ont pas encore été mises à jour dans les fichiers d'espace de table sur le disque.

Une fois que vous avez validé une modification, elle doit également être stockée en toute sécurité dans le journal des transactions, même si elle n'est pas mise à jour dans le tablespace. Mais si vos amis reçoivent les fichiers dans cet état (le journal des transactions contient des modifications qui ne sont pas présentes dans le tablespace), ils peuvent reconstruire les données de votre RAM qu'ils n'ont pas récupérées. Cela s'appelle InnoDB crash recovery . MySQL Server le fait automatiquement s'il démarre et trouve que le journal des transactions contient des modifications qui ne se trouvent pas dans l'espace de table. Cela suppose que vous avez eu un redémarrage soudain et que vous avez perdu ce qui était dans la RAM.

Si vos amis essaient de faire fonctionner leur serveur MySQL en continu, en lisant un répertoire de données mis à jour simultanément par leur OneDrive, cela écrasera essentiellement leurs fichiers et MySQL deviendra confus. Il vérifie uniquement s'il doit effectuer une récupération sur incident au démarrage du serveur MySQL. Donc, si les fichiers changent de manière inattendue alors que MySQL Server est déjà en cours d'exécution, il conclura simplement que votre disque dur a été corrompu. Il signalera probablement une erreur fatale et arrêtera MySQL.

De plus, si vos amis essaient d'apporter leurs propres modifications à la base de données, leurs modifications entreront en conflit avec les mises à jour de OneDrive. Ensuite, leurs tentatives d'écrasement des fichiers seraient éventuellement synchronisées dans la direction opposée via OneDrive, et finiraient par corrompre également votre base de données. Cela se produirait sans avertissement à des intervalles de 10 minutes, chaque fois que OneDrive choisissait de faire sa synchronisation de fichiers.

Je crains donc que OneDrive ne soit pas la solution pour partager votre base de données.

Les alternatives qui ont une chance de fonctionner incluent :

  • Héberger une seule instance de MySQL Server sur un site Web que vous partagez tous et donner à chacun d'entre vous un client pouvant utiliser la base de données. Un client gratuit populaire est phpMyAdmin . De cette façon, il n'y aurait qu'une seule instance de MySQL Server, un datadir, même si vous seriez chacun des clients simultanés lisant et écrivant des données. C'est la solution la plus simple, la plus susceptible de fonctionner.

  • Exporter les données de votre instance de serveur MySQL à l'aide de mysqldump périodiquement et en plaçant le fichier d'exportation sur OneDrive ou en l'envoyant à vos amis par e-mail ou par tout autre moyen. Ensuite, ils devraient importer manuellement ces données sur leur serveur MySQL. Cela écraserait toutes les modifications apportées à leur base de données, mais cela n'apparaîtrait pas comme une corruption. S'ils souhaitent vous renvoyer des modifications, ils peuvent effectuer une opération similaire :exporter leur base de données, placer le fichier de vidage sur OneDrive, puis vous obtiendrez leur fichier de vidage et l'importerez dans votre instance de serveur MySQL, en écrasant toutes les modifications que vous avez apportées. fait localement depuis la dernière fois que vous avez envoyé votre exportation à vos amis.

  • Utilisez un module complémentaire MySQL pour la réplication synchrone multi-serveurs, tel que Réplication de groupe InnoDB ou Cluster Percona XtraDB . Mais c'est probablement trop complexe à configurer si vous débutez avec MySQL.