maria db galera 노드의 다른 bin 로그 파일 인덱스

maria db galera 노드의 다른 bin 로그 파일 인덱스

설정:

Docker 컨테이너에서 실행되는 3개의 노드가 있는 Galera 클러스터. 모든 노드 앞에는 maxscale 프록시가 있습니다. 원격으로 클러스터가 마스터 역할을 하는 bin-log 복제로 실행되는 복제 슬레이브입니다(maxscale 프록시 뒤). 클러스터의 모든 노드에는 bin-log가 활성화되어 있고 log_slave_updates=ON. 슬레이브에 GTID가 구성되어 있지 않습니다.

문제

어떻게든 DB2(아래 참조)에는 또 다른 bin-log 파일 번호가 있습니다. 다른 두 서버 .000016대신 . .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 프록시가 일반적으로 dbs에 부하가 많지 않기 때문에 들어오는 모든 요청을 첫 번째 서버로 리디렉션한다는 것입니다. 그러나 이 특정 시간에 요청은 db-02로 리디렉션되어 data-master-bin.000015가 다른 두 서버와 다르기 때문에 오류가 발생했습니다. 슬레이브에서 실행할 수 있었고 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
...

저는 마리아 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

관련 정보