MySQLのクラスタモードでのgalera-clusterのデプロイメントの詳細説明

MySQLのクラスタモードでのgalera-clusterのデプロイメントの詳細説明

1: galera-clusterの紹介

Galera Cluster は、Codership によって開発された無料のオープンソースの高可用性ソリューションです。公式 Web サイトは http://galeracluster.com です。 Galera Cluster は、Galera がインストールされた Mariadb クラスターです (この記事では Mariadb Garela クラスターのみを紹介します)。マルチマスター機能を搭載しており、マルチポイント書き込みをサポートします。 Galera Cluster の 3 つ以上のノードはピア関係にあります。各ノードは書き込みをサポートします。書き込まれたデータの一貫性と整合性はクラスター内で保証されます。この記事では、具体的な実装原理について簡単に紹介します。

公式の機能は次のとおりです。

  • 真のマルチマスター クラスター、アクティブ/アクティブ アーキテクチャ。
  • 同期レプリケーション、レプリケーション遅延なし。
  • マルチスレッドレプリケーション。
  • マスター/スレーブ切り替え操作はなく、仮想 IP を使用する必要もありません。
  • ホット バックアップ: 単一ノード障害はデータベース サービスに影響しません。
  • 自動ノード参加をサポートしており、データを手動でコピーする必要はありません。
  • InnoDB ストレージ エンジンをサポートします。
  • アプリケーションに対して透過的なネイティブ MySQL インターフェイス。
  • 読み取りと書き込みを分離する必要はありません。
  • 導入も使用も簡単です。

2. galera-clusterの仕組み

主な懸念事項はデータの一貫性です。 トランザクションはすべてのノードに適用することも、すべてのノードに適用しないこともできます。 したがって、正しく構成されている限り、データベースは同期された状態を維持します。
Galera レプリケーション プラグインは従来の MySQL レプリケーションとは異なり、マルチマスター書き込み競合、レプリケーション ラグ、マスターとスレーブの非同期など、複数の問題を解決できます。

3: MariaDBのgalera-clusterデプロイメント

3.1: システムソフトウェア環境の概要

システム: CentOS7.5x64

192.168.20.33 jiankong01.yl.com
192.168.20.34 jiankong02.yl.com
192.168.20.35 jiankong03.yl.com

ソフトウェア: mariadb-galera-cluster.zip

3.2: 時刻同期サーバーを構成する

flyfishホストはchronydタイムサーバーで設定されています

タイムサーバーは192.168.20.3です

方法がわからない場合は、ビッグ データ クラスター CDH をインストールするための flyfish のタイム サーバーの構成を参照してください。

インストールと設定の方法はここでは提供されません

3.3 mariadb-galeaf-clusterをインストールする

すべてのクラスターノードは以下を実行します。

yum 削除 -y mariadb-libs 

yum install -y unzip boost-devel lsof perl-DBI perl-Data-Dumper

MariaDB のバージョンが 10.0.37-centos73-x86_64-* であることを確認します。 

rpm -ivh MariaDB-Galera-10.0.37-centos73-x86_64-*

3.4 ノード構成ファイル

ノード 1: jiankong01.yl.com

/etc/my.cnf.d をコピーします

vim サーバー.conf
----
[mysqld]

#
# * Galera関連の設定
#
[ガレラ]
# 必須設定
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.20.33,192.168.20.34,192.168.20.35"
wsrep_cluster_name = 'mycluster'
wsrep_node_name = 'jiankong01.yl.com'
wsrep_node アドレス = '192.168.20.33'
binlog_format=行
デフォルトストレージエンジン=InnoDB
innodb_autoinc_lock_mode=2
バインドアドレス=0.0.0.0
#
# オプション設定
#wsrep_スレーブスレッド=1
----
ノード 2: jiankong02.yl.com

/etc/my.cnf.d/ をコピーします

vim サーバー.conf

----
[mysqld]

#
# * Galera関連の設定
#
[ガレラ]
# 必須設定
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.20.33,192.168.20.34,192.168.20.35"
wsrep_cluster_name = 'mycluster'
wsrep_node_name = 'jiankong02.yl.com'
wsrep_node アドレス = '192.168.20.34'
binlog_format=行
デフォルトストレージエンジン=InnoDB
innodb_autoinc_lock_mode=2
バインドアドレス=0.0.0.0
#
# オプション設定
#wsrep_スレーブスレッド=1
#innodb_flush_log_at_trx_commit=0
---
ノード 3: jiankong03.yl.com

