MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する

MySQL 5.7 の Docker バージョンを MySQL 8.0.13 にアップグレードし、データを移行する

1. 古いMySQL5.7データをバックアップする

アップグレードの失敗によるデータ損失を防ぐために、最初に古いデータをバックアップすることを忘れないでください。バックアップには2つの方法があります。1つはホストマシン上で直接エクスポートコマンドを実行する方法、もう1つは最初にDocker環境に入って操作を実行する方法です。主なエクスポート コマンドは次のとおりです。

#方法 1: ホスト マシンで直接データをバックアップする# 0df568 は docker id、-uroot -p123456 はユーザー名とパスワード、dbA dbB はバックアップするデータ、--databases の後には複数のデータベース名が続く可能性があり、エクスポートされた sql は /root/all-databases3306.sql になります。
docker exec -it 0df568 mysqldump -uroot -p123456 --databases dbA dbB > /root/all-databases3306.sql
#========================================================================================================================================================
#方法 2: 最初に docker に入り、mysqldump を実行してから、エクスポートされた sql をホストにコピーします #最初に docker に入ります
docker exec -it 0df568 /bin/bash
#オプションのソース /etc/profile
#エクスポートコマンドを実行します。mysqldump -uroot -p123456 --databases dbA dbB > /root/all-databases3306.sql
#ホストマシンにコピー#Dockerを終了し、exitコマンドを実行しますexit
#この時点で、すでにホスト環境になっています。コピーコマンドを実行して、docker red から sql ファイルをコピーします。docker cp 0df568:/root/all-databases3306.sql /root/all-databases3306.sql

2. MySQL8.0.13のイメージをプルしてインストールを完了します

実際にMySQLを取得してインストールするには、公式Webサイトを参照してください。参考URL: https://hub.docker.com/r/mysql/mysql-server/。インストール手順の簡単な説明です。

2.1 イメージをローカルにプルする

最新のMySQLイメージを取得するには、次のコマンドを実行します。

 docker pull mysql/mysql-server:最新

指定されたMySQLイメージをプルする

#tag は、必要なバージョン番号を入力します。たとえば、MySQL8.0.13 が必要な場合は、タグdocker pull mysql/mysql-server:8.0.13
docker pull mysql/mysql-server:tag

docker イメージを使用して、プルダウンした進行状況を表示できます。

2.2 MySQL 8.0.13イメージを実行する

指定された MySQL8.0.13 Docker イメージを実行します。指定されたイメージは手順 2.1 ですでにプルされています。次に、docker images を通じてローカル Docker イメージを表示し、イメージ ID と名前を取得できます。次に、次のコマンドを実行して、MySQL 8.0.13 の Docker イメージを実行します。

#--name は実行および起動後の名前を指定します -e は docker 内の環境変数を指定します -v パーティションまたはディレクトリ マッピング、docker プログラム データはホストの指定された場所にマップされます -p はホストから docker プログラムへのポート マッピングを指定します -d はイメージのバージョンを指定します。
docker run --name=mysql8.0 -e MYSQL_ROOT_PASSWORD=123456 -v /root/dockerdata/mysql8.0/data:/var/lib/mysql -p 3307:3306 -dit mysql/mysql-server:8.0.13

実行されているか確認する

# 次のコマンドを実行します docker ps

3. MySQL 8.X にアップグレードした後の問題

MySQL 8.x にアップグレードした後、リモート接続が接続できなくなり、非常に不便なので修正する必要があります。主に次の 2 つの構成の側面が含まれます。

3.1 リモートアクセスの提供

ユーザーを @'%' に変更します。% はすべてのホストが接続できることを意味します。コマンドは次のとおりです。

#まずデータベースにrootとしてログインし、次のコマンドを実行します。#a. msyqlを使用します
mysql を使用します。
#b. 次に、 GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' という認証を実行します。
#c. 必ず権限を更新 (再ロード) してください。そうでない場合は、FLUSH PRIVILEGES を有効にするために MySQL を再起動する必要があります。

