Dockerコンテナに基づいてMySQLデータベースをデプロイする

1. 概要.... 2

第二に、環境整備....3

2.1、Docker の展開....3

3、docker を使用して mysql 6 をデプロイする

3.1. データ保存ディレクトリの作成...6

3.2. ブリッジネットワークを作成し、IP 範囲を指定します... 6

3.3. Docker は MySQL をインストールします。6

3.4、カスタム構成... 7

4、MySQLの簡単な構成…9

4.1. コンテナー mysql... 9 で対話モードでターミナルを開きます。

4.2、mysqlログイン...9

4.3. リモートユーザーにすべてのテーブルに対するすべての権限を与える... 9

4.4、Navicat が MySQL にリモートで接続していることを確認します。

5、データベースのエクスポートバックアップ... 11

5.1、データベースのバックアップ....11

5.2、データベースの復元....12

6、MySQL でよく使われる簡単なコマンド 13

1. 概要

MySQL は、スウェーデンの MySQL AB によって開発されたリレーショナル データベース管理システムであり、現在は Oracle Corporation に属しています。MySQL は、すべてのデータを 1 つの大きなウェアハウスに置くのではなく、個別のテーブルにデータを保持するリレーショナル データベース管理システムです。これにより、速度と柔軟性が向上します。

  • MySQL はオープンソースであり、現在は Oracle の製品です。
  • MySQL は大規模なデータベースをサポートします。数千万件のレコードを含む大規模なデータベースを処理できます。
  • MySQL は標準の SQL データ言語形式を使用します。
  • MySQL は複数のシステム上で実行でき、複数の言語をサポートします。これらのプログラミング言語には、C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、Tcl などが含まれます。
  • MySQL は PHP を適切にサポートしており、PHP は Web プログラム開発に非常に適しています。
  • MySQL は 5,000 万レコードの大規模データベースとデータ ウェアハウスをサポートしており、32 ビット システム テーブル ファイルは最大 4 GB、64 ビット システムは最大 8 TB のテーブル ファイルをサポートします。
  • \MySQL はカスタマイズでき、GPL 契約を使用してソース コードを変更して独自の MySQL システムを開発できます。

第二に、環境整備

2.1、Docker のデプロイメント

# docker をインストールするための前提条件:

1). 64 ビット CPU アーキテクチャを備えたコンピューターである必要があります。Docker は現在 32 ビット CPU をサポートしていません。

2) Linux3.8 以降のバージョンのカーネルを実行します。CentOS の場合、カーネルは 3.10 未満であってはなりません。

3). カーネルは、デバイス マネージャー、AUFS、vfs、btrfs、およびデフォルト ドライバー デバイス マッパーのいずれかである適切なストレージ ドライバーをサポートする必要があります。

4). カーネルは、cgroup および namespace ネームスペース関数をサポートし、有効にする必要があります。

# 次のコマンドを使用して、centos のカーネル バージョンを表示します。

uname –r

2.1.1 yum デプロイメントドッカー

#注意: これは初めてのインストールです。以前にインストールしたことがある場合は、最初に古いバージョンのパッケージをアンインストールする必要があります。

yum パッケージを更新して最新の状態にします。

おいしいアップデート

# 古いバージョンの docker をアンインストールします。新しいマシンは無視できます。

sudo yum ドッカーを削除 \

                docker-common \

                ドッカーセリナックス \

                ドッカーエンジン

# 必要な依存関係をインストールする

yum install -y yum-utils device-mapper-persistent-data lvm2

# yum docker ソースを設定する

//公式画像

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

//アリの画像

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# DockerCE をインストールする

sudo yum install docker-ce

2.1.2 スクリプトのインストール

スクリプトのインストール (主にテスト環境と開発環境で使用されます)

$カール -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

2.2 ミラーアクセラレータの設定

# Alibaba Cloud Mirror Accelerator を例に挙げます

注: 各 Alibaba Cloud アカウントは異なるミラー アクセラレータを保持します。

Docker クライアントのバージョンが 1.10.0 以降のユーザーの場合

デーモン構成ファイル /etc/docker/daemon.json を変更することでアクセラレータを使用できます。

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "レジストリミラー": ["https://**20l7s9.mirror.aliyuncs.com"]

}

終了後

sudo systemctl デーモン-リロード

sudo systemctl ドッカーを再起動する

3、docker を使用して mysql をデプロイする

3.1. データ保存ディレクトリの作成

注: これは、次回の再インストール データが失われないようにするためのデータベース データ ストレージ ディレクトリです。

mkdir -p /データ/mysql/データ

chmod 777 /データ/mysql/データ

cd /データ/mysql/データ

3.2. ブリッジネットワークを作成し、IP 範囲を指定する

注: マルチコンテナ IP アクセスが必要です

# カスタムネットワークを作成する

docker network create --driver Bridge --subnet 172.0.0.0/16 ****

#既存のネットワークを表示する

ドッカーネットワークLS

3.3. Docker による MySQL のインストール

ポート: 3306、初期パスワード: 123456

データ保存ディレクトリ: /dat/mysql/data

#mysqlコンテナを作成する

ここでは、指定されたネットワーク、IP を省略して、仮想マシンのデプロイとインストールを例として取り上げます。

sudo docker run -d -p 3306:3306 \

--name mysql --privileged=true \

-v /data/mysql/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=123456 \

mysql

注: --privileged=true フィールドが追加されていない場合、権限エラーが報告される場合があり、そのエラー メッセージが次の図に示されています。

 

