1. 公式サイトを参照してdockerをインストールする 2. MySQLイメージをプルします(デフォルトでは最新のイメージをプルします)8.0.11 docker プル mysql 3. ホスト上に永続的なmysqlデータとmysql.cnfを作成する mkdir /usr/local/mysqlData/test/cnf mkdir /usr/local/mysqlData/test/data vi /usr/loal/mysqlData/test/cnf/mysql.cnf ローカルファイル共有を設定するには: Docker -> 設定... -> ファイル共有 4. 操作権限を追加する chmod 777 /usr/local/mysqlData/test/data注: マウント時の権限検証 (操作権限) 5. イメージを実行し、初期パスワードを設定し、ローカルポートをDockerポートにマップし、ローカルデータディスクをマウントします( msyqlサービスを開始します)。 docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql 実行結果: 6. test_mysqlコンテナに入る Docker 実行 -it test_mysql bash 図に示すように: 7. コンテナ内のmysqlにログインする 8. ユーザー情報を表示する mysql> mysql.user からユーザー、ホスト、認証文字列を選択します。 +------------------+----------+--------------------------------------------------------------------------------------+ | ユーザー | ホスト | 認証文字列 | +------------------+----------+--------------------------------------------------------------------------------------+ | ルート | % | $A$005$7o{'|'AomAw(QvF#.p5wLtCnrG6yX6XQdDVQivGr96POVL.gKnhIAhUhl3. | | mysql.infoschema | localhost | *ここで使用できるパスワードは無効です | | mysql.session | localhost | *ここで使用できるパスワードは無効です | | mysql.sys | localhost | *ここで使用できるパスワードは無効です | | ルート | ローカルホスト | $A$005$0.-%i)H{uYi@zFo7uYF82fYw7DsA93vYLr4uZv6I1tSKao0sbzzcDap3 | +------------------+----------+--------------------------------------------------------------------------------------+ セット内の行数は 5 です (0.00 秒) 9. 権限を設定する(リモート接続できるようにルートに権限を割り当てる) mysql> GRANT OPTION で root@'%' に *.* のすべての権限を付与します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) 10.Mysql 5.6以降ではパスワードアルゴリズムが変更されているため、Navicat接続の使用を容易にするためにパスワードアルゴリズムを更新する必要があります。 mysql> GRANT OPTION で root@'%' に *.* のすべての権限を付与します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> ALTER ユーザー 'root'@'%' IDENTIFIED BY '123456' パスワードは期限切れではありません。 クエリは正常、影響を受けた行は 0 行 (0.11 秒) mysql> ユーザー 'root'@'%' を変更し、mysql_native_password によって '123456' で識別しました。 クエリは正常、影響を受けた行は 0 行 (0.11 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) 11. 図に示すように、Navicat を使用して MySQL に接続します。 12. データベースとテーブルを作成し、データを追加する マウントされたローカル データ ディスクの内容を表示します。 13. コンテナを削除した後もデータが残っているかどうかをテストする docker rm -f test_msyql コンテナは削除されました。 test_mysql を再デプロイし、手順 5 を参照して新しいコンテナーに入り、データベースにアクセスします。 xushijiandeiMac:data xushijian$ docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql 65b7a60050aaef5765ed055acfd071c7c76f60e85dc25d0e73e0d56eae14aed1 xushijiandeiMac:data xushijian$ docker exec -it test_mysql bash ルート@65b7a60050aa:/#mysql -uroot -p パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは8です サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL Copyright (c) 2000, 2018, Oracle およびその関連会社。無断複写・転載を禁じます。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| | テスト | +--------------------+ セット内の 5 行 (0.01 秒) mysql> テストを使用します。 テーブル名と列名の補完のためのテーブル情報の読み取り -Aでこの機能をオフにすると起動が速くなります。 データベースが変更されました mysql> user_user から * を選択します。 +---------+------------+------------+---------+ | ユーザーID | ユーザー名 | 電話番号 | メモ | +---------+------------+------------+---------+ | 1 | まっすぐではない | 13980000000 | テスト | +---------+------------+------------+---------+ セット内の1行(0.06秒) 追加の構成なしでもデータを使用できることがわかり、データの永続性が実現されます。 Alibaba Cloud 上の Docker に MySQL をデプロイする (オーケストレーション テンプレート経由でデプロイ) <1. 設定はステップ 3 と同様です (ディレクトリのみが変わります) マスター: イメージ: 'mysql:latest' 環境: -MYSQL_ROOT_PASSWORD=123456 ポート: - '3307:3306/tcp' ボリューム: - '/usr/local/mysqlData/master/conf:/etc/mysql:rw' - '/usr/local/mysqlData/master/data:/var/lib/mysql:rw' ラベル: aliyun.スケール: '1' <2. 以下のように展開が完了しました [root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# クリア [root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 8597b7539a3a mysql:latest "docker-entrypoint..." 3 分前 3 分前にアップ 0.0.0.0:3307->3306/tcp mysql_master_1 <3. コンテナに入り、権限を設定します。以降のプロセスはローカルマシンを参照します。 [root@c13a6d832fd0a49398c62002361d75c60-node1 /]# docker exec -it mysql_master_1 bash ルート@2fc0bbf48941-mysql-master-1:/# mysql -uroot -p パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは8です サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL Copyright (c) 2000, 2018, Oracle およびその関連会社。無断複写・転載を禁じます。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 マイSQL> <4. 外部ネットワークからアクセスできるようにポート3307を開きます クラウドサーバー ECS -> セキュリティグループ -> リージョンの選択 -> ルールの設定 -> セキュリティグループの追加 図に示すように、セキュリティ グループを追加します。 5. 外部ネットワークアクセス(下図参照) 正常に接続されました。 マスタースレーブ環境の構築: メインライブラリ: [root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql_master_1 bash ルート@2fc0bbf48941-mysql-master-1:/# mysql -uroot -p パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは9です サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL Copyright (c) 2000, 2018, Oracle およびその関連会社。無断複写・転載を禁じます。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| +--------------------+ 4 列セット (0.30 秒) mysql> データベーステストを作成します。 クエリは正常、1 行が影響を受けました (0.12 秒) mysql> データベースを表示します。 エラー 1064 (42000): SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'database' 付近で使用する正しい構文を確認してください。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| | テスト | +--------------------+ セット内の行数は 5 です (0.00 秒) ライブラリから: [root@c13a6d832fd0a49398c62002361d75c60-node1 ~]# docker exec -it mysql-slave_slave_1 bash ルート@c8661e16e3fd-mysql-スレーブ-スレーブ-1:/# mysql -uroot -p パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは10です サーバーバージョン: 8.0.11 MySQL コミュニティサーバー - GPL Copyright (c) 2000, 2018, Oracle およびその関連会社。無断複写・転載を禁じます。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| +--------------------+ 4 列セット (0.40 秒) mysql>スレーブステータスを表示\G ************************** 1. 行 **************************** Slave_IO_State: マスターがイベントを送信するのを待機しています。マスター/スレーブ構成が成功しました。 マスターホスト: 47.94.225.124 マスターユーザー: 担当者 マスターポート: 3307 接続再試行: 60 マスターログファイル: binlog.000003 読み取りマスターログ位置: 155 リレー ログ ファイル: c8661e16e3fd-mysql-slave-slave-1-relay-bin.000004 リレーログ位置: 363 リレーマスターログファイル: binlog.000003 スレーブIO実行中: はい スレーブSQL実行中: はい レプリケート_Do_DB: レプリケート_無視_DB: テーブルの複製: 無視テーブルを複製: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: 最終エラー番号: 0 最終エラー: スキップカウンタ: 0 実行マスターログ位置: 155 リレーログスペース: 762 Until_Condition: なし ログファイルまで: ログ位置まで: 0 マスターSSL許可: いいえ マスターSSLCAファイル: マスターSSLCAパス: マスターSSL証明書: マスターSSL暗号: マスターSSLキー: マスターより遅れている秒数: 0 Master_SSL_Verify_Server_Cert: いいえ 最終IOエラー番号: 0 最後のIOエラー: 最終SQLエラー番号: 0 最後のSQLエラー: Replicate_Ignore_Server_Ids: マスターサーバーID: 1 マスター_UUID: a482f5fe-80fb-11e8-9fb1-0242ac12020c マスター情報ファイル: mysql.slave_master_info SQL_遅延: 0 SQL_残り遅延: NULL Slave_SQL_Running_State: スレーブはすべてのリレーログを読み取りました。さらに更新を待機しています。 マスター再試行回数: 86400 マスターバインド: 最終IOエラータイムスタンプ: 最終SQLエラータイムスタンプ: マスターSSL証明書: マスターSSLCrlパス: 取得済み_Gtid_Set: 実行されたGtidセット: 自動位置: 0 Replicate_Rewrite_DB: チャンネル名: マスター TLS バージョン: マスター公開キーパス: マスター公開キーの取得: 0 セット内の 1 行 (0.00 秒) mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| +--------------------+ セット4行(1.01秒) mysql> データベースを表示します。 エラー 1064 (42000): SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'database' 付近で使用する正しい構文を確認してください。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| | テスト | +--------------------+ セット内の行数は 5 です (0.00 秒) マスタースレーブライブラリ原理の分析: I/O スレッドはマスター ライブラリの binlog を要求し、取得した binlog をリレー ログ ファイルに書き込みます。マスター ライブラリはログ ダンプ スレッドを生成し、binlog をスレーブ ライブラリの I/O スレッドに転送します。 SQL スレッドはリレー ログ ファイル内のログを読み取り、それを特定の操作に解析して、マスターとスレーブの操作の一貫性を実現し、最終的にデータの一貫性を保ちます。 つまり、スレーブIOスレッドのリクエスト -> ログのリレー -> バイナリログの取得 -> スレーブSQLスレッド、解析 参照: https://docs.docker.com/ Docker公式サイトのドキュメント https://blog.csdn.net/gf0515/article/details/80466213 Mac Navicat が Docker MySql8.0 に接続する Docker mysql マスタースレーブレプリケーション https://blog.csdn.net/qq_28804275/article/details/80891951 マスタースレーブ環境の構築 docker mysql Dockerfile mysql オープンソースイメージ Dockerfile と設定 https://www.cnblogs.com/Aiapple/p/5792939.html マスタースレーブレプリケーションの原理と高可用性分析 http://www.cnblogs.com/Aiapple/p/5793786.html 実戦 これで、MySQL 8.0 を Docker でデプロイする例についての記事は終了です。MySQL 8.0 を Docker でデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
百度入力方式の担当者は、百度入力方式のオープンAPIの最大の利点は操作が便利であることであり、プラッ...
目次テーブルの競合を見つけて修正するインデックス統計の更新テーブルの競合を見つけて修正するデータ テ...
1. flex-grow、flex-shrink、flex-basis プロパティflex-grow...
公式、電子商取引、ソーシャル ネットワーキング、個人のいずれの Web サイトでも、訪問者に貴重な時...
目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...
目次なぜ Docker が必要なのでしょうか? Docker デプロイメントの例コードの準備Dock...
この記事では、WeChatアプレットの具体的なコードを参考までに共有します。具体的な内容は次のとおり...
ファイル操作に関連するシステムコール作成するint creat(const char *ファイル名,...
この記事の例では、WeChatアプレットで複数行のテキストスクロールを実装するための具体的なコードを...
<br />これは、Steven D が書いた Web フロントエンド開発デザインの基本...
1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...
1. セレクターを調整するコンビネータを使用すると、セレクターの説明をより正確に記述できます (C...
1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...
Docker テクノロジの開発により、マイクロサービスの実装にさらに便利な環境が提供されます。Doc...
CSS ビューポート ユニットはここ数年登場しており、時が経つにつれて、ますます多くの開発者が使用し...