sourcetip

Update_rows_log_event::ha_update_row(-1) 뒤에 있는 Mysql 복제

fileupload 2023. 10. 10. 20:54
반응형

Update_rows_log_event::ha_update_row(-1) 뒤에 있는 Mysql 복제

mysql 5.6(센토스 6)을 실행하는 MASTER 서버에서 Mariadb 10.1.22(센토스 7)을 실행하는 슬레이브로 복제를 설정하기 위해 여기서 약간의 도움을 받았습니다.

지금 내 문제는 이것입니다. 정확한 mariadb 버전과 사양을 가진 다른 서버가 있지만 복제가 따라잡지 못하고 대신 증가하고 있다는 것입니다.

시작할 때 48000초 뒤에 있었고 몇 분 후에 46000으로 빠르게 떨어졌습니다.그 이후로 꾸준히 증가하고 있습니다.거의 48K초로 거슬러 올라가는 쓰기 ATM

Show full processlist;sql 스레드가 실행하는 데 최대 8초가 소요됨을 보여줍니다.Update_rows_log_event::ha_update_row(-1)모든 구글 검색에서 나는 그것이 무엇을 의미하는지 찾을 수 없는 백 투 백.

MariaDB [(none)]> show full processlist;
+-----+------------------+---------------------------------------+--------------+---------+------+------------------------------------------+-----------------------+----------+
| Id  | User             | Host                                  | db           | Command | Time | State                                    | Info                  | Progress |
+-----+------------------+---------------------------------------+--------------+---------+------+------------------------------------------+-----------------------+----------+
|   3 | system user      |                                       | NULL         | Connect | 3640 | Queueing master event to the relay log   | NULL                  |    0.000 |
|   2 | system user      |                                       | NULL         | Connect |    5 | Update_rows_log_event::ha_update_row(-1) | NULL                  |    0.000 |

그리고 간단한 것을 잡았습니다.UPDATE table SET timestamp = NOW() WHERE static_ip = 'a-valid-ip' AND process_id = '13217'테이블에 static_ip 열과 process_id 열이 PK로 표시되고 명령을 직접 실행하면 0.078초가 걸립니다.

/etc/my.cnf의 내용

[mysqld]
max_allowed_packet =  1G
max_connections = 600
thread_cache_size = 16
query_cache_size = 64M
tmp_table_size= 512M
max_heap_table_size= 512M
wait_timeout=60

#Innodb Settings
innodb_file_per_table=1
innodb_buffer_pool_size = 25G
innodb_log_file_size = 2048M
innodb_flush_log_at_trx_commit = 0
innodb_file_format = Barracuda
innodb_flush_neighbors = 0

#Log

log-error =/var/log/error.log
tmpdir = /dev/shm


#Replication SLAVE

server-id=6
slave-skip-errors=1062

my.cnf는 slave-id를 제외하고는 정상적으로 실행되는 서버와 동일합니다.

무슨 일이 일어나고 있는지에 대한 제안이나 도움이 있습니까?

감사해요.

mariadb에 있는 직원들의 도움으로 ha_update_rows는 관련이 없었고 느림의 원인은 기계의 이중 디스크 장애였습니다.

[root@ser3 ~]# dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k;
1024+0 records in
1024+0 records out
402653184 bytes (403 MB) copied, 43.1096 s, 9.3 MB/s

이것은 SSD 입니다.

언급URL : https://stackoverflow.com/questions/43256936/mysql-replication-falling-behind-update-rows-log-eventha-update-row-1

반응형