シングルノードデータベースの欠点
単一ノードの MySQL パフォーマンスのボトルネック 2016年春節のWeChat紅包の取引量は膨大で、データベースに大きな負荷がかかった 一般的なMySQLクラスタソリューション MySQL クラスター ソリューションを導入する場合、弱い一貫性は問題を引き起こすため、PXC を使用することをお勧めします。たとえば、ノード A のデータベースでは購入が成功したことが示されていますが、ノード B のデータベースでは成功しなかったことが示されています。これは面倒です。PXC ソリューションでは、すべてのノードが正常に書き込まれた後にのみ成功が通知されます。読み取りと書き込みが可能な双方向同期ですが、レプリケーションは単方向です。異なるノードのデータベース間では、通信用にポートが開いています。ファイアウォールからのこのポートが閉じられていると、PXC は正常に同期されず、成功を返しません。 レプリケーション
PXC (Percona XtraDB クラスター)
PXCではPerconaServer(パフォーマンスが大幅に向上したMySQLの改良版)の使用が推奨されます。 PXCの強力なデータ一貫性 同期レプリケーションでは、トランザクションはすべてのクラスター ノードで同時に送信されるか、送信されません。レプリケーションでは非同期レプリケーションが使用されるため、データの一貫性は保証されません。 PXC クラスタのインストールの概要 Docker リポジトリの PXC 公式イメージを使用して、PXC クラスターを Docker にインストールします: https://hub.docker.com/r/percona/percona-xtradb-cluster 1. 公式 Docker リポジトリから PXC イメージをダウンロードします。 docker pull percona/percona-xtradb-cluster またはローカルにインストールする docker ロード < /home/soft/pxc.tar.gz インストール完了: [root@localhost ~]# docker pull percona/percona-xtradb-cluster デフォルトタグの使用: 最新 リポジトリ docker.io/percona/percona-xtradb-cluster をプルしようとしています... 最新: docker.io/percona/percona-xtradb-cluster からプル ff144d3c0ab1: プル完了 eafdff1524b5: プルが完了しました c281665399a2: プル完了 c27d896755b2: プルが完了しました c43c51f1cccf: プル完了 6eb96f41c54d: プル完了 4966940ec632: プル完了 2bafadcea292: プル完了 3c2c0e21b695: プル完了 52a8c2e9228e: プル完了 f3f28eb1ce04: プル完了 d301ece75f56: プル完了 3d24904bec3c: プル完了 1053c2982c37: プル完了 ダイジェスト: sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd ステータス: docker.io/percona/percona-xtradb-cluster:latest の新しいイメージをダウンロードしました [root@localhost ~]# docker イメージ リポジトリ タグ イメージ ID 作成 サイズ docker.io/percona/percona-xtradb-cluster 最新 70b3670450ef 2 か月前 408 MB 2. 画像の名前を変更します: (名前が長すぎる場合は、名前を変更してください) docker タグ percona/percona-xtradb-cluster:latest pxc その後、元の画像を削除できます [root@localhost ~]# docker イメージ リポジトリ タグ イメージ ID 作成 サイズ docker.io/percona/percona-xtradb-cluster 最新 70b3670450ef 2 か月前 408 MB pxc 最新 70b3670450ef 2か月前 408 MB docker.io/java 最新 d23bdf5b1b1b 2年前 643 MB [root@localhost ~]# docker rmi docker.io/percona/percona-xtradb-cluster タグなし: docker.io/percona/percona-xtradb-cluster:latest タグなし: docker.io/percona/percona-xtradb-cluster@sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd [root@localhost ~]# docker イメージ リポジトリ タグ イメージ ID 作成 サイズ pxc 最新 70b3670450ef 2か月前 408 MB docker.io/java 最新 d23bdf5b1b1b 2年前 643 MB 3. セキュリティ上の理由から、PXCクラスタ用のDocker内部ネットワークを作成します。 # ネットワークセグメントを作成する docker network create --subnet=172.18.0.0/24 net1 # ネットワークセグメントを表示する docker network inspect net1 # ネットワークセグメントを削除します# docker network rm net1 4. Dockerボリュームを作成します。 # v1 という名前のデータボリュームを作成します。--name は省略できます。docker volume create --name v1 データ量を表示 ドッカー検査v1 結果: [root@localhost ~]# dockerinspectv1 [ { "ドライバー": "ローカル", 「ラベル」: {}, "マウントポイント": "/var/lib/docker/volumes/v1/_data",#これはホストマシン上の保存場所です"名前": "v1", 「オプション」: {}, 「スコープ」: 「ローカル」 } ] データボリュームの削除 docker ボリューム rm v1 5つのデータボリュームを作成する # 5 つのデータボリュームを作成する docker volume create --name v1 docker ボリューム作成 --name v2 docker ボリューム作成 --name v3 docker ボリューム作成 --name v4 docker ボリューム作成 --name v5 5. 5つのPXCコンテナを作成します。 # クラスターを形成するために 5 つの PXC コンテナを作成します # 最初のノード docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql --name=node1 --network=net1 --ip 172.18.0.2 pxc # 最初のノードが起動したら、MySQL が起動するまでしばらく待ちます。 # 2 番目のノード docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql --name=node2 --net=net1 --ip 172.18.0.3 pxc # 3 番目のノード docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --name=node3 --net=net1 --ip 172.18.0.4 pxc # 4 番目のノード docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --name=node4 --net=net1 --ip 172.18.0.5 pxc # 5 番目のノード docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql --name=node5 --net=net1 --ip 172.18.0.6 pxc チェック: [root@localhost ~]# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 f4708ce32209 pxc "/entrypoint.sh " 約 1 分前 アップ 約 1 分 4567-4568/tcp, 0.0.0.0:3309->3306/tcp node4 bf612f9586bc pxc "/entrypoint.sh " 17 分前 17 分前にアップ 4567-4568/tcp、0.0.0.0:3310->3306/tcp node5 9fdde5e6becd pxc "/entrypoint.sh " 17 分前 17 分前に起動 4567-4568/tcp、0.0.0.0:3308->3306/tcp node3 edd5794175b6 pxc "/entrypoint.sh " 18 分前 18 分前に起動 4567-4568/tcp、0.0.0.0:3307->3306/tcp node2 33d842de7f42 pxc "/entrypoint.sh " 21 分前 21 分前にアップ 0.0.0.0:3306->3306/tcp、4567-4568/tcp node1 データベース負荷分散の必要性 クラスターは構築されていますが、データベースの負荷分散は使用されていません。単一のノードがすべてのリクエストを処理するため、負荷が高くなり、パフォーマンスが低下します。 クラスター内のすべてのノードにリクエストを均等に送信します。
負荷分散ミドルウェアの比較 負荷分散には、まずデータベース クラスターが関係します。5 つのクラスターが追加され、各リクエストが最初のクラスターに送信される場合は、最初のデータベースが失敗する可能性があります。したがって、よりよい解決策は、異なるノードにリクエストを送信することです。これには、転送用のミドルウェアが必要です。よりよいミドルウェアには、nginx と haproxy があります。nginx はプラグインをサポートしていますが、tcp/ip プロトコルしかサポートしていません。haproxy は、古いミドルウェア転送ソフトウェアです。 haproxy を使用する場合は、公式 Web サイトからイメージをダウンロードし、イメージを設定できます (このイメージには設定ファイルがないため、設定ファイルを自分で記述します。設定後、イメージを実行するときにフォルダーをマップします。設定ファイルは 3306 (データベース要求を開き、ハートビート検出のチェックに基づいてさまざまなデータベースにアクセスし、8888 はデータベース クラスターを監視します))。構成ファイルでは、ユーザー (ユーザーはデータベースでハートビート検出を実行し、どのデータベース ノードがアイドル状態であるかを判断し、アイドル状態のノードにアクセスします)、さまざまなアルゴリズム (ラウンドロビン トレーニングなど)、最大接続数、時間など、およびクラスター監視を設定します。設定ファイルが書き込まれたら、イメージを実行します。イメージが正常に実行されたら、コンテナの起動設定ファイルを入力します。実際、haprocy はデータベース インスタンスも返します (ただし、データは保存されず、リクエストを転送するだけです)。これは他のノードをチェックするために使用されます。 Haproxyをインストールする 1. Docker リポジトリから haproxy イメージを取得します: https://hub.docker.com/_/haproxy docker プル haproxy [root@localhost ~]# docker イメージ リポジトリ タグ イメージ ID 作成 サイズ docker.io/haproxy 最新 11fa4d7ff427 11日前 72.2 MB 2. Haproxy 構成ファイルを作成します。 Haproxy コンテナで使用する場合 (Docker では構成ファイルは生成されないため、ホスト マシンで構成ファイルを自分で作成する必要があります) # コンテナを起動するときにディレクトリマッピング技術を使用して、コンテナが設定ファイル touch /home/soft/haproxy/haproxy.cfg を読み取れるようにします。 ハプロキシ.cfg # haproxy.cfg グローバル #作業ディレクトリ chroot /usr/local/etc/haproxy #ログファイル、rsyslogサービス内のlocal5ログデバイス(/var/log/local5)を使用、レベル情報 ログ 127.0.0.1 local5 情報 #デーモンプロセス実行中のデーモン デフォルト ロググローバル モード http #ログフォーマットオプション httplog # ロードバランシングのハートビート検出記録をログに記録しないオプション dontlognull #接続タイムアウト(ミリ秒) タイムアウト接続5000 #クライアントタイムアウト(ミリ秒) タイムアウトクライアント 50000 #サーバーのタイムアウト(ミリ秒) タイムアウトサーバー50000 #監視インターフェース listen admin_stats #監視インターフェースアクセス IP とポートバインド 0.0.0.0:8888 #アクセスプロトコルモード http #URI 相対アドレス 統計 uri /dbs #統計レポート formatstats realm グローバル\統計 #ログインアカウント情報統計認証管理者:abc123456 #データベース負荷分散 listen proxy-mysql #アクセスIPとポートバインド0.0.0.0:3306 #ネットワークプロトコルモード tcp #負荷分散アルゴリズム(ラウンドロビンアルゴリズム) # ポーリングアルゴリズム: ラウンドロビン #重み付けアルゴリズム: static-rr # 最小接続アルゴリズム: leastconn #リクエスト元IPアルゴリズム: ソース バランスラウンドロビン #ログフォーマットオプション tcplog #MySQL に権限のない haproxy ユーザーを作成し、パスワードを空に設定します。 Haproxyはこのアカウントを使用してMySQLデータベースオプションmysql-check user haproxyでハートビート検出を実行します サーバー MySQL_1 172.18.0.2:3306 チェックウェイト 1 maxconn 2000 サーバー MySQL_2 172.18.0.3:3306 チェックウェイト 1 maxconn 2000 サーバー MySQL_3 172.18.0.4:3306 チェックウェイト 1 maxconn 2000 サーバー MySQL_4 172.18.0.5:3306 チェックウェイト 1 maxconn 2000 サーバー MySQL_5 172.18.0.6:3306 チェックウェイト 1 maxconn 2000 #キープアライブを使用してデッドリンクを検出するオプション tcpka 3. データベース クラスターに空のパスワードと権限のないユーザー haproxy を作成し、Haproxy が MySQL データベースでハートビート検出を実行できるようにします。 '' で識別されるユーザー 'haproxy'@'%' を作成します。 4. Haproxy コンテナを作成する (高可用性のため、name=h1) # ここで --privileged を追加する必要があります docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --net=net1 --ip 172.18.0.7 --privileged haproxy 5. コンテナに入る docker exec -it h1 bash 6. コンテナbashでHaproxyを起動する haproxy -f /usr/local/etc/haproxy/haproxy.cfg 次に、ブラウザで Haproxy 監視インターフェースを開きます。ポートは 4001 で、ユーザー名は admin、パスワードは abc123456 が構成ファイルに定義されています。 この時点で、Dockerノードを手動でハングアップして変更を確認します(ハングアップとして表示されていることがわかります) 8. Haproxy はデータを保存せず、データを転送するだけです。データベースでHaproxy接続を確立できます。ポート4002、ユーザー名とパスワードはデータベースクラスターのユーザー名とパスワードです。 デュアルマシンホットスタンバイを使用する理由 シングルノードのHaproxyは高可用性を持たず、冗長設計が必要です。 デュアル マシンとは、2 つの haproxy などの 2 つの要求処理プログラムを意味します。1 つに障害が発生した場合、もう一方が処理を引き継ぎます。ホットスタンバイはキープアライブとして理解しています。 haproxy コンテナに keepalive をインストールします。 仮想IPアドレス Linux システムでは、1 つのネットワーク カードに複数の IP アドレスを定義し、これらのアドレスを複数のアプリケーションに割り当てることができます。これらのアドレスは仮想 IP です。Haproxy のデュアル マシン ホット スタンバイ ソリューションの最も重要なテクノロジは仮想 IP です。 鍵となるのは仮想IPです。仮想IPを定義し、2つのhaproxyサーバーにそれぞれkeepaliveイメージをインストールします。haproxyはUbuntuシステム上にあるため、インストールにはapt-getを使用します。keepaliveの機能は仮想IPを奪取することです。奪取された方がプライマリサーバー、奪取されていない方がバックアップサーバーです。次に、2つのkeepaliveサーバーはハートビート検出を実行します(つまり、相手がまだ生きているかどうかをテストするためのユーザーを作成します。MySQLクラスター間でもハートビート検出があります)。ハングアップすると、IPが奪取されます。したがって、キープアライブを開始する前に、まずその構成ファイル、プリエンプト方法、重み、仮想 IP、作成されたユーザーが送信する内容を編集する必要があります。設定と起動後、pingを実行して正しいかどうかを確認し、仮想IPをLAN IPにマッピングします。 Keepalivedを使用してホットスタンバイを実装する
プロキシデュアルマシンホットスタンバイソリューション Docker で 2 つの Haproxy を作成し、Keepalived を介して Docker の仮想 IP を取得します。 Docker の仮想 IP は外部ネットワークからアクセスできないため、ホストの Keepalived を使用して、外部ネットワークからアクセスできる仮想 IP にマッピングする必要があります。 Keepalivedをインストールする 1. Haproxy コンテナに入り、Keepalived をインストールします。 $ docker exec -it h1 bash apt-getアップデート apt-get をインストールしてkeepalived 2. Keepalived 設定ファイル (Keepalived.conf): # vim /etc/keepalived/keepalived.conf vrrp_インスタンス VI_1 { state MASTER # Keepalived の ID (MASTER サービスは IP を取得する必要があり、BACKUP サーバーは IP を取得しません)。 interface eth0 # 仮想 IP が配置されている Docker ネットワーク カード デバイス virtual_router_id 51 # 仮想ルーティング識別子。MASTER と BACKUP の仮想ルーティング識別子は一致している必要があります。 0から255まで priority 100 # MASTER は BACKUP よりも高い重みを持ちます。数値が大きいほど、優先度が高くなります。advert_int 1 # MASTER ノードと BACKUP ノード間の同期チェックの時間間隔 (秒単位) は、マスターとバックアップ間で一貫している必要があります。authentication { # マスター スレーブ サーバー認証方法。マスターとスレーブは正常に通信するために同じパスワードを使用する必要があります。 auth_type PASS 認証パスワード 123456 } virtual_ipaddress { #仮想IP。複数の仮想IPアドレスを設定できます。1行につき172.18.0.201です。 } } 3. Keepalivedを起動する サービスkeepalived開始 起動に成功したら、ip a を使用して、ネットワーク カードの仮想 IP が成功しているかどうかを確認できます。また、ホスト マシンの仮想 IP 172.18.0.201 に正常に ping を実行できます。 4. 上記の手順に従って、別の Haproxy コンテナを作成できます。マップされたホスト ポートは繰り返すことができず、Haproxy 構成は同じであることに注意してください。次に、コンテナに Keepalived をインストールします。構成は基本的に同じです (優先度の重みを変更できます)。このようにして、Haproxy デュアルマシン ホット スタンバイ ソリューションが基本的に実装されます。コマンドは次のとおりです。 Haproxy コンテナを作成します (高可用性のため、name=h2) # ここで --privileged を追加する必要があります docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --net=net1 --ip 172.18.0.8 --privileged haproxy コンテナに入る docker exec -it h2 bash コンテナbashでHaproxyを起動する haproxy -f /usr/local/etc/haproxy/haproxy.cfg 次に、ブラウザで Haproxy 監視インターフェースを開きます。ポートは 4003 で、ユーザー名は admin、パスワードは abc123456 が構成ファイルに定義されています。 Keepalived をインストールします。 apt-getアップデート apt-get で keepalived をインストール Keepalived 構成ファイル (Keepalived.conf): # vim /etc/keepalived/keepalived.conf vrrp_インスタンス VI_1 { state MASTER # Keepalived の ID (MASTER サービスは IP を取得する必要があり、BACKUP サーバーは IP を取得しません)。 interface eth0 # 仮想 IP が配置されている Docker ネットワーク カード デバイス virtual_router_id 51 # 仮想ルーティング識別子。MASTER と BACKUP の仮想ルーティング識別子は一致している必要があります。 0から255まで priority 100 # MASTER は BACKUP よりも高い重みを持ちます。数値が大きいほど、優先度が高くなります。advert_int 1 # MASTER ノードと BACKUP ノード間の同期チェックの時間間隔 (秒単位) は、マスターとバックアップ間で一貫している必要があります。authentication { # マスター スレーブ サーバー認証方法。マスターとスレーブは正常に通信するために同じパスワードを使用する必要があります。 auth_type PASS 認証パスワード 123456 } virtual_ipaddress { #仮想IP。複数の仮想IPアドレスを設定できます。1行につき172.18.0.201です。 } } Keepalived を起動する サービスkeepalived開始 起動に成功したら、ip a を使用して、ネットワーク カードの仮想 IP が成功しているかどうかを確認できます。また、ホスト マシンの仮想 IP 172.18.0.201 に正常に ping を実行できます。 仮想IPへの外部ネットワークアクセスの実装 現在の LAN IP 割り当てを表示します。 yum インストール nmap -y nmap -sP 192.168.1.0/24 ホストにKeepalivedをインストールする yum インストール keepalived ホストの Keepalived 構成は次のとおりです (/etc/keepalived/keepalived.conf)。 vrrp_インスタンス VI_1 { 状態マスター #これはホストのネットワーク カードです。ip a を使用して、コンピューターで現在使用されているネットワーク カードがどのインターフェイス ens33 であるかを確認できます。 仮想ルータID 100 優先度100 広告_int 1 認証 認証タイプ PASS 認証パスワード 1111 } 仮想IPアドレス{ #これは指定されたホスト マシン上の仮想 IP アドレスです。ホスト マシンのネットワーク カードと同じネットワーク セグメント内にある必要があります。 #ホストネットワークカードのIPは192.168.63.144なので、指定された仮想IPは160です 192.168.63.160 } } #データソースを監視するためのポートを受け入れます。Webページの入り口ではvirtual_server 192.168.63.160 8888 {を使用します。 遅延ループ 3 lb_algo rr lb_kind NAT 持続タイムアウト 50 プロトコル TCP #受信したデータをdockerサービスのネットワークセグメントとポートに転送します。dockerサービスに送信するため、データはdockerサービスデータと一致している必要があります real_server 172.18.0.201 8888 { 重量 1 } } #データベースデータポートを受け入れます。ホストデータベースポートは 3306 なので、これもホストデータ受け入れポートと一致している必要があります。virtual_server 192.168.63.160 3306 { 遅延ループ 3 lb_algo rr lb_kind NAT 持続タイムアウト 50 プロトコル TCP #同様に、サービスに転送されるデータベースのポートとIPアドレスは、dockerサービスreal_server 172.18.0.201 3306 {のデータと一致している必要があります。 重量 1 } } Keepalivedサービスを開始する サービスkeepalived開始 #サービスキープアライブステータス #サービスキープアライブ停止 その後、他のコンピューターは、仮想 IP 192.168.63.160 のポート 8888 と 3306 を介して、ホスト Docker 内の対応するポート 172.18.0.201 にアクセスできるようになります。 PXC クラスターを一時停止する方法 vi /etc/sysctl.conf #ファイルにnet.ipv4.ip_forward=1を追加します。systemctl restart network 次に仮想マシンをサスペンドします ホットバックアップデータ コールドバックアップ
ホットバックアップ ホットバックアップは、システムの実行中にデータをバックアップすることです。 MySQLの一般的なホットバックアップソリューションには、LVMとXtraBackupがあります。
エクストラバックアップ XtraBackup は、InnoDB に基づくオンライン ホット バックアップ ツールです。オープン ソースで無料であり、オンライン ホット バックアップをサポートし、ディスク領域をほとんど占有せず、MySQL データベースを非常に迅速にバックアップおよび復元できます。
完全バックアップと増分バックアップ
PXC フルバックアップ バックアップは PXC ノードのコンテナ内で実行する必要がありますが、バックアップ データはホスト マシンに保存する必要があります。そこでディレクトリ マッピング テクノロジが使用されます。まず新しい Docker ボリュームを作成します。 docker ボリュームバックアップの作成 PXCノードnode1を選択し、そのコンテナを停止して削除し、バックアップディレクトリマッピングを追加したnode1コンテナを再作成します。 docker 停止ノード1 docker rm node1 # データベースデータは Docker ボリューム v1 に保存され、失われません # パラメータの変更: # 1. -e CLUSTER_JOIN=node2;元々、他のノードは node1 を介してクラスターに参加していました。これで node1 が再作成されたので、クラスターに参加する別のノードを選択する必要があります。# 2. -v backup:/data;Docker ボリュームのバックアップをコンテナーの /data ディレクトリにマップします。docker run -d -u root -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node2 -v v1:/var/lib/mysql -v backup:/data --network=net1 --ip 172.18.0.2 --name=node1 pxc node1コンテナに docker exec -it node1 bash apt-getアップデート apt-get で percona-xtrabackup-24 をインストールします その後、次のコマンドを実行して完全バックアップを実行できます。バックアップされたデータは mkdir /data/backup mkdir /data/backup/full #非推奨、古い innobackupex --backup -u root -p abc123456 --target-dir=/data/backup/full xtrabackup --backup -uroot -pabc123456 --target-dir=/data/backup/full 公式ドキュメントでは、 PXC 完全復元 データベースはホットバックアップできますが、ホットリストアすることはできません。ホットリストアすると、ビジネスデータと復元されたデータの間に競合が発生します。 PXC クラスターの場合、復元プロセス中にノード間でデータ同期の競合が発生しないようにするために、まず元のクラスターを解散し、ノードを削除する必要があります。次に、空のデータベースを使用して新しいノードを作成し、復元を実行して、最後に他のクラスター ノードを確立します。 復元する前に、ホット バックアップに保存されたコミットされていないトランザクションをロールバックし、復元後に MySQL を再起動する必要があります。 PXCクラスタ内のすべてのノードを停止して削除します docker stop ノード1 ノード2 ノード3 ノード4 ノード5 docker rm ノード1 ノード2 ノード3 ノード4 ノード5 docker ボリューム rm v1 v2 v3 v4 v5 前の手順に従って、node1コンテナを再作成し、コンテナに入り、コールドリストアを実行します。 # ボリュームを作成する docker volume create v1 # コンテナを作成します docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --name=node1 --network=net1 --ip 172.18.0.2 pxc # コンテナにルートとして入る docker exec -it -uroot node1 bash # データを削除 rm -rf /var/lib/mysql/* # 準備フェーズ xtrabackup --prepare --target-dir=/data/backup/full/ # コールドリストアを実行する xtrabackup --copy-back --target-dir=/data/backup/full/ # 復元されたデータベースファイルの所有者を変更する chown -R mysql:mysql /var/lib/mysql # コンテナを終了したら、コンテナを再起動します。docker stop node1 docker ノード1を起動します これで、MySQL クラスタの Docker デプロイメントの実装に関するこの記事は終了です。MySQL クラスタの Docker デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明
はじめに: インターフェイス デザイナーの Joshua Porter が自身のブログでこの記事を公...
序文この記事では、DDCTF の 5 番目の質問、つまり不明なフィールド名をバイパスする手法を紹介し...
MySQL 5.7.17 のインストールと設定方法の概要最初のステップは、MySQL公式サイトから...
目次1. ハッシュテーブルの原理2. ハッシュテーブルの概念3. ハッシュ競合問題1. チェーンアド...
目次成果を達成する転がり荷重知識備蓄コンポーネントのパッケージ1. コンポーネントの命名2. 小道具...
ページ ヘッダーの固定レイアウトは、以前は position:fixed を使用して実装されていまし...
序文この記事では、Docker を使用して、ローカル コンピューターにインストールされている開発スイ...
親ファイル React をインポートし、{useState} を 'react' か...
npm インストールチュートリアル: 1. Node.jsインストールパッケージをダウンロードする公...
レイアウトにul>liを使用した単一行レイアウトを以下に示します。 <ul class=...
MySQL 8.0.3がリリースされます。新機能を見てみましょうMySQL 8.0.3 は RC ...
背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...
bitronix を使用して MySQL に接続するときの MySQLSyntaxErrorExce...
テーブルがコンパクトになりすぎないように、テーブル内のセル間に一定の距離を設定できます。基本的な構文...
目次質問伸ばす問題を解決する要約する質問プロジェクトの要件に従って、以下の州地図で個々の都市を(異な...