sql >> データベース >  >> RDS >> Mysql

MySQL8.0データフォルダを変更する方法。 OneDriveフォルダーを使用できますか?

    データベースを他の数人のユーザーと共有したい場合、DatadirをOneDriveに配置しても機能しません。

    MySQLはdatadirの下のファイルにデータを保存します。それは本当です。それらはテーブルスペースと呼ばれるファイルに保存されます .ibdがあります 拡張機能。

    ただし、INSERT / UPDATE / DELETE操作を実行すると、データは一時的にメモリとトランザクションログ(ib_logfile*)に保存されます。 。 MySQLは、優れたパフォーマンスを確保しながら、永続的な方法でデータを保存するために、これらの間で微妙な調整を行う必要があります。これはうまく機能しますが、MySQLサーバーがファイルに書き込む唯一のプロセスである場合に限ります。

    OneDriveはMySQLとまったく調整していません。最後に同期を行ってから変更されたファイルを定期的にチェックします。 OneDriveがファイルをチェックする間隔は約10分ごとであり、これは構成できません。

    OneDriveは、いくつかのINSERT / UPDATE / DELETE操作を実行し、データがRAMで変更された後、ディスク上のテーブルスペースファイルでまだ更新されていない場合に、ファイルの同期を選択する場合があります。

    変更をコミットしたら、テーブルスペースで更新されていない場合でも、トランザクションログに安全に保存する必要があります。ただし、友人がこの状態でファイルを受信した場合(トランザクションログにはテーブルスペースに存在しない変更が含まれている)、取得しなかったデータをRAMから再構築できます。これは、InnoDBクラッシュリカバリ と呼ばれます。 。 MySQLサーバーは、起動してトランザクションログにテーブルスペースにない変更が含まれていることを検出すると、自動的に実行します。突然再起動し、RAMにあったものが失われたことを前提としています。

    友達がMySQLサーバーを継続的に実行し続け、1つのOneDriveによって同時に更新されているデータディレクトリを読み取ろうとすると、基本的にファイルが上書きされ、MySQLが混乱します。 MySQLサーバーの起動時にクラッシュリカバリを実行する必要があるかどうかを確認するだけです。したがって、MySQLサーバーがすでに実行されているときにファイルが予期しない方法で変更された場合、ハードドライブが破損したと結論付けられます。おそらく致命的なエラーが報告され、MySQLがシャットダウンされます。

    また、友達が自分でデータベースに変更を加えようとすると、その変更はOneDriveからの更新と競合します。次に、ファイルを上書きしようとする試みは、最終的にOneDriveを介して反対方向に同期され、最終的にデータベースも破損します。これは、OneDriveがファイル同期を行うことを選択した場合は常に、警告なしに10分間隔で発生します。

    したがって、OneDriveはデータベースを共有するためのソリューションではないのではないかと思います。

    機能する可能性のある代替案は次のとおりです。

    • 全員が共有するWebサイトでMySQLServerの単一インスタンスをホストし、データベースを使用できるクライアントを各自に提供します。人気のある無料のクライアントは、phpMyAdmin です。 。そうすれば、それぞれがデータの読み取りと書き込みを同時に行うクライアントであっても、MySQLサーバーのインスタンスは1つ、datadirは1つだけになります。これは最も単純なソリューションであり、最も効果的です。

    • mysqldump を使用してMySQLサーバーインスタンスからデータをエクスポートする 定期的に、エクスポートファイルをOneDriveに配置するか、電子メールまたはその他の手段で友達に送信します。次に、そのデータをMySQLサーバーに手動でインポートする必要があります。これにより、データベースに加えた変更が上書きされますが、破損としては表示されません。変更を返送したい場合は、同様の操作を行うことができます。データベースをエクスポートし、ダンプファイルをOneDriveに配置します。次に、ダンプファイルを取得してMySQLサーバーインスタンスにインポートし、変更内容を上書きします。前回エクスポートを友達に送信してからローカルで実行されます。

    • InnoDBグループレプリケーション または Percona XtraDB Cluster 。ただし、MySQLを初めて使用する場合は、これを設定するには複雑すぎる可能性があります。




    1. ケースとデコード

    2. SQLiteAssetHelperでのRobolectricの使用

    3. SQL、テーブルへのデータの追加

    4. データベース設計における不十分な慣行