3、docker を使用して mysql 6 をデプロイする
3.2. ブリッジネットワークを作成し、IP 範囲を指定します... 6
3.3. Docker は MySQL をインストールします。6
4.1. コンテナー mysql... 9 で対話モードでターミナルを開きます。
4.3. リモートユーザーにすべてのテーブルに対するすべての権限を与える... 9
4.4、Navicat が MySQL にリモートで接続していることを確認します。
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:/アップロード パス/パス/ファイル名