質問するログイン新規登録
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

1回答

315閲覧

ラズパイとVPSの間でマルチレプリケーションをしたい

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2024/09/20 08:48

編集2024/09/20 11:19

0

0

実現したいこと

Raspberry Pi 3B+を使用していて、
・HDMIでディスプレイと接続
・microSDカードを挿入
・USBでキーボードとマウスを接続
・microBでコンセントと接続し、電源を供給している状態です。

Raspberry PiにはMariadbでデータベースを作成し、その中にテーブルを作成しました。

また、さくらVPSでubuntuを契約していて、PCのターミナルでSSH接続して作業しています。

VPSとラズパイの間で、DBを同期させ合いたいので、マルチマスターレプリケーションをしたいです。

発生している問題・分からないこと

設定ファイルの編集や、ユーザーの作成は完了しているのですが、スレーブのステータスに「Can’t connect to server on ‘IPアドレス’ (110 “Connection timed out”)」というエラーメッセージが表示されてしまいます。

telnetコマンドでスレーブからマスターのポートに接続しようと試みると、タイムアウトになってしまうので、この辺りが原因だと考えています。

参考になるURLなど、解決策をご存知の方がいっしゃいましたらよろしくお願い致します。

エラーメッセージ

error

1Connecting to master 2「Can’t connect to server on ‘'IPアドレス’ (110 “Connection timed out”)」

該当のソースコード

MySQL

1//以下、ChatGPTの指示を示します 2マルチマスターレプリケーションでは、両方のサーバーがそれぞれマスターとスレーブの役割を果たします。MariaDBの設定ファイル(/etc/mysql/mariadb.conf.d/50-server.cnf)を編集します。 3 4VPS(マスター側)の設定: 5 6以下の設定をVPSのMariaDB設定ファイルに追加、または修正します。 7 8[mysqld] 9server-id=1 # VPSのサーバーID 10log_bin=mysql-bin 11binlog_format=row 12 13Raspberry Pi(スレーブ側)の設定: 14 15Raspberry Pi側もほぼ同じ設定ですが、サーバーIDを異なる番号にします。 16 17[mysqld] 18server-id=2 # Raspberry PiのサーバーID 19log_bin=mysql-bin 20binlog_format=row 21 22設定を保存して、MariaDBを再起動します。 23 24sudo systemctl restart mariadb 25 263. レプリケーションユーザーの作成 27 28両方のMariaDBサーバーで、レプリケーション用のユーザーを作成します。VPS側で次のコマンドを実行します。 29 30CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; 31GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; 32FLUSH PRIVILEGES; 33 34Raspberry Pi側でも同様のユーザーを作成します。 35 364. マスターのバイナリログ情報の確認 37 38マスター(VPS)側で、現在のバイナリログの位置を確認します。 39 40SHOW MASTER STATUS; 41 42このコマンドにより、以下の情報が表示されます。 43 44+------------------+----------+--------------+------------------+ 45| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 46+------------------+----------+--------------+------------------+ 47| mysql-bin.000001 | 154 | | | 48+------------------+----------+--------------+------------------+ 49 50このFileとPositionの値を控えておきます(例では mysql-bin.000001 と 154)。 51 525. スレーブの設定 53 54Raspberry Pi(スレーブ)側で、VPSをマスターとして指定し、レプリケーションを開始します。 55 56CHANGE MASTER TO 57MASTER_HOST='VPSのIPアドレス', 58MASTER_USER='repl_user', 59MASTER_PASSWORD='password', 60MASTER_LOG_FILE='mysql-bin.000001', # 先ほど確認したFileの値 61MASTER_LOG_POS=154; # 先ほど確認したPositionの値 62 63START SLAVE; 64 65その後、スレーブの状態を確認します。 66 67SHOW SLAVE STATUS\G; 68 69このコマンドで表示される情報に、Slave_IO_Running と Slave_SQL_Running が Yes であれば、正常にスレーブが動作していることを示しています。 70 716. 逆方向の設定(Raspberry Pi → VPS) 72 73マルチマスターレプリケーションの場合、Raspberry PiからVPSへも同様の設定を行います。Raspberry Pi側でマスターとしての情報を確認し(SHOW MASTER STATUS;)、その情報を元にVPS側でスレーブ設定を行います。 74 75CHANGE MASTER TO 76MASTER_HOST='Raspberry PiのIPアドレス', 77MASTER_USER='repl_user', 78MASTER_PASSWORD='password', 79MASTER_LOG_FILE='mysql-bin.000001', # Piのバイナリログファイル 80MASTER_LOG_POS=154; # Piのバイナリログの位置 81 82START SLAVE; 83 84同様に、SHOW SLAVE STATUS\G; コマンドで、Slave_IO_Running と Slave_SQL_Running が Yes であることを確認します。

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ChatGPTに相談しましたが、
・マスター側のファイヤーウォールの設定の確認
・MariaDBの設定がbind-address = 0.0.0.0になっているかの確認
マスターへのネットワーク接続の確認

