背景
作業内容:
この前、AWS EC2サーバーにウェブサイトを立ち上げた。 WebサービスとMySQLは全てコンテナの形。今ではEC2中のMySQLデータを自分のローカルサーバに引っ越すつもり。
使用するツール:
👇electerm(EC2サーバにアクセス用),ダウンロードリンク
https://electerm.github.io/electerm/
👇WinSCP(サーバとローカルPC間のデータ通信を行う),ダウンロードリンク
https://winscp.net/eng/download.php
1.AWS-EC2において
1-1.引っ越す元サーバの状況を確認
コマンド | 備考 |
---|---|
docker ps | grep mysql |
MySQLコンテナのステータスを確認 |
docker exec -it mysql /bin/bash |
コンテナに入る |
mysql -uroot -p -s |
ENTERキーを押し、パスワードを入力 |
show tables from halodb; |
引っ越す元のデータを見る |
1-2.数据导出
MySQLのインスタンスを新規する際、,以下の3つのボリュームを使った。(今回作業のコマンドではない!)。
-v /home/halo/mysql/data:/var/lib/mysql
ホスト機ディレクトリ1:コンテナ内ディレクトリ1
-v /home/halo/mysql/conf:/etc/mysql/conf.d
ホスト機ディレクトリ2:コンテナ内ディレクトリ2
-v /home/halo/mysql/logs:/var/log/mysql
ホスト機ディレクトリ3:コンテナ内ディレクトリ3
備考:-v
コマンドでホスト側とコンテナ側の指定ディレクトリを同期させて、インスタンスが万が一削除されても、データはまだホスト側に残す。これで、データの永続化を実現。
それで、データをexportする際、上記のコンテナ内ディレクトリ1~3のいずれかを選択。
ここで選択したのは:/var/lib/mysql
mysqldump -uroot -p --databases halodb > /var/lib/mysql/halodb.sql
1-3.export結果を確認
コマンド | 備考 |
---|---|
ls -l /var/lib/mysql/halodb.sql |
コンテナ内でexport結果を確認 |
exit |
コンテナを出る |
ls -l /home/halo/mysql/data/halodb.sql |
ホスト側でもexport結果を確認 |
2.WinSCPでexport結果ファイルをローカルにダウンロード
3.引っ越す先(ローカルサーバ)において
3-1.查看docker状态和MySQL容器挂载卷
コマンド | 備考 |
---|---|
docker ps |
Dockerのステータス一覧を確認 |
ls -l /home/halo/mysql/ |
MySQLコンテナ用のホスト機ディレクトリを確認 |
備考:上記画像に出た/home/halo/mysql/conf/my.cnfファイルの中身:👇
[mysqld]
# データディレクトリを指定
datadir=/var/lib/mysql
# サーバの文字コード
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# errorログ
log-error=/var/log/mysql/error.log
# 1:オン【自由選択】
slow_query_log=1
# 時間値【自由選択】
long_query_time=3
# ログ
slow-query-log-file=/var/log/mysql/slow.log
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
3-2.MySQLインスタンスを新規
docker run --name mysql \
-v /home/halo/mysql/data:/var/lib/mysql \
-v /home/halo/mysql/conf:/etc/mysql/conf.d \
-v /home/halo/mysql/logs:/var/log/mysql \
-p 3306:3306 \
-e TZ=Asia/Tokyo \
-e MYSQL_ROOT_PASSWORD=自分のパスワード \
--net halo-net \
--restart=unless-stopped \
-d mysql:5.7.38
3-3.WinSCPでローカルPCからローカルサーバにアップロード
3-4.ローカルサーバでexportファイルを確認
コマンド | 備考 |
---|---|
ls -l /home/halo/mysql/data/halodb.sql |
ローカルサーバのホスト側でexportファイルを確認 |
docker exec -it mysql /bin/bash |
コンテナに入る |
ls -l /var/lib/mysql/halodb.sql |
コンテナ内でexportファイルを確認 |
3-5.exportファイルを使い、データを展開
コマンド | 備考 |
---|---|
exit |
MySQLを出るが、まだコンテナ内 |
mysql -uroot -p < /var/lib/mysql/halodb.sql |
パスワードを入力し、データを展開 |
mysql -uroot -p -s |
再度MySQLに入り、展開結果を確認 |
show databases; |
展開したデータベースを確認 |
show tables from halodb; |
展開したデータを確認 |
コメント欄