Mysqlのインポートとエクスポート時に発生する問題の解決

Mysqlのインポートとエクスポート時に発生する問題の解決

背景

すべての業務を Docker の運用管理に移行してから、一連の落とし穴に遭遇しましたが、今回は MySQL のバックアップの問題でした。

原因は、mysql イメージの起動時に -v が指定されていなかったため、一定期間後に docker が非常に大きくなってしまったことです。元のディスクでは十分ではなく、新しいディスクに移行する必要がありました。

インポートとエクスポートの使用時にいくつか問題が発生し、解決に多くの時間が費やされました。

解決プロセス

mysqlイメージの検索が大きすぎます

コンテナが占めるスペースを表示する

```docker システム df``` 

詳細を表示

ローカルボリュームのスペース使用量:
音量 
名前 リンク サイズ
3e764b0633ea2c3f3dc5b0bf79dc753055d7c09451b477d3015650c66ea4a5fb 0 0B
598a592e1f9d90d2564c7c52f45f6f6a96784ad0426ec60682299fa1a1b93b96 0 0B
5eb12b3b0091810bbe3c94c5801ad2f2ff51d79b69b0ac01eb37cf00d37d89f6 0 0B
管理者ログ 0 0B
f42e3ef90e4c7b3658a0fb4a877e90b298b12cb58cd63f38d9b4ad5c2ab41d73 0 0B
3361b9c615e09708170018dc7d170b8d4b498dd83cbcb155a3d41234d08e8119 1 9.3G

この時点で、上記で返された情報によると、ボリュームを持つコンテナは 2 つだけで、1 つは mysql、もう 1 つは redis です。そのため、docker inspect container_id コマンドを使用して特定のコンテナの特定の情報を表示し、それが確かに 9.3G ボリュームであることを確認します。

コンテナID イメージ コマンド ローカルボリューム サイズ 
cb76bbc211e6 mysql "docker-entrypoint.s…" 1 7B

新しくマウントされたディスクにmysqlをバックアップする

```docker exec -it mysql mysqldump -u ユーザー名 -p パスワード データベース > /mnt/vdb/data/mysql/test_db.sql```
ユーザー名、パスワード、データベースの変更

mysqlをインポートする

1. 以前のデータがまだ残っていることを確認するには、別の mysql コンテナを起動し、-v を使用してホストにマップします。

2. 次に、docker exec -i mysqld mysql -uroot -proot federation < /mnt/vdb/data/mysql/fed_db.sql を実行します。

エラーが発生

1 行目のエラー 1064 (42000): SQL 構文にエラーがあります。
MySQLサーバーのバージョンに対応するマニュアルを確認してください。
'mysqldump: [警告] パスワードの使用
コマンドラインインターフェースは1行目でインセクトできます

いろいろ情報を探したのですが、役に立たなかったので、グラフィカル ツールを使用して直接バックアップすることにしました。Navicat を使用してバックアップし、新しいイメージにインポートしたところ、インポートは成功しました。

  • この行はインポート後に表示されたものと異なります
  • この行はインポート後に表示されたものと異なります
  • この行はインポート後に表示されたものと異なります

  • 何だって?合計数は1688ですが、1480しか表示されません。
  • docker コンテナに入り、コマンド ラインを使用してクエリを実行します。確かに 1688 です。表示される行は確かに間違っています。それで...

要約する

Docker を使用する場合、外部ボリュームを使用する必要があるかどうかを検討する必要があります。一般的に、データベースには外部ボリュームを使用するのが最適であり、これによりバックアップと移行が非常に便利になります。

データベースGUIに頼りすぎないでください。コマンドラインは最も実績があり、信頼性があります。

本当にうまくいかない場合は、ハードドライブを多数追加できます。いずれにしても、それらはすべてサーバー上にあります。ただし、サーバーがクラッシュしないようにする必要があります。そうしないと、データが簡単に失われます。

さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL における 8 つの一般的な SQL 使用例
  • MySql クイック挿入数千万の大規模データの例
  • MySQL SQL ステートメントが遅い場合の一般的な原因と解決策

<<:  Vue プロジェクトのパッケージ化と最適化の実装手順

>>:  Linux に Python 3.8.1 をインストールするための詳細なチュートリアル

推薦する

Nginx ロケーション設定(ロケーションのマッチング順序)の詳細な説明

ロケーションは「位置指定」を意味し、主にさまざまな位置指定のための URI に基づいています。これは...

Linux リモートログイン実装チュートリアル分析

Linux は一般的にサーバーとして使用され、サーバーは一般的にコンピュータルーム内に置かれます。L...

フロントエンド JavaScript におけるリフレクションとプロキシ

目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

MySQL binlog の解析

目次1. binlogの紹介2. Binlog関連のパラメータ3. バイナリログの内容を分析するIV...

一般的でない js 演算演算子の概要

目次2. カンマ演算子3. JavaScript Null 結合演算子 (??) 4. JavaSc...

MySQL テーブルの断片化を解消し、スペースを再利用する方法

目次MySQL テーブルの断片化の原因行の断片化行内断片化空き領域の断片化MySQL で極度に断片化...

CentOS の環境変数と設定ファイルの詳細な説明

序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...

Vue+Router+Element でシンプルなナビゲーションバーを実装する

このプロジェクトでは、Vue+Router+Element の具体的なコードを共有して、シンプルなナ...

Vueフロントエンドパッケージングの詳細なプロセス

目次1. パッケージ化コマンドを追加する2. パッケージ化されたコードを実行する3. パッケージ化し...

JS で配列の重複排除を実装する 7 つの方法

目次1. Set()+Array.from() を使用する2. 2層ループ+アレイ接合方式の使用3....

IE イメージ ツールバーを無効にする

IE6 で試してみたところ、ツールバーが表示されました。オプションに「イメージ ツールバーを有効にす...

Docker で Confluence をデプロイする

1. 環境要件1. Docker 17以上がインストールされている2. コンテナ操作docker r...

nginx proxy_cache キャッシュ設定の詳細な説明

序文:私は仕事柄、オンラインライブストリーミングの分野に携わっており、ビデオの再生やダウンロードには...

MySQL 5.6.22 のインストールと設定方法のグラフィックチュートリアル

このチュートリアルでは、MySQL5.6.22のインストールと設定方法の具体的なコードを参考までに共...