以上の3つの解決策が提示されました。最後のひとつだけエラーがあったので、そちらが原因だと思われるのですが、そのエラーを解決策を聞いても具体案が帰ってこなかったため、こちらに質問した次第です。

補足

もっと詳しく説明すべきポイントがございましたらコメントお願いいたします。

アドバイスありがとうございます。追記です。

・ラズパイとVPSの両方で、必要なポート(3306)が開いていることは確認済みです
・ラズパイのIPアドレスは172.16.〜で、ローカルIPアドレスです
・ラズパイからVPSへの接続について、pingは正常に応答していますが、telnetで3306番ポートへの接続はタイムアウトしてしまいます
・ラズパイとVPSを操作しているPCは、基本的に同じネットワーク内にあることを想定しています

以上の点については確認済みです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2024/09/20 09:28 編集

ポートは開いているかとかいろいろ確認は必要ですが、そもそもラズパイ側とVPS側のネットワークはどのように繋っているのしょうか? 設定に'Raspberry PiのIPアドレス'というのがありますが、これは何を設定していますか?
AbeTakashi

2024/09/20 09:41

TakaiYさんとほほ同じですが、VPS側からラズパイへの接続、そして逆方向の接続が問題なくできているのでしょうか? とくにVPS側からラズパイ側への接続はラズパイがどこにあるかによっても変わりますが、回線やルーターの条件や設定がかなりシビアです。その辺はクリアされてますでしょうか? 質問文内にその手の情報がないのが気になりましたので、まずはその辺を質問部内に記載されることをオススメします。
bsdfan

2024/09/20 10:48

インターネット経由でのレプリケーションでしたら、セキュリティについても気にしたほうがいいと思います。
退会済みユーザー

退会済みユーザー

2024/09/20 11:01

コメントありがとうございます。知識不足によりわかりにくい質問になってしまい、申し訳ないです。 ・ラズパイとVPSの両方で、必要なポート(3306)が開いていることは確認済みです ・ラズパイのIPアドレスは172.16.〜で、ローカルIPアドレスです ・ラズパイからVPSへの接続について、pingは正常に応答していますが、telnetで3306番ポートへの接続はタイムアウトしてしまいます ・ラズパイとVPSを操作しているPCは、基本的に同じネットワーク内にあることを想定しています 以上の点については確認済みです。
TakaiY

2024/09/20 11:09

ここは質問へのコメントを書くところなので、回答は質問を編集して追記/修正などしたほうがいいでしょう。
guest

回答1

0

設定に'Raspberry PiのIPアドレス'というのがありますが、これは何を設定していますか?

172.16.〜で、ローカルIPアドレス
これは、ラズパイのあるローカルネットワークのアドレスですので、VPCのDBからはアクセスできません。

ラズパイからVPSへの接続について、pingは正常に応答しています
ラズパイとVPSを操作しているPCは、基本的に同じネットワーク内にある
これは、そのローカルのネットワークがなんからの方法(ISPなど経由で)でインターネットにつながっていてVPSがグローバルのIPを提供してくれているからでしょう。


両方のネットワークにあるDBを相互に接続するのであれば、ネットワークをつなぐ必要があります。

投稿2024/09/20 11:22

TakaiY

総合スコア14545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問