データベース · 4 min read · Sep 26, 2025
Debian 11に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は、データベースサーバーの高可用性を確保し、線形スケーラビリティを提供し、ダウンタイムやデータ損失を防ぎます。
このチュートリアルでは、Debian 11サーバー上でPercona XtraDB Cluster(PXC)を介してMySQLクラスタをインストールおよび設定します。複数のDebianサーバーにオープンソースのMySQLクラスタソリューションであるPercona XtraDB Clusterをインストールし、その後、複数のMySQLサーバー間でレプリケーションを有効にするためにMySQLクラスタを設定します。
前提条件
このチュートリアルを完了するには、Debian 11を実行している2台以上のサーバーが必要です。また、すべてのサーバーでsudo/root管理者権限を持つ非rootユーザーが必要です。
この例では、次の詳細を持つ3台のDebian 11サーバーを使用します:
ホスト名 IPアドレス
--------------------------
pxc01 192.168.5.15
pxc02 192.168.5.16
pxc03 192.168.5.17すべてのサーバーが準備できたら、Percona XtraDB Clusterのインストールを開始できます。
ホストとファイアウォールの設定
まず、各サーバーの/etc/hostsファイルを設定して、すべてのホスト名が適切なIPアドレスに解決されるようにし、その後、Percona XtraDB Clusterが使用するいくつかのポートを開くためにファイアウォールを設定する必要があります。これはすべてのサーバーで行う必要があります。
以下は、ファイアウォールで開く必要があるPercona XtraDB Clusterのポートの詳細です。
ポート 使用目的
---------------------------
3306 MySQLクライアント接続およびSST(状態スナップショット転送)
4444 Percona XtraBackup経由のSST
4567 書き込みセットレプリケーショントラフィック(TCP経由)およびマルチキャストレプリケーション(TCPおよびUDP経由)
4568 IST(増分状態転送)まず、次のnanoエディタを使用して設定ファイル’/etc/hosts’を開きます。
sudo nano /etc/hostsファイルに次の行を追加し、IPアドレスとホスト名の詳細を環境に合わせて変更してください。
192.168.5.15 pxc01
192.168.5.16 pxc02
192.168.5.17 pxc03完了したら、ファイルを保存して終了します。
次に、以下の’apt install’コマンドを入力してufwファイアウォールパッケージをインストールします。プロンプトが表示されたら、yを入力して確認し、ENTERを押して続行します。
sudo apt install ufw
ufwがインストールされたら、次のufwコマンドを実行してOpenSSHサービスを追加します。これにより、サーバーからロックアウトされないようになります。カスタムSSHポートがある場合は、’OpenSSH’パラメータをSSHポートに変更できます。
sudo ufw allow OpenSSH次に、以下のufwコマンドを入力して、Percona XtraDB Clusterが使用するいくつかのポートを開きます。内部IPアドレスのサブネットを現在の環境に合わせて変更してください。
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 3306
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 4444
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 4567
sudo ufw allow from 192.168.5.1/24 proto udp to any port 4567
sudo ufw allow from 192.168.5.1/24 proto tcp to any port 4568
その後、’ufw enable’コマンドを入力してufwファイアウォールを実行および有効にします。プロンプトが表示されたら、yを入力して確認し、ENTERを押して続行します。出力’ファイアウォールはアクティブで、システム起動時に有効’というメッセージが表示され、ufwファイアウォールが実行中であり、システム起動時に自動的に開始されることを確認します。
sudo ufw enable最後に、次のコマンドを使用してufwファイアウォールの状態を確認します。
sudo ufw status次のような出力が得られるはずです。

Percona XtraDB Clusterのインストール
このセクションでは、Debianベースのディストリビューション用のPercona XtraDBリポジトリを追加して設定します。次に、すべてのサーバーにPercona XtraDBをインストールします。
また、インストール中にMySQLのrootパスワードを設定し、Percona XtraDB Clusterのデフォルトの認証プラグインを設定するように求められます。最後に、設定したMySQLのrootユーザーとパスワードを使用してMySQLシェルにログインして、Percona XtraDB Clusterのインストールを確認します。
まず、以下のaptコマンドを入力して基本的な依存関係をインストールします。プロンプトが表示されたらyを入力してENTERを押して続行します。
sudo apt install wget gnupg2 lsb-release curl -y
次に、以下のwgetコマンドを使用してPercona XtraDBリポジトリパッケージをダウンロードします。ダウンロードが完了したら、以下の’ dpkg -i ‘コマンドを使用してインストールします。
wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
次に、Debianパッケージインデックスを更新およびリフレッシュし、’ percona-release ‘コマンドを実行してPercona XtraDB Clusterリポジトリを設定します。この例では、MySQLサーバーv8.0に相当するPercona XtraDB Clusterパッケージv8.0を有効にします。
sudo apt update
sudo percona-release setup pxc80リポジトリを更新します。

Percona XtraDB Cluster v8.0リポジトリを有効にします。

リポジトリが有効になったら、’ apt install’ コマンドを入力して、システムに ‘ percona-xtradb-cluster’ パッケージをインストールします。インストールを確認するためにyを入力し、ENTERを押して続行します。
sudo apt install percona-xtradb-cluster
Percona XtraDB Clusterのインストール中に、MySQLのrootパスワードを設定するように求められます。
新しい強力なパスワードを入力し、OKを選択します。

パスワードを繰り返し入力し、再度OKを選択します。
デフォルトのMySQL認証プラグインとして、’ 強力なパスワード暗号化を使用する(推奨) ‘オプションを選択し、OKを選択します。

これでPercona XtraDB Clusterがインストールされ、自動的に開始および有効になります。
Percona XtraDB Clusterがインストールされたら、次のコマンドを入力してMySQLサービスの状態を確認します。
sudo systemctl is-enabled mysql
sudo systemctl status mysql出力’ enabled ‘は、MySQLサーバーが有効であり、システム起動時に自動的に開始されることを確認します。また、出力’ active (running) ‘は、MySQLサーバーが実行中であることを確認します。

MySQLのrootパスワードを確認するには、以下の’ mysql ‘コマンドを使用してMySQLシェルにログインします。パスワードを求められたら、MySQLのrootパスワードを入力します。
sudo mysql -u root -p成功すると、MySQLシェルに入ります。

MySQLサーバーの詳細な状態を確認するには、次のクエリを入力します。
sudo systemctl status mysql次のような出力が得られるはずです - MySQL 8.0 Percona XtraDB Clusterにログインしました。

この時点で、システムの/etc/hostsファイルを設定し、ufwファイアウォールをインストールおよび設定し、すべてのサーバーにPercona XtraDB Cluster MySQL 8.0をインストールしました。Percona XtraDB Clusterの設定を開始する準備が整いました。
Percona XtraDB Clusterサービスの停止
Percona XtraDB Clusterの設定を開始する前に、MySQLサーバーが停止していることを確認する必要があります。
次のsystemctlコマンドユーティリティを入力して、サーバー上のMySQLサーバーを停止します。その後、MySQLサーバーの状態を確認して、サービスが停止していることを確認します。
sudo systemctl stop mysql出力 ‘inactive (dead) ‘は、MySQLサーバーが停止していることを確認します。
これで、最初のノード’ pxc01 ‘のPercona XtraDB Clusterの初期化を開始できます。
SSL/TLS証明書のコピー
Percona XtraDB Clusterには、クライアント-サーバー接続とレプリケーショントラフィックの2種類のトラフィック暗号化があります。最新のPercona XtraDB Cluster v8.0では、すべてのレプリケーショントラフィックがデフォルトで有効になっており、セキュリティが強化されています。
Percona XtraDB Clusterのインストール中に、SSL/TLSはデータディレクトリ’ /var/lib/mysql’ に自動的に生成されます。次のコマンドを入力して、’ /var/lib/mysql’ ディレクトリ内のSL/TLS証明書のリストを確認します。
ls /var/lib/mysql/*.pemクライアント、サーバー、CAの3種類のSSL/TLS証明書が表示されるはずです。
Percona XtraDB Clusterを作成および設定するには、すべてのサーバーに同じCAおよびサーバー証明書が必要です。したがって、’ pxc01 ‘から’ pxc02 ‘および’ pxc03 ‘にデフォルトのCAおよびサーバー証明書をコピーする必要があります。
‘ pxc01 ‘サーバーで、作業ディレクトリを‘/var/lib/mysql’ディレクトリに移動します。
cd /var/lib/mysql次のscpコマンドを入力して、CAおよびサーバー証明書を’ pxc02 ‘および’ pxc03 ‘サーバーにコピーします。
scp server-key.pem server-cert.pem ca.pem root@pax02:/var/lib/mysql
scp server-key.pem server-cert.pem ca.pem root@pax03:/var/lib/mysql次のような出力が得られるはずです - ‘ pxc01 ‘から’ pxc02 ‘および’ pxc03 ‘サーバーにCAおよびサーバー証明書をコピーします。
SSL/TLS証明書がコピーされたので、Percona XtraDB Clusterを初期化できます。
最初のノードでのPercona XtraDB Clusterの初期化
このセクションでは、最初のノードサーバー’ pxc01 ‘からPercona XtraDB Clusterを初期化します。次の手順を’ pxc01 ‘サーバーで実行してください。
次のnanoエディタコマンドを使用してMySQL設定ファイル‘/etc/mysql/my.cnf’を開きます。
sudo nano /etc/mysql/my.cnfファイルに次の行を追加します。’ wsrep_cluster_address ‘の値をすべてのサーバーのIPアドレスに変更してください。また、’ wsrep_node_address ‘には、’ pxc01 ‘のIPアドレスを入力する必要があります。
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Galeraライブラリへのパス
wsrep_provider=/usr/lib/libgalera_smm.so
# クラスター接続URLにはpxc01、pxc02、pxc03のIPが含まれます
wsrep_cluster_address=gcomm://192.168.5.15,192.168.5.16,192.168.5.17
# Galeraが正しく機能するためには、binlog形式はROWである必要があります
binlog_format=ROW
# MyISAMストレージエンジンの使用は推奨されません
default_storage_engine=InnoDB
# このInnoDB自動インクリメントロックモードはGaleraの要件です
innodb_autoinc_lock_mode=2
# ノード1のアドレス
wsrep_node_address=192.168.5.15
# SSTメソッド
wsrep_sst_method=xtrabackup-v2
# クラスター名
wsrep_cluster_name=pxc_cluster
#pxc_strict_modeの許可される値: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
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完了したら、ファイル ‘/etc/mysql/my.cnf ‘を保存して閉じます。

次に、次のsystemctlコマンドを実行してPercona XtraDB Clusterをブートストラップおよび初期化します。
‘ mysql@bootstrap ‘は、Percona XtraDB Clusterを実行するために使用されるsystemdサービスであり、これは’ mysql ‘サービスとは異なります。Percona XtraDB ClusterでMySQLサーバーを構築する場合、最初のノードは’ mysql@bootstrap ‘サービスで実行する必要があります。
systemctl start [email protected]完了したら、次のmysqlコマンドを入力してMySQLシェルにログインします。MySQLサーバーのrootパスワードを入力します。
sudo mysql -u root -p次のMySQLクエリを入力して、クラスターが初期化されていることを確認します。
show status like 'wsrep%';次のような出力が得られるはずです - ‘ wsrep_cluster_size ‘セクションには値’ 1’が表示され、Percona XtraDB Clusterが1台のサーバーで初期化されていることを意味します。また、’ wsrep_incoming_address ‘セクションにはサーバーのIPアドレスが表示されます。最後に、ノードは同期状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

最初のノードが初期化されたので、2番目と3番目のノード’ pxc02 ‘と’ pxc03 ‘をPercona XtraDB Clusterに追加する準備が整いました。
ノード2およびノード3をクラスターに追加
新しいノードをPercona XtraDB Clusterに追加するのは、最初のノードの初期化と似ています。以下は、実行する必要がある簡単な手順です:
- MySQL設定ファイル ‘/etc/mysql/my.cnf’ を修正します。
- MySQLサーバーを起動します。
- MySQLシェルにログインし、Percona XtraDB Clusterを確認します。
では、’ pxc02 ‘と’ pxc03 ‘をPercona XtraDB Clusterに追加していきましょう。
ノードpxc02の追加
‘ pxc02 ‘サーバーにログインし、次のnanoエディタコマンドを使用してMySQL設定ファイル’ /etc/mysql/my.cnf’を開きます。
sudo nano /etc/mysql/my.cnfファイルに次の行を追加し、’ wsrep_cluster_address’ の値をすべてのサーバーのIPアドレスに変更してください。また、‘wsrep_node_address ‘には、’ pxc02 ‘のIPアドレスを入力する必要があります。
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Galeraライブラリへのパス
wsrep_provider=/usr/lib/libgalera_smm.so
# クラスター接続URLにはpxc01、pxc02、pxc03のIPが含まれます
wsrep_cluster_address=gcomm://192.168.5.15,192.168.5.16,192.168.5.17
# Galeraが正しく機能するためには、binlog形式はROWである必要があります
binlog_format=ROW
# MyISAMストレージエンジンの使用は推奨されません
default_storage_engine=InnoDB
# このInnoDB自動インクリメントロックモードはGaleraの要件です
innodb_autoinc_lock_mode=2
# ノード#2のアドレス
wsrep_node_address=192.168.5.16
# クラスター名
wsrep_cluster_name=pxc_cluster
# SSTメソッド
wsrep_sst_method=xtrabackup-v2
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完了したら、ファイル’ /etc/mysql/my.cnf ‘を保存して閉じます。

次に、次のsystemctlコマンドユーティリティを入力してMySQLサーバーを起動します。その後、MySQLサーバーの状態を確認して、実行中であることを確認します。
これにより、MySQLサービスが開始され、’ pxc01 ‘サーバーの初期化されたPercona XtraDB Clusterに参加します。
sudo systemctl start mysql
sudo systemctl status mysql
プロセスが成功したことを確認するには、MySQLシェルにログインする必要があります。以下のコマンドを入力して、rootユーザーとしてMySQLシェルにログインします。プロンプトが表示されたら、MySQLのrootパスワードを入力します。
sudo mysql -u root -pログインしたら、次のMySQLクエリを入力してPercona XtraDB Clusterの状態を確認します。
show status like 'wsrep%';次のような出力が得られるはずです - ‘ wsrep_cluster_size ‘セクションには値 ‘2’ が表示され、Percona XtraDB Clusterに2台のサーバーがあることを意味します。また、’ wsrep_incoming_address ‘セクションには、pxc01 と pxc02 のサーバーIPアドレスが表示されます。最後に、ノードは同期状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

これで、Percona XtraDB Clusterはノード/サーバーpxc01とpxc02の2台で実行されています。次に、pxc03サーバーに移動して、Percona XtraDB Clusterに追加します。
ノードpxc03の追加
‘ pxc03 ‘サーバーにログインし、次のnanoエディタコマンドを使用してMySQL設定ファイル’ /etc/mysql/my.cnf ‘を開きます。
sudo nano /etc/mysql/my.cnfファイルに次の行を追加し、’ wsrep_cluster_address ‘の値をすべてのサーバーのIPアドレスに変更してください。また、’ wsrep_node_address ‘には、’ pxc03 ‘のIPアドレスを入力する必要があります。
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Galeraライブラリへのパス
wsrep_provider=/usr/lib/libgalera_smm.so
# クラスター接続URLにはpxc01、pxc02、pxc03のIPが含まれます
wsrep_cluster_address=gcomm://192.168.5.15,192.168.5.16,192.168.5.17
# Galeraが正しく機能するためには、binlog形式はROWである必要があります
binlog_format=ROW
# MyISAMストレージエンジンの使用は推奨されません
default_storage_engine=InnoDB
# このInnoDB自動インクリメントロックモードはGaleraの要件です
innodb_autoinc_lock_mode=2
# ノード#2のアドレス
wsrep_node_address=192.168.5.17
# クラスター名
wsrep_cluster_name=pxc_cluster
# SSTメソッド
wsrep_sst_method=xtrabackup-v2
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完了したら、ファイル’ /etc/mysql/my.cnf ‘を保存して閉じます。

次に、次のsystemctlコマンドユーティリティを入力してMySQLサーバーを起動します。その後、MySQLサーバーの状態を確認して、実行中であることを確認します。
これにより、MySQLサービスが開始され、Percona XtraDB Clusterに参加します。
sudo systemctl start mysql
プロセスが成功したことを確認するには、MySQLシェルにログインする必要があります。以下のコマンドを入力して、rootユーザーとしてMySQLシェルにログインします。プロンプトが表示されたら、MySQLのrootパスワードを入力します。
sudo mysql -u root -pログインしたら、次のMySQLクエリを入力してPercona XtraDB Clusterの状態を確認します。
show status like 'wsrep%';次のような出力が得られるはずです - ‘ wsrep_cluster_size’ セクションには値 ‘3’ が表示され、Percona XtraDB Clusterに3台のサーバーがあることを意味します。また、’ wsrep_incoming_address ‘セクションには、pxc01、pxc02、およびpxc03のサーバーIPアドレスが表示されます。最後に、ノードは同期状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

これで、Percona XtraDB Clusterは3台のDebianサーバーpxc01、pxc02、pxc03で実行されています。これで、3台のDebian 11サーバーでのPercona XtraDB Clusterの展開が完了しました。次のステップでは、Percona XtraDB Clusterサーバー間のデータベースレプリケーションを確認します。
レプリケーションのテスト
‘ pxc02 ‘サーバーからMySQLシェルにログインし、新しいデータベース’ percona ‘を作成します。
sudo mysql -u root -p
CREATE DATABASE percona;次に、’ pxc03 ‘サーバーに移動し、MySQLのrootユーザーを介してMySQLシェルにログインし、’ pxc02 ‘サーバーから作成したデータベース’ percona ‘に切り替えます。
sudo mysql -u root -p
USE percona;成功すると、’データベースが変更されました’という出力が得られます。これにより、データベース’percona’がPercona XtraDB Clusterサーバー間でレプリケートされていることも確認されます。

次に、’ pxc03 ‘サーバーから新しいテーブル’ example ‘を作成するために次のMySQLクエリを実行します。
CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
次に、再度’ pxc01 ‘サーバーに移動し、次のクエリを実行して’ percona ‘データベースに新しいデータを挿入します。
INSERT INTO percona.example VALUES (1, 'pxc01');
INSERT INTO percona.example VALUES (2, 'pxc02');
INSERT INTO percona.example VALUES (3, 'pxc03');最後に、再度’ pxc02 ‘サーバーに戻り、次のクエリを実行して’ percona ‘データベースと’ example ‘テーブルからデータを取得します。
SELECT * FROM percona.example;次のような出力が得られるはずです - ‘ pxc02 ‘ Percona XtraDB Clusterでデータが利用可能です。これにより、Percona XtraDB Clusterサーバー間のレプリケーションが機能していることが確認され、Debian 11サーバーでのPercona XtraDB Clusterの展開も成功したことが確認されます。

結論
このチュートリアルでは、3台のDebian 11サーバーでPercona XtraDB Clusterをインストールおよび設定しました。Percona XtraDB Clusterを初期化し、2台のノード/サーバーをPercona XtraDB Clusterに追加しました。また、ufwファイアウォールを介してPercona XtraDB Clusterを保護しました。
さらに、SSL/TLS証明書を使用してすべてのサーバー間のトラフィックを暗号化することで、Percona XtraDB Clusterを保護しました。これは、デフォルトで有効になっているオプション’pxc-encrypt-cluster-traffic’によって実現されます。
これにより、学んだ手順を使用してPercona XtraDB Clusterにさらに多くのサーバーを追加し、高可用性と負荷分散を有効にすることができます。詳細については、Percona XtraDB Clusterの公式ドキュメントを参照してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。