データベース · 3 min read · Sep 26, 2025

Rocky Linux 9にPercona XtraDB Clusterをインストールする方法

Percona XtraDB Clusterは、MySQL用の完全なオープンソースのデータベースクラスタリングソリューションです。これにより、堅牢で高性能な高可用性のMySQLサーバー展開を作成できます。Percona XtraDB Clusterの最新バージョンは8.0で、MySQL Server Community Edition 8.0と完全に互換性があります。

Percona XtraDB Clusterは、同期レプリケーション、マルチソースレプリケーション、自動ノードプロビジョニング、自動SSL暗号化設定、最適化されたパフォーマンスなどの機能を提供します。

Percona XtraDB Clusterは、データベースサーバーの高可用性を確保し、リニアスケーラビリティを提供し、ダウンタイムとデータ損失を防ぎます。

このガイドでは、Rocky Linux 9サーバー上でPercona XtraDB Cluster(PXC)を介してMySQLクラスタを設定する方法を示します。複数のRocky LinuxシステムにPercona XtraDB Clusterをインストールし、サーバー間でデータベースレプリケーションを有効にするためにPercona XtraDB Clusterを設定し、次に1つのサーバーにデータを挿入し、別のサーバーからデータを確認して検証します。

前提条件

このガイドを完了するには、Rocky Linux 9を実行している2台以上のサーバーが必要です。また、すべてのサーバーでsudo/root管理者権限を持つ非rootユーザーも必要です。また、SELinuxは許可モードで実行されている必要があります。

この例では、使用される3台のRocky Linux 9サーバーがあります。以下はサーバーの詳細です:

Hostname       IP Address  
--------------------------  
pxc-rock01       192.168.5.80  
pxc-rock02       192.168.5.81  
pxc-rock03       192.168.5.82

すべての要件が整ったら、Percona XtraDB Clusterのインストールを開始できます。

/etc/hostsとFirewalldの設定

最初のステップでは、すべてのRocky Linuxサーバーで/etc/hostsファイルとfirewalldを設定します。/etc/hostsファイルを修正し、各サーバーのIPアドレスとホスト名の詳細を追加し、次にPercona XtraDB Clusterで使用されるいくつかのポートを追加します。

以下は、ファイアウォールで開く必要があるPercona XtraDB Clusterポートの詳細です。

Ports   Used for  
---------------------------  
3306    MySQLクライアント接続およびSST(状態スナップショット転送)  
4444    Percona XtraBackup経由のSST  
4567    書き込みセットレプリケーショントラフィック(TCP経由)およびマルチキャストレプリケーション(TCPおよびUDP経由)  
4568    IST(増分状態転送)

始めるには、次のnanoエディタコマンドを使用して’/etc/hosts’ファイルを開きます。

sudo nano /etc/hosts

クラスタで使用されるホスト名とIPアドレスの詳細を追加します。サーバー環境に合わせて詳細を変更してください。

192.168.5.80  pxc-rock01  
192.168.5.81  pxc-rock02  
192.168.5.82  pxc-rock03

完了したら、ファイルを保存して閉じます。

次に、以下の’firewall-cmd‘コマンドを入力して、内部ネットワークサブネットを信頼できるソースとして追加します。これにより、信頼できるネットワークのみがすべてのサーバーにアクセスできるようになります。

sudo firewall-cmd --permanent --add-source=192.168.5.0/24

次に、Percona XtraDB Cluster用のいくつかのポートを開き、firewalldを再読み込みして変更を適用します。出力’success‘は、新しいルールがfirewalldに追加されたことを確認します。

sudo firewall-cmd --add-port={3306/tcp,4444/tcp,4567/tcp,4567/udp,4568/tcp} --permanent  
sudo firewall-cmd --reload

最後に、以下の’firewall-cmd’コマンドを入力して、firewalldで有効なルールのリストを確認します。

sudo firewall-cmd --list-all

以下の出力がターミナルシェルに表示されます。Percona XtraDB Clusterで使用されるすべてのポートがリストされていることを確認してください。

setup hostname and firewalld

/etc/hostsファイルとfirewalldが設定されたので、次にPercona XtraDB Clusterパッケージをインストールします。

Percona XtraDB Clusterのインストール

