DockerコンテナでのMySQLデータのインポート/エクスポートの詳細な説明

DockerコンテナでのMySQLデータのインポート/エクスポートの詳細な説明

序文

MySQL データのインポートとエクスポートは mysqldump コマンドで解決できることは誰もが知っていますが、MySQL が docker 環境で実行されている場合はどうなるでしょうか?

解決策は、mysqldump コマンドを使用することですが、それを実行するには docker の mysql コンテナに入り、エクスポートされたデータ ファイルをホスト マシンのディスクにコピーできるようにボリュームを構成する必要があります。

したがって、操作手順は次のように分けられます。

  • Dockerボリュームの設定
  • dockerのmysqlコンテナに入り、データファイルをエクスポートします

データのインポートに関しては、説明するのが簡単すぎます。

まず、mysqldump コマンドの一般的なオプションを見てみましょう。

  • --all-databases, -A: すべてのデータベースをバックアップする
  • --databases, -B: 複数のデータベースをバックアップするために使用されます。このオプションが存在しない場合、mysqldump は最初の名前パラメータをデータベース名として使用し、残りをテーブル名として使用します。このオプションを使用すると、mysqldum は各名前をデータベース名として扱います。
  • --force, -f: SQLエラーが見つかった場合でもバックアップを続行します
  • --host=host_name, -h host_name: バックアップホスト名、デフォルトは localhost
  • --no-data, -d: テーブル構造のみをエクスポートする
  • --password[=パスワード], -p[パスワード]: パスワード
  • --port=port_num, -P port_num: TCP/IP接続のポート番号を指定します
  • --quick, -q: クイックエクスポート
  • --tables: --databases または -B オプションを上書きし、次のパラメータはテーブル名として扱われます
  • --user=user_name, -u user_name: ユーザー名
  • --xml, -X: xml ファイルとしてエクスポート

ボリュームの設定

まず、docker-compose を使用して docker コンテナを配置します。完全な構成コードについては、このプロジェクトを参照してください: liumapp/rabbitmq-mysql-redis-in-docker

このプロジェクトの docker-compose.yml 構成ファイル内の次の行に注意してください。

 マイスク:
 コンテナ名: mysql
 イメージ:mysql:5.5.60
 再起動: 常に
 ボリューム:
  - ./mysql/データ:/var/lib/mysql
  - ./mysql/conf/mysqld.conf:/etc/mysql/mysql.conf.d/mysqld.cnf

mysql コンテナ用に構成したボリュームは、プロジェクトの mysql/data ディレクトリを docker コンテナ内の /var/lib/mysql にマップするためのものです。

したがって、docker の mysql コンテナに入り、エクスポート コマンドを実行すると、/var/lib/mysql/ ディレクトリ内のデータをエクスポートするだけで、ホスト マシンの ./mysql/data/ ディレクトリ内に対応するデータ ファイルを見つけることができます。

データをエクスポートするコンテナを入力します

まず実行

ドッカーps

mysqlコンテナの名前を見つける

次に実行する

docker exec -it mysql /bin/bash

コンテナに入る

コマンドを実行

MySQLはどこにある?

mysqlの実行パスを見つけます。/usr/local/mysql/binです。cdで入力します。

cd /usr/local/mysql/bin

ここでのパスは Docker コンテナ内のパスを指し、ホスト パスとは関係がないことに注意してください。

エクスポートコマンドを実行する

mysqldump -u ユーザー名 -p データベース名> ファイル .sql を保存

パスワードを入力すると、基本的にエクスポートは成功します。ファイルを保存するパスはボリュームの下、つまり/var/lib/mysql/に設定する必要があることに注意してください。

次に入力してください

出口

コンテナを終了してホストマシンに戻ると、エクスポートされたデータファイルが見つかります。

csv 形式でエクスポートする場合は、mysqldump コマンドを次のように変更します。

mysql -u ユーザー名 --password=パスワード --database=データベース名 --execute='SELECT `FIELD`, `FIELD` FROM `TABLE` LIMIT 0, 10000 ' -X > ファイル.sql を保存します

あなたはできる

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴
  • Docker で MySQL データベースを使用する方法の詳細説明 (LAN でのアクセス)
  • docker で mysql に接続できない場合の解決策
  • DockerにMySQL 8.0をインストールする方法
  • Docker に MySQL インスタンスをインストールして実行する
  • dockerログインmysqlエラー問題の実践記録

<<:  jQueryはシャトルボックス効果を実現します

>>:  Mac 向け MySQL 5.7.17 のインストールと設定のチュートリアル

推薦する

Mysqlマスタースレーブ同期の実装原理

1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...

Navicat For MySQL の使い方に関する簡単なチュートリアル

推薦する: Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル...

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

Docker環境を構築する簡単な方法

まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

タグ li はブロックレベル要素ですか?

なぜ高さを設定できるのでしょうか。<h1 /> などの要素とは異なり、「セミインライン」...

Nofollowはコメントやメッセージ内のリンクを本当に機能させる

コメントとメッセージはもともと、ウェブマスターがコミュニティと読者層を構築するための優れた手段でした...

GZIP 圧縮 Tomcat と Web パフォーマンスの改善プロセス図

1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...

フロントエンドフレームワーク Vue における親子コンポーネントデータの双方向バインディングの実装

目次1. 親コンポーネントと子コンポーネント間の一方向の値転送1. 親から子への値の受け渡し2. 子...

HTML 要素 (タグ) とその使用法

a : ハイパーリンクの開始位置または宛先位置を示します。頭字語: 単語の最初の文字からなる略語を示...

CSS マスクを使用して PNG 画像のサイズを大幅に最適化します (推奨)

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

Linux で gdb を使用してコア ファイルをデバッグする方法

1.コアファイルプログラム実行中にセグメンテーション エラー (コア ダンプ) が発生すると、プログ...

MySQL 8の新機能ROLEの詳しい説明

MySQL ROLE はどのような問題を解決しますか?プロフェッショナルな資質を持ち、権限管理に細心...

Vue3 + TypeScript 開発の概要

目次Vue3 + TypeScript 学習1. 環境設定1.1 最新のVue scaffoldin...

jsは多次元配列を1次元配列に変換し、それを並べ替えます

目次まず多次元配列の平坦化についてお話しましょう方法 1: flat()方法 2: 空の文字列を連結...