3.4、カスタム構成

3.4.1. 設定ストレージマッピングディレクトリの作成

mkdir -p /data/mysql/data /data/mysql/logs /data/mysql/conf

chmod -R 755 /data/mysql/

3.4.2. MySQL コンテナ内の設定ファイルをこのパスにコピーします

docker cp mysql:/etc/mysql/my.cnf /data/mysql/conf

3.4.3. MySQL コンテナの削除

docker rm -f mysql

3.4.4、MySQL コンテナを再作成する

#MySQL コンテナを再作成して、データ、ログ、構成ファイルをマシンにマッピングします

docker run -p 3306:3306 --name mysql8 --restart 常に \

-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \

-v /data/mysql/logs:/logs \

-v /data/mysql/data:/var/lib/mysql \

-v --privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.31

3.4.5. 設定ファイルの編集

vim /data/mysql/conf/my.cnf

# 最大接続数

max_connections=10000

# デフォルトのタイムゾーンを設定する

デフォルトのタイムゾーン='+8:00'

#MySQL コンテナを再起動します

ドッカーがmysqlを再起動する

4、MySQLのシンプルな構成

4.1. mysqlコンテナ内で対話モードでターミナルを開きます。

Dockerコンテナに入る

docker exec -it mysql /bin/bash

4.2、mysqlログイン

mysql -u root –p

4.3. リモートユーザーにすべてのテーブルに対するすべての権限を与える

*.* のすべてを 'root'@'%' に許可します。

# 暗号化ルールを変更する

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' パスワードは期限切れになりません。

# リモートアクセス

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 権限を更新する

フラッシュ権限。

# やめる

出口

4.4、Navicat が MySQL にリモート接続していることを確認する

5、データベースのエクスポートバックアップ

5.1、データベースのバックアップ

# コンテナに入る

docker exec -it 【ページID】 /bin/bash 

また

docker exec -it [コンテナID] bash

# データベースのエクスポート (docker がコンテナに入った後に操作)

 # よく使われる

# データベース全体をエクスポートします (データベース内のデータを含む)

mysqldump -u ユーザー名 -p データベース>データベース.sql

# データベース構造をエクスポートします (データなし)

mysqldump -u ユーザー名 -p -d データベース > データベース.sql   

# データベース内のデータテーブル(データを含む)をエクスポートします

mysqldump -u ユーザー名 -p データベース テーブル > table.sql

指定したファイルパスにエクスポートします

フォルダーがマウントされているコンテナー マッピング ボリュームを表示します (コンテナー内の /var/lib/mysql パスは Linux の特定のディレクトリにマウントされます。次のコマンドで確認します)。

docker 検査名/ID | grep マウント -A 20

# 指定されたパスに次のようにエクスポートします

   mysqldump -R -uroot -p データベース > /var/lib/mysql/database_bak.sql

# /var/lib/mysql/ はコンテナ内のパス 上記コマンド実行後、そのパス下にデータベース _bak.sql が生成されているか確認してください

# これに応じて、データベース _bak.sql も Linux ローカル システムのマウント パスに生成されます

# バックアップが完了したらコンテナを終了します

5.2、データベースの復元

データベースのインポート(dockerがコンテナに入った後に操作)

mysql -uroot -p

【データベース名】を使用します;

source 【sql file】# ここでのソース データベースのストレージ パスは、MySQL が Linux システムでローカルにマウントされているパスです

例: ソース /data/MySQL/data/database.sql

# データをデータベースにインポートする

mysql -uroot -D データベース名

# データベース内のテーブルにデータをインポートします

mysql -uroot -D データベース名 テーブル名

6、MySQL でよく使われる簡単なコマンド

# mysqlコマンドを削除する

出典: link タグ:dockerrmmysql

# mysqlコンテナを強制削除

docker rm -f mysql

# mysqlミラーを削除

docker rmi mysql

# docker イメージを表示する

ドッカーイメージ

# 実行中のコンテナを表示する

ドッカーps

# すべてのコンテナを表示

docker ps -a

# コンテナを削除する

docker rm コンテナ ID またはコンテナ名

# データベース全体をエクスポートします (データベース内のデータを含む)

mysqldump -u ユーザー名 -p データベース>データベース.sql

# データベース構造をエクスポートします (データなし)

mysqldump -u ユーザー名 -p -d データベース > データベース.sql

# データベース内のデータテーブル(データを含む)をエクスポートします

mysqldump -u ユーザー名 -p データベース テーブル > table.sql

# データベース内のデータテーブルのテーブル構造をエクスポートします (データなし)

mysqldump -u ユーザー名 -p -d データベース テーブル > table.sql

# データ復旧

mysql -uroot -p [データベース名] < [SQL ファイル]

# docker でのファイルコピー (docker コンテナ内のファイルをローカルファイルにコピー) 

 docker cp [コンテナID]: [コンテナディレクトリ] [ターゲットディレクトリ]

# ファイルをdockerに転送してパスを指定する

# 次のコマンドを実行して、コンテナ内のイメージの指定された場所にファイルをアップロードします

docker cp /ローカルパス/ファイル名コンテナIDまたは名前:/アップロードパス

# Docker から物理マシンにファイルを転送

同様に、docker 内のファイルを物理マシンに転送する必要がある場合は、前の cp コマンドの方向を逆にするだけで済みます。

docker cp コンテナ ID:/アップロード パス/パス/ファイル名

おすすめ

転載: blog.csdn.net/qq_52497256/article/details/128870731