3.2 接続時のパスワード認証方法を変更する

MySQL8.X の暗号化方式は caching_sha2_password です。caching_sha2_password 暗号化方式はリモート アクセス時にはサポートされないため、 mysql_native_passwordに変更する必要があります。

# a. 指定されたユーザーを変更します ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# b. 必ず権限を更新 (再ロード) してください。そうでない場合は、FLUSH PRIVILEGES を有効にするために MySQL を再起動する必要があります。

4. 新しいMySQLにデータをインポートする

データをインポートするには、まずデータベースのバックアップ ファイルを新しい Docker にコピーし、次にインポート コマンドを実行します。コマンドは次のとおりです。

#バックアップファイルをdockerにコピーします cp /root/all-databases3306.sql 3sfsdf:/root/all-databases3306.sql 
#まずdocker環境に入り、それをデータベースにインポートします。docker exec -it xxx /bin/bash
mysql -u ルート -p < /root/all-databases3306.sql

5. 参考資料

https://hub.docker.com/r/mysql/mysql-server/
参考:

要約する

以上が、Docker バージョンの MySQL5.7 から MySQL8.0.13 へのアップグレードとデータ移行についての編集者による紹介です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • MySql5.x を MySql8.x にアップグレードする方法と手順
  • MySQL 8.0 アップグレード体験

<<:  MySQL 5.7 および MySQL 8.0 でルートパスワードを変更する方法の概要

>>:  Vue.js で AntV X6 を使用する手順の例

推薦する

Nginx の http リソース リクエスト制限の詳細な説明 (3 つの方法)

前提条件: nginx には、ngx_http_limit_conn_module モジュールと n...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...

Linux 上での Go 環境の構築のインストールと設定の説明

Linux で Go 環境を構築するのは非常に簡単です。 1. go1.2.1.linux-386....

ウェブページが自動的にデュアルコアブラウザの高速モードを呼び出すようにします(Webkit)

コードサンプルヘッドタグにコード行を追加します: XML/HTML コードコンテンツをクリップボード...

Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

1. バックグラウンド実行一般的に、Linux 上のプログラムは .sh ファイル (./sh フ...

vue.js を使用してドラッグ アンド ドロップ機能を実装する方法

序文ドラッグ アンド ドロップ機能を追加すると、プログラムがより自然でユーザーフレンドリーになります...

ドラッグアンドドロップでVueユーザーインターフェースを生成する方法

目次序文1. 技術原理1.1 レイアウト1.2 コンポーネント1.3 ステータス1.4 イベント1....

MySQLデータベースの操作とメンテナンスのデータ復旧方法

これまでの 3 つの記事では、論理バックアップと物理バックアップを含む、MySQL データベースの一...

MySQL の厄介な Aborted 警告をケーススタディで分析する

この記事では主に、MySQL の Aborted アラームに関する関連コンテンツを紹介し、参考と学習...

MySQL ストレステストツール Mysqlslap の使用

1. MySQL独自のストレステストツールMysqlslap mysqlslap は、mysql に...

スネークゲームを作るための Pygame コード

目次使用されるPygame関数スクリーンの作成ヘビの作成ヘビを動かすゲームオーバーの処理食事を増やす...

Linux statコマンドの使用

1. コマンドの紹介stat コマンドは、ファイルまたはファイル システムに関する詳細情報を表示する...

JavaScript 文字列オブジェクトメソッド

目次文字列オブジェクトのメソッド方法 1: indexOf() (推奨)方法 2: search()...

MySQL はどのようにしてマスターとスレーブの一貫性を確保するのでしょうか?

目次MySQLマスタースレーブの基本原理3つのbinlog形式の比較混合形式のバイナリログが存在する...

CSS3はトランジション効果を実現するためにtransitionプロパティを使用する。

物件の詳細な説明transition 属性の目的は、一部の CSS プロパティ (背景など) をスム...