MariaDB lusterの初期化時に発生するエラー「Failed to open backend connection: -98 (Address already in use)」の原因と解決策
MariaDB lusterの初期化時に発生するエラー「Failed to open backend connection: -98 (Address already in use)」の原因と解決策
概要
原因
このエラーが発生する主な原因は以下の2つです。
- 別のMariaDBインスタンスが同じポートを使用している
MariaDB lusterは、デフォルトで3306ポートを使用します。もし別のMariaDBインスタンスが既にこのポートを使用している場合、MariaDB lusterは起動できません。
- 別のアプリケーションが同じポートを使用している
MySQLやPercona Serverなど、他のデータベースソフトウェアも3306ポートを使用することがあります。また、Webサーバーやメールサーバーなど、データベース以外のアプリケーションもこのポートを使用している可能性があります。
解決策
このエラーを解決するには、以下の方法を試してください。
- MariaDB lusterの設定ファイルを変更する
MariaDB lusterの設定ファイル(/etc/my.cnf.d/mariadb-luster.cnf
)を開き、port
という項目の値を変更します。例えば、以下の様に変更します。
port = 3307
- 別のポートを使用しているプロセスを停止する
- ファイアウォールの設定を確認する
ファイアウォールがMariaDB lusterの使用するポートを許可していることを確認します。
- 使用しているオペレーティングシステム
- MariaDB lusterのバージョン
- エラーメッセージの詳細
日本語での解説
この解説は、以下の日本語の情報を参考にして作成しました。
[mysqld]
port = 3307
[client]
port = 3307
この設定ファイルでは、MariaDB lusterは3307ポートを使用するように設定されています。
以下のコードは、別のポートを使用しているプロセスを停止するための例です。
# Linuxの場合
sudo killall -9 mysqld
# macOSの場合
sudo killall -9 MySQL
# Windowsの場合
taskkill /F /IM mysqld.exe
このコマンドは、MySQLサーバーを強制終了します。
注意
上記のコードを実行する前に、必ずデータのバックアップを取ってください。
MariaDB lusterの初期化時に発生するエラー「Failed to open backend connection: -98 (Address already in use)」の解決策のその他の方法
MariaDB lusterを別のソケットファイルを使用するように設定する
socket = /tmp/mariadb-luster.sock
MariaDB lusterをsystemdサービスとして実行する
systemdサービスとしてMariaDB lusterを実行すると、ポート番号やソケットファイルの競合を回避することができます。
systemdサービスファイルを作成するには、以下のコマンドを実行します。
sudo systemctl edit mariadb-luster.service
以下の内容をサービスファイルに保存します。
[Unit]
Description=MariaDB Luster Service
[Service]
Type=forking
ExecStart=/usr/bin/mariadb-luster
PIDFile=/var/run/mariadb-luster.pid
Socket=/var/run/mariadb-luster.sock
[Install]
WantedBy=multi-user.target
サービスファイルを保存した後、以下のコマンドを実行してサービスを有効化します。
sudo systemctl enable mariadb-luster.service
最後に、以下のコマンドを実行してサービスを起動します。
sudo systemctl start mariadb-luster.service
Dockerを使用してMariaDB lusterを実行すると、ホストマシンの環境に影響を与えることなく、MariaDB lusterを起動することができます。
Dockerイメージをダウンロードするには、以下のコマンドを実行します。
docker pull mariadb/mariadb-luster
MariaDB lusterを起動するには、以下のコマンドを実行します。
docker run -d -p 3307:3306 mariadb/mariadb-luster
このコマンドは、MariaDB lusterを3307ポートで起動します。
クラウドサービスを使用する
Amazon RDSやGoogle Cloud SQLなどのクラウドサービスを使用すると、MariaDB lusterを簡単に起動して実行することができます。
クラウドサービスを使用する場合は、サービスプロバイダーのドキュメントを参照してください。
mariadb