maria db galera ノード上の異なる bin ログ ファイル インデックス

maria db galera ノード上の異なる bin ログ ファイル インデックス

設定:

Docker コンテナで 3 つのノードが実行される Galera クラスター。各ノードの前には、maxscale プロキシがあります。リモートでは、bin-log レプリケーションで実行されるレプリケーション スレーブがあり、クラスターはマスターとして機能します (maxscale プロキシの背後)。クラスター内のすべてのノードで bin-log が有効になっており、log_slave_updates=ONスレーブでは GTID は構成されていません。

問題

どういうわけか、DB2 (下記参照)には、他の 2 つのサーバー.000016とは別の bin-log ファイル番号があります.000015。興味深いことに、それらは同じ位置にあり、作成時間も同じでファイル サイズもまったく同じなので、内容は同じであると想定しています (ただし、md5sum は異なるチェックサムを示します)。

ある時点で、スレーブは次のログと同期しなくなりました。

2022-06-08  0:27:20 9 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'data-master-bin.000015' at position 3374796
2022-06-08  0:28:20 9 [ERROR] Slave I/O: error reconnecting to master '[email protected]:some_port' - retry-time: 60  maximum-retries: 86400  message: Can't connect to MySQL server on 'url.to.server' (110 "Connection timed out"), Internal MariaDB error code: 2003
2022-06-08  0:29:20 9 [Note] Slave: connected to master '[email protected]:some_port',replication resumed in log 'data-master-bin.000015' at position 3374796
2022-06-08  0:29:20 9 [ERROR] Error reading packet from server: binlog truncated in the middle of event; consider out of disk space on master; the first event 'data-master-bin.000015' at 3374796, the last event read from 'data-master-bin.000015' at 3374796, the last byte read from 'data-master-bin.000015' at 3374815. (server_errno=1236)
2022-06-08  0:29:20 9 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'data-master-bin.000015' at 3374796, the last event read from 'data-master-bin.000015' at 3374796, the last byte read from 'data-master-bin.000015' at 3374815.', Internal MariaDB error code: 1236
2022-06-08  0:29:20 9 [Note] Slave I/O thread exiting, read up to log 'data-master-bin.000015', position 3374796

ある時点で接続がなかったかどうかは、正確にはわかりません。私の推測では、maxscale プロキシは通常、データベースにほとんど負荷がかからないため、すべての受信リクエストを最初のサーバーにリダイレクトします。ただし、この特定の時間にリクエストは db-02 にリダイレクトされ、data-master-bin.000015 が他の 2 つのサーバーと異なるため、エラーが発生しました。START SLAVEスレーブで実行でき、レプリケーションは再び稼働していますが、maxscale が db-02 に再びリダイレクトするとすぐに壊れるのではないかと心配しています。

私の質問は次のとおりです:

  • bin-log ファイル インデックスの増加を引き起こす原因は何ですか?
  • 3 つのクラスター ノードで bin-log ファイルを同期状態に戻すにはどうすればよいですか?

構成:

各ノード上の db-server .cnf:

[mysqld]
log_bin
server_id=1
log_slave_updates=ON
log-basename=data-master
#Configure GTID
wsrep_gtid_mode=ON
wsrep_gtid_domain_id=1

各サーバー上のプロキシ .cnf

[Read-Only-Service]
type=service
router=readconnroute
servers=db-01, db-02, db-03
user=maxscale
password=******
router_options=synced

[Replication-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=/*some-port*/
ssl=required
ssl_cert=/path/to/server-cert.pem
ssl_key=/path/to/server-key.pem
ssl_ca_cert=/path/to/ca-cert.pem

DB1

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| data-master-bin.000015 |  3534812 |              |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

ls -alc --fu /var/lib/mysql    
...
       413 2021-12-02 10:06:08.187023308 +0000 data-master-bin.000009
       387 2021-12-02 10:09:23.020291420 +0000 data-master-bin.000010
   8883991 2022-03-02 16:53:11.689571461 +0000 data-master-bin.000011
   1260112 2022-03-10 13:10:08.730056029 +0000 data-master-bin.000012
       466 2022-03-10 13:10:29.106313267 +0000 data-master-bin.000013
   5967037 2022-04-27 16:41:46.021414396 +0000 data-master-bin.000014
   3672324 2022-06-13 22:03:54.919102767 +0000 data-master-bin.000015
       175 2022-04-27 16:42:46.150317967 +0000 data-master-bin.index
...

DB2

MariaDB [(none)]> show master status;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| data-master-bin.000016 |  3534812 |              |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

ls -alc --fu /var/lib/mysql    
...
       413 2022-03-10 13:10:34.036661850 +0000 data-master-bin.000014
   5966988 2022-04-27 16:44:37.871084681 +0000 data-master-bin.000015
   3672324 2022-06-13 22:03:54.935182267 +0000 data-master-bin.000016
        75 2022-04-27 16:45:21.228903025 +0000 data-master-bin.index
...

DB3

MariaDB [(none)]> SHOW Master status;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| data-master-bin.000015 |  3534812 |              |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

ls -alc --fu /var/lib/mysql
...
       413 2022-03-10 13:10:12.637403075 +0000 data-master-bin.000013
   5966988 2022-04-27 16:46:33.269169792 +0000 data-master-bin.000014
   3672324 2022-06-13 22:03:54.929455002 +0000 data-master-bin.000015
        75 2022-04-28 00:37:55.597345308 +0000 data-master-bin.index
...

私はMaria DB 10.4を使用しています

答え1

サーバーを のみに設定することで、この問題を軽減しましたdb-01。これにより、bin ログは同じになります。この問題を処理するには、もっと良い方法があるはずです。

[Read-Only-Service]
type=service
router=readconnroute
servers=db-01
user=maxscale
password=******
router_options=synced

[Replication-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=/*some-port*/
ssl=required
ssl_cert=/path/to/server-cert.pem
ssl_key=/path/to/server-key.pem
ssl_ca_cert=/path/to/ca-cert.pem

関連情報