このセクションでは、すべてのRocky LinuxサーバーにPercona XtraDB Clusterをインストールします。Percona XtraDBリポジトリを設定し、次にPercona XtraDB Clusterパッケージをインストールします。また、最後にすべてのサーバーでMySQLのデフォルトのrootパスワードを変更します。

最初に、EPELリポジトリを追加して有効にする必要があります。以下の’dnf install’コマンドを入力してEPELリポジトリを追加します。

sudo dnf install epel-release

次に、以下のコマンドを入力してPerconaリリースアプリケーションをインストールします。プロンプトが表示されたらyを入力し、ENTERを押して続行します。このパッケージは、Perconaリポジトリを管理するために使用できるコマンドラインツール’percona-release‘を提供します。

sudo dnf install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y

add percona repo

次に、以下の’percona-release‘コマンドを実行して、Percona XtraDB Clusterリポジトリv8.0を有効にします。このプロセス中に、デフォルトのMySQLリポジトリを無効にするように求められますので、yを入力して確認し、ENTERを押して続行します。

sudo percona-release setup pxc-80

出力メッセージ’All done!‘は、操作が成功したことを確認します。

enable percona xtradb repo

以下の’dnf repolist’コマンドを入力して、有効なリポジトリのリストを確認します。出力に’pxc-80-release’リポジトリが有効になっていることが表示され、’prel-release’や’tools-release’などの追加のリポジトリも表示されるはずです。

sudo dnf repolist

list repos

次に、以下の‘dnf install’コマンドを入力して、Percona XtraDB Clusterパッケージをインストールします。確認のためにプロンプトが表示されたらyを入力し、ENTERを押して続行します。

sudo dnf install percona-xtradb-cluster

install percona xtradb cluster

Percona GPGキーを受け入れるように求められたら、yを入力してENTERを押して確認します。

accept gpg key

Percona XtraDB Clusterがインストールされたら、以下のsystemctlコマンドユーティリティを入力してMySQLサービスを開始し、有効にします。

sudo systemctl start mysql  
sudo systemctl enable mysql

次に、以下のコマンドを使用してMySQLサービスのステータスを確認します。出力’active (running)‘は、MySQLが実行中であることを確認します。また、出力‘..; enabled..’は、MySQLがシステム起動時に自動的に開始されることを確認します。

sudo systemctl status mysql

verify mysql service

Percona XtraDB Clusterが実行されているので、すべてのMySQLサーバーのデフォルトのrootパスワードを変更します。

以下のコマンドを入力して、MySQL rootユーザーのデフォルト生成パスワードを確認します。デフォルトのMySQL rootパスワードをコピーします。

sudo grep 'temporary password' /var/log/mysqld.log

次に、以下の’mysql‘コマンドを介してMySQLシェルにログインします。パスワードのプロンプトが表示されたら、コピーしたデフォルトのMySQLパスワードを貼り付けます。

sudo mysql -u root -p

ログインすると、次のようなプロンプト’mysql>‘を持つMySQLシェルが表示されます。

login to mysql shell

以下のMySQLクエリを入力して、MySQL rootユーザーのデフォルトパスワードを変更し、終了します。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewP4ssr00tMySQL';  
quit

change default mysql root password

最後に、Percona XtraDB Clusterを構成する前に、MySQLサービスを停止する必要があります。以下の’systemctl’コマンドユーティリティを入力して、すべてのサーバーでMySQLサービスを停止します。

sudo systemctl stop mysql

Percona XtraDB Clusterがインストールされ、MySQL root構成が完了し、MySQLサービスが停止したので、クラスタを構成して設定する準備が整いました。

SSL/TLS証明書のコピー

Percona XtraDB Cluster 8.0以降、クラスタ内のサーバー間のデフォルト接続は暗号化される必要があります。サーバー間の暗号化を設定するには、すべてのサーバーに同じSSL/TLS証明書が必要です。

このセクションでは、‘pxc-rock01‘サーバーから’pxc-rock02‘および’pxc-rock03‘サーバーにデフォルト生成されたSSL/TLS証明書をコピーします。

pxc-rock01‘サーバーで、以下のコマンドを入力して利用可能な証明書を確認します。これにより、証明書ファイル’server-cert.pem‘、’server-key.pem‘、および’ca.pem‘をpxc-rock02およびpxc-rock03サーバーにコピーする必要があります。