/etc/my.cnf.d/ をコピーします
vim サーバー.conf
----
[mysqld]

#
# * Galera関連の設定
#
[ガレラ]
# 必須設定
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.20.33,192.168.20.34,192.168.20.35"
wsrep_cluster_name = 'mycluster'
wsrep_node_name = 'jiankong03.yl.com'
wsrep_node アドレス = '192.168.20.35'
binlog_format=行
デフォルトストレージエンジン=InnoDB
innodb_autoinc_lock_mode=2
バインドアドレス=0.0.0.0
#
# オプション設定
#wsrep_スレーブスレッド=1
#innodb_flush_log_at_trx_commit=0
----

3.4 クラスターを起動する

クラスター内の任意のノードで実行

サービス mysql 開始 --wsrep-new-cluster

ここではノード 3 を例に挙げます。

ノード 1 とノード 2 は次を実行します:

サービスmysql開始

3.5: データベースインスタンスを作成する

ノード 1:

mysql -uroot -pQingchun123.com

データベース nCalInfo を作成する

ノード2と3をチェック

mysql -uroot -pQingchun123.com

データベースを表示 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL PXC クラスターの構築方法
  • MySQL 高可用性クラスタの展開とフェイルオーバーの実装
  • MySQL 5.7 クラスタ構成手順
  • MySQLクラスタのDockerデプロイメントの実装
  • クラスタrpmを使用してMySQLをインストールするための詳細な手順
  • MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装
  • Docker を使用して MySQL 5.7 および 8.0 マスター スレーブ クラスターをデプロイする方法
  • Docker で MySQL クラスターを構築する方法の例
  • MySQL Cluster 基本導入チュートリアル
  • MySQLの高可用性と高パフォーマンスのクラスタを構築する方法

<<:  Vueデータ変更検出の基本的な実装の簡単な分析

>>:  VMware 仮想マシンのインストール Linux システムのグラフィック チュートリアル

推薦する

Linux でディスク IO を表示し、読み取りと書き込みで高い IO を占有するプロセスを見つけます。

背景 - オンラインアラートオンライン サーバーがアラームを発し、ディスク使用率 disk.util...

Mysql+JavaSwing に基づくスーパーマーケット商品管理システムの設計と実装

目次1. 機能紹介2. キーコード2.1 ホームページの機能2.2 製品情報を追加する2.3 データ...

MySQLが2つのテーブルを関連付ける際のエンコードの問題と解決策

Mysqlが2つのテーブルを関連付けると、次のエラーメッセージが生成されます:照合順序の不正な組み合...

MySQL コール初心者が犯しがちな 11 の間違いのまとめ

序文セキュリティ部門からSQLインジェクションやXSS攻撃の脆弱性などに関する警告メールを頻繁に受け...

eCharts でパーセンテージ付きの横棒グラフを実装する方法

目次サンプルコードレンダリングコード分​​析要約するサンプルコード var データ = [220, ...

jsはシンプルなショッピングカートモジュールを実装します

この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...

CSS3はアニメーション効果を実現するためにvar()とcalc()関数を使用する。

ナレッジポイントをプレビューします。アニメーションフレーム背景グラデーションvar() と calc...

MySQL で重複しない携帯電話番号テーブルをバッチ生成する方法のサンプルコード

序文多くの MySQL テスト シナリオでは、テスト用に一部のテスト データを手動で生成する必要があ...

Windows に MySQL 8.0.16 をインストールする手順とエラーの解決方法

1. はじめに: mysql8以降は、これまでよく使われていたバージョンと比べてかなり変更点が大きい...

IdeaでTomcatを起動したときに複数のリスナーが報告される問題を解決する

エラーのスクリーンショット例外が発生した場所が見つかりません。解決策: リソースディレクトリにlog...

Dockerコンテナのログ処理の詳細な説明

Docker には多くのログ プラグインがあります。デフォルトでは json-file を使用します...

CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...

中国語と英語のフォント名の比較表(FounderとArphicを含む)

CSS ファイルでは、フォント名が文字化けしていることがよくあります。これは、作成者が中国語フォン...

chkconfig および systemctl コマンドを使用して Linux サービスを有効または無効にする方法

これは Linux 管理者にとって重要な (そして素晴らしい) トピックなので、誰もが Linux ...

JavaScript ES6 分割演算子の理解と応用

目次序文脱構築記号の役割使い方分割割り当ての適用アプリケーションの簡単な紹介JSONデータを抽出する...