1.MariaDBガレラクラスターの紹介
MariaDB Galera Clusterは、MariaDBデータベースのマルチマスタークラスターを同期するためのツールです。データに関しては、MariaDBおよびMySQLと完全に互換性があります。特性:
同期レプリケーション
アクティブ-アクティブマルチマスタートポロジロジック
データは、クラスター内の任意のノードに対して読み取りおよび書き込みが可能です
自動メンバーシップ制御、障害が発生したノードはクラスターから自動的に削除されます
自動ノード参加
行レベルに基づく真の並列レプリケーション
直接クライアント接続、ネイティブMySQLインターフェイス
2.環境への準備
2台の仮想マシンを準備し、それぞれCentOS7-1908(7.7)をインストールします。
サーバーA:193.168.12.9 db1
サーバーB:193.168.12.10 db2
2つの仮想マシンのファイアウォールをオフにします。
systemctl stop Firewalld systemctl disable Firewalld
2つの仮想マシンでselinuxを閉じます。
setenforce 0
/ etc / selinux / configを変更し、SELINUX = disabledを設定して、再起動後に有効になるようにします。
3. mariadb10.5をインストールします
デフォルトでは、centosのソースにはmariadb10.5が含まれていません。自分で構成する必要があります。/etc/yum.repo.d/mariadb.repoファイルを作成します。ここでの構成は、公式Webサイトよりも高速なAlibabaCloudミラーからダウンロードすることです。内容は以下の通りです。
[mariadb] name = MariaDB baseurl = https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64 pgpkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB pgpcheck = 0
KEYのダウンロードとインポート:
wget --no-check-certificate https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB / etc / pki / rpm-gpg / rpm --import / etc / pki / rpm-gpg / *
yumでインストール:
yum install -y MariaDB-server MariaDB-client
以前に他のソースを構成したことがあり、インストールが失敗した場合は、クリーンアップして再試行できます。
yumcleanメタデータ
2つのデータベースサーバーは同じ操作を実行します。
4.mariadbを構成します
mariadbを開始します。
systemctl start mariadb
初期化はオンデマンドで実行できます。
mysql_secure_installation
デフォルトでは、mariadbはrootにローカルでのログインのみを許可します。rootリモート管理権限を手動で作成する必要があります。新しいルートを作成するか、現在のルートを変更できます。新しいルートを作成する場合:
mysql -uroot -p use mysql create user root @ '%'は 'mariadb'で識別されます。 フラッシュ特権;
または、ルートを持つホストを変更します。
mysql -u root -p use mysql update user set host = '%' where user = 'admin' and host = 'localhost'; フラッシュ特権;
2つのデータベースサーバーは同じ操作を実行します。
5.クラスターをセットアップします
2つの独立したデータベースの準備ができたら、ガレラクラスターの形成を開始し、最初にmariadbサービスを停止します。
systemctl stop mariadb
mariadbの構成を変更します:/etc/my.cnf.d/server.cnf
【ガレラ] wsrep_on = ON wsrep_provider =は/ usr / lib64に/ガレラ-4 / libgalera_smm.so wsrep_cluster_address = gcomm://193.168.12.9,193.168.12.10 wsrep_cluster_name = rvsdb wsrep_node_name = DB1 wsrep_node_address = 193.168.12.9 binlog_format =行 default_storage_engine = InnoDBの innodb_autoinc_lock_mode = 2 wsrep_slave_threads = 1 innodb_flush_log_at_trx_commit = 0 bind-address = 0.0.0.0
wsrep_node_nameとwsrep_node_addressを除いて、2つのサーバーの構成の他の構成項目は同じです。
新しいクラスターを作成して、最初のノードを開始します。
guys_new_cluster
この時点で、mysqldプロセスがパラメーターを使用して開始され、ポート4567と3306で同時にリッスンしていることがわかります。
galera_new_clusterは1回だけ実行され、ノードは将来通常のサービスモードで再起動することに注意してください。
通常の方法で2番目のノードを開始します。
systemctl start mariadb
起動時にエラーが報告されなければ、おめでとうございます。クラスターの形成は完了です。公式の推奨事項は、少なくとも3つのノードをクラスター化することですが、2つでも機能しますが、スプリットブレインの問題が発生する可能性があります。
このとき、両当事者はそれぞれのmariadbにログインし、クラスターのステータスを確認します。同じcluster_status_uuidがあり、クラスターの数cluster_sizeも2、つまり2であることがわかります。
2台のコンピューターでそれぞれDDLまたはSQLステートメントを実行すると、両方が相互に同期されます。