ls /var/lib/mysql/*.pem

作業ディレクトリを’/var/lib/mysql‘に移動します。

cd /var/lib/mysql

次に、以下のscpコマンドを入力して、SSL/TLS証明書ファイルをpxc-rock02およびpxc-rock03サーバーにコピーします。

scp server-key.pem server-cert.pem ca.pem root@pxc-rock02:/var/lib/mysql  
scp server-key.pem server-cert.pem ca.pem root@pxc-rock03:/var/lib/mysql

以下は、pxc-rock01からpxc-rock02サーバーへのSSL/TLS証明書のコピー処理中の出力です。

copy certs pxc-rock02

以下は、pxc-rock01からpxc-rock03サーバーへのSSL/TLS証明書のコピー処理中の出力です。

pxc-rock01でのPercona XtraDB Clusterの初期化

最初に、pxc-rock01サーバーからPercona XtraDB Clusterを初期化します。これを達成するには、MySQLサーバーの設定ファイル’/etc/my.cnf‘を修正し、次に’mysql@bootstrap‘サービスを開始する必要があります。

以下のnanoエディタコマンドを使用してMySQL設定ファイル‘/etc/my.cnf’を開きます。

sudo nano /etc/my.cnf

Percona XtraDB ClusterサーバーのIPアドレスのリストを’wsrep_cluster_address‘パラメータに追加し、’default_storage_engine=InnoDB‘パラメータを追加します。

# クラスタ接続URLにはpxc-rock01、pxc-rock02、pxc-rock03のIPが含まれます  
wsrep_cluster_address=gcomm://192.168.5.80,192.168.5.81,192.168.5.82  
  
# MyISAMストレージエンジンの使用は推奨されません。  
default_storage_engine=InnoDB

wsrep engine default storage engine

wsrep_node_address‘を現在のサーバーIPアドレスに、’wsrep_node_name‘をシステムホスト名に、’wsrep_cluster_name‘をクラスタの名前に変更します。

# ノード1のアドレス  
wsrep_node_address=192.168.5.80  
# ノード名  
wsrep_node_name=pxc-rock01  
  
# クラスタ名  
wsrep_cluster_name=pxc-cluster

node name address and cluster name

最後に、行の下部に次の設定を追加して、Percona XtraDB Clusterサーバー間の安全なSSL/TLS接続とSST接続を有効にします。

# ssl/tls接続を有効にする  
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"  
  
[sst]  
encrypt=4  
ssl-key=server-key.pem  
ssl-ca=ca.pem  
ssl-cert=server-cert.pem

完了したら、ファイルを保存して閉じます。

次に、以下のsystemctlコマンドユーティリティを入力して、’mysql@bootstrap‘サービスを開始し、最初のPercona XtraDB Clusterサーバーを初期化します。

systemctl start [email protected]

Percona XtraDB Clusterの初期化が成功したことを確認するために、MySQLシェルにログインし、’wsrep%‘ステータスを確認する必要があります。

以下の’mysql’コマンドを入力して、’root‘ユーザーとしてMySQLサーバーにログインします。プロンプトが表示されたら、新しいMySQL rootパスワードを入力します。

sudo mysql -u root -p

ログイン後、以下のクエリを入力して’wsrep%‘ステータスの詳細を確認します。

SHOW STATUS LIKE 'wsrep%';

次のような出力が得られます - ‘wsrep_cluster_size’セクションには値’1‘が表示され、Percona XtraDB Clusterが1台のサーバーで初期化されていることを意味します。また、’wsrep_incoming_address’セクションにはサーバーIPアドレスが表示されます。最後に、ノードはSynced状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

verify percona xtradb cluster

これにより、最初のPercona XtraDB Clusterサーバー’pxc-rock01‘が初期化されました。次のステップでは、’pxc-rock02‘および’pxc-rock03‘サーバーをクラスタに追加します。

pxc-rock02サーバーをPercona XtraDB Clusterに追加

最初のPercona XtraDB Clusterが初期化された後、pxc-rock02サーバーをクラスタに追加します。Percona XtraDB Clusterにサーバーを追加する方法は、初期化プロセスと似ており、デフォルトのMySQLサーバー設定ファイル’/etc/my.cnf’を修正し、クラスタのサーバーのリストを定義し、次にMySQLサービスを通常通り開始する必要があります。

以下のnanoエディタコマンドを入力して、MySQL設定ファイル’/etc/my.cnf‘を開きます。

sudo nano /etc/my.cnf

Percona XtraDB ClusterサーバーのIPアドレスのリストを’wsrep_cluster_address‘パラメータに追加し、’default_storage_engine=InnoDB‘パラメータを追加します。

# クラスタ接続URLにはpxc-rock01、pxc-rock02、pxc-rock03のIPが含まれます  
wsrep_cluster_address=gcomm://192.168.5.80,192.168.5.81,192.168.5.82  
  
# MyISAMストレージエンジンの使用は推奨されません。  
default_storage_engine=InnoDB

wsrep address and default db engine

wsrep_node_address‘を現在のサーバーIPアドレスに、’wsrep_node_name‘をシステムホスト名に、’wsrep_cluster_name‘をクラスタの名前に変更します。

# ノード#2のアドレス  
wsrep_node_address=192.168.5.81  
# ノード名  
wsrep_node_name=pxc-rock02  
  
# クラスタ名  
wsrep_cluster_name=pxc-cluster

node name node address and cluster name

最後に、行の下部に次の設定を追加して、Percona XtraDB Clusterサーバー間の安全なSSL/TLS接続とSST接続を有効にします。

# ssl/tls接続を有効にする  
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"  
  
[sst]  
encrypt=4  
ssl-key=server-key.pem  
ssl-ca=ca.pem  
ssl-cert=server-cert.pem

完了したら、ファイルを保存して閉じます。

次に、以下のsystemctlコマンドユーティリティを入力してMySQLサービスを開始します。これにより、’pxc-rock02‘サーバーが初期化されたPercona XtraDB Clusterに参加します。

sudo systemctl start mysql

最後に、pxc-rock02サーバーがPercona XtraDB Clusterに追加されたことを確認するために、以下のコマンドを使用してrootユーザーとしてMySQLシェルにログインします。プロンプトが表示されたら、MySQL rootパスワードを入力します。

sudo mysql -u root -p

次に、以下のクエリを入力して’wsrep%‘ステータスの詳細を確認します。

SHOW STATUS LIKE 'wsrep%';

次のような出力が得られます - ‘wsrep_cluster_size’セクションには値’2‘が表示され、Percona XtraDB Clusterに2台のサーバーがあることを意味します。また、’wsrep_incoming_address’セクションには、pxc-rock01およびpxc-rock02サーバーのIPアドレスが表示されます。最後に、ノードはSynced状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

verofy pxc cluster

pxc-rock03サーバーをPercona XtraDB Clusterに追加

このセクションでは、3台目のサーバーpxc-rock03をPercona XtraDB Clusterに追加します。

以下のnanoエディタコマンドを使用して、設定ファイル‘/etc/my.cnf‘を開きます。

sudo nano /etc/my.cnf

Percona XtraDB ClusterサーバーのIPアドレスのリストを’wsrep_cluster_address‘パラメータに追加し、’default_storage_engine=InnoDB‘パラメータを追加します。

# クラスタ接続URLにはpxc-rock01、pxc-rock02、pxc-rock03のIPが含まれます  
wsrep_cluster_address=gcomm://192.168.5.80,192.168.5.81,192.168.5.82  
  
# MyISAMストレージエンジンの使用は推奨されません。  
default_storage_engine=InnoDB

wsrep address and default storage engine

wsrep_node_address’を現在のサーバーIPアドレスに、’wsrep_node_name‘をシステムホスト名に、’wsrep_cluster_name‘をクラスタの名前に変更します。

# ノード#3のアドレス  
wsrep_node_address=192.168.5.82  
# ノード名  
wsrep_node_name=pxc-rock02  
  
# クラスタ名  
wsrep_cluster_name=pxc-cluster

node name and name cluster and ip address

最後に、行の下部に次の設定を追加して、Percona XtraDB Clusterサーバー間の安全なSSL/TLS接続とSST接続を有効にします。

# ssl/tls接続を有効にする  
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"  
  
[sst]  
encrypt=4  
ssl-key=server-key.pem  
ssl-ca=ca.pem  
ssl-cert=server-cert.pem

完了したら、ファイルを保存して閉じます。

次に、以下のsystemctlコマンドユーティリティを入力してMySQLサービスを開始し、現在のサーバーpxc-rock03をPercona XtraDB Clusterに参加させます。

sudo systemctl start mysql

最後に、以下のmysqlコマンドを入力してMySQLシェルにログインし、’wsrep%‘ステータスを確認します。プロンプトが表示されたら、MySQL rootパスワードを入力します。

sudo mysql -u root -p

次に、以下のクエリを入力して’wsrep%‘ステータスの詳細を確認します。

SHOW STATUS LIKE 'wsrep%';

次のような出力が得られます - ‘wsrep_cluster_size’セクションには値’3‘が表示され、Percona XtraDB Clusterに3台のサーバーがあることを意味します。また、’wsrep_incoming_address’セクションには、pxc-rock01pxc-rock02、およびpxc-rock03サーバーのIPアドレスが表示されます。最後に、ノードはSynced状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

verify cluster pxc-roc03

これで、3台の異なるRocky Linux 9サーバーでPercona XtraDB Clusterが構成されました。これにより、Percona XtraDB Cluster上のサーバー間でデータベースレプリケーションが機能するはずです。次のステップでは、複数のサーバー間でのデータベースのレプリケーションを確認します。

データベースレプリケーションのテスト

このセクションでは、Percona XtraDB Clusterでのデータベースレプリケーションを確認します。これにより、インストールが成功し、完了したことが確認されます。

最初に、pxc-rock02サーバーからMySQLシェルにログインし、’testdb‘という新しいデータベースを作成します。

sudo mysql -u root -p  
CREATE DATABASE testdb;

create database pxc-rock02

次に、pxc-rock03サーバーに移動し、rootユーザーを介してMySQLシェルに接続し、デフォルトの作業データベースを’testdb‘に変更します。

sudo mysql -u root -p  
USE testdb;

以下のクエリを入力して、’table1‘という新しいテーブルを作成します。

CREATE TABLE table1 (node_id INT PRIMARY KEY, node_name VARCHAR(30));

create table pxc-rock03

次に、pxc-rock01サーバーに移動し、MySQLシェルにログインして、以下の’INSERT‘クエリを介してデータベース’testdb‘に新しいデータを挿入します。

sudo mysql -u root -p
INSERT INTO testdb.table1 VALUES (1, 'pxc-rock01');  
INSERT INTO testdb.table1 VALUES (2, 'pxc-rock02');  
INSERT INTO testdb.table1 VALUES (3, 'pxc-rock03');

insert data

データが追加されたら、pxc-rock02サーバーに戻り、以下のSELECTクエリを入力して、データベース’testdb‘およびテーブル’table1‘のすべての利用可能なデータを取得します。

SELECT * FROM testdb.table1;

レプリケーションが成功していれば、pxc-rock02サーバーに挿入したデータが表示されるはずです。データはPercona XtraDB Clusterのすべてのサーバーに保存されます。

check data

これにより、Rocky Linux 9サーバーにPercona XtraDB Clusterをインストールすることが成功したことが確認されました。

結論

このガイドでは、3台のRocky Linux 9サーバーにPercona XtraDB Clusterをインストールおよび展開しました。Percona XtraDB Clusterをインストールする方法、firewalldを介して展開を保護する方法、クラスタを初期化する方法、ノードをクラスタに追加する方法を学びました。

さらに、すべてのサーバー間のトラフィックをSSL/TLS証明書を使用して暗号化し、Percona XtraDB Cluster 8.0でデフォルトで有効になっているオプション’pxc-encrypt-cluster-traffic’を使用して、Percona XtraDB Clusterのインストールを保護しました。

これにより、pxc-rock02およびpxc-rock03サーバーを追加する際に学んだ手順を使用して、現在のPercona XtraDB Clusterにさらにサーバーを追加できます。また、ProxySQLやHAPROXYなどのサードパーティアプリケーションを使用して、負荷分散と高可用性を設定することもできます。詳細については、Percona XtraDB Clusterの公式ドキュメントを参照してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。