データベース · 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

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

setup ufw

その後、’ufw enable’コマンドを入力してufwファイアウォールを実行および有効にします。プロンプトが表示されたら、yを入力して確認し、ENTERを押して続行します。出力’ファイアウォールはアクティブで、システム起動時に有効’というメッセージが表示され、ufwファイアウォールが実行中であり、システム起動時に自動的に開始されることを確認します。

sudo ufw enable

最後に、次のコマンドを使用してufwファイアウォールの状態を確認します。

sudo ufw status

次のような出力が得られるはずです。

verify ufw

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

install basic dependencies

次に、以下の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

add repo percona xtradb

次に、Debianパッケージインデックスを更新およびリフレッシュし、’ percona-release ‘コマンドを実行してPercona XtraDB Clusterリポジトリを設定します。この例では、MySQLサーバーv8.0に相当するPercona XtraDB Clusterパッケージv8.0を有効にします。

sudo apt update  
sudo percona-release setup pxc80

リポジトリを更新します。

refresh repo

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

enable percona 80

リポジトリが有効になったら、’ apt install’ コマンドを入力して、システムに ‘ percona-xtradb-cluster’ パッケージをインストールします。インストールを確認するためにyを入力し、ENTERを押して続行します。

sudo apt install percona-xtradb-cluster

install percona extradb

Percona XtraDB Clusterのインストール中に、MySQLのrootパスワードを設定するように求められます。

新しい強力なパスワードを入力し、OKを選択します。

setup password

パスワードを繰り返し入力し、再度OKを選択します。

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

setup password

これでPercona XtraDB Clusterがインストールされ、自動的に開始および有効になります。

Percona XtraDB Clusterがインストールされたら、次のコマンドを入力してMySQLサービスの状態を確認します。

sudo systemctl is-enabled mysql  
sudo systemctl status mysql

出力’ enabled ‘は、MySQLサーバーが有効であり、システム起動時に自動的に開始されることを確認します。また、出力’ active (running) ‘は、MySQLサーバーが実行中であることを確認します。

setup auth

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

sudo mysql -u root -p

成功すると、MySQLシェルに入ります。

login to mysql

MySQLサーバーの詳細な状態を確認するには、次のクエリを入力します。

sudo systemctl status mysql

次のような出力が得られるはずです - MySQL 8.0 Percona XtraDB Clusterにログインしました。

verify mysql

この時点で、システムの/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 ‘を保存して閉じます。

mysql confog pxc01

次に、次の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アドレスが表示されます。最後に、ノードは同期状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

cluster enabled

最初のノードが初期化されたので、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 ‘を保存して閉じます。

mysql cnf pxc02

次に、次のsystemctlコマンドユーティリティを入力してMySQLサーバーを起動します。その後、MySQLサーバーの状態を確認して、実行中であることを確認します。

これにより、MySQLサービスが開始され、’ pxc01 ‘サーバーの初期化されたPercona XtraDB Clusterに参加します。

sudo systemctl start mysql  
sudo systemctl status mysql

start and verify mysql pxc02

プロセスが成功したことを確認するには、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 ‘セクションには、pxc01pxc02 のサーバーIPアドレスが表示されます。最後に、ノードは同期状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

verify cluster pxc02

これで、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 ‘を保存して閉じます。

mysql conf px03

次に、次のsystemctlコマンドユーティリティを入力してMySQLサーバーを起動します。その後、MySQLサーバーの状態を確認して、実行中であることを確認します。

これにより、MySQLサービスが開始され、Percona XtraDB Clusterに参加します。

sudo systemctl start mysql

start verify pxc03

プロセスが成功したことを確認するには、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 ‘セクションには、pxc01pxc02、およびpxc03のサーバーIPアドレスが表示されます。最後に、ノードは同期状態にあり、完全に接続されており、書き込みセットレプリケーションの準備が整っています。

verify cluster status pxc03

これで、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サーバー間でレプリケートされていることも確認されます。

verify replication

次に、’ pxc03 ‘サーバーから新しいテーブル’ example ‘を作成するために次のMySQLクエリを実行します。

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

verify replication 2

次に、再度’ 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の展開も成功したことが確認されます。

verify replication pxc03

結論

このチュートリアルでは、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の公式ドキュメントを参照してください。

Share: X/Twitter LinkedIn

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

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