Percona

xtrabackup apply-log 시 assertion failure 발생

MySQL 5.6.29, Percona xtrabackup 2.1.9

apply-log 시 마지막 단계에서 assertion failure 발생

로그//
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown…
2016-04-25 18:05:41 7f7fd164f700 InnoDB: Assertion failure in thread 140186950629120 in file buf0flu.cc line 2501
InnoDB: Failing assertion: UT_LIST_GET_LEN(buf_pool->flush_list) == 0
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
innobackupex: Error:
innobackupex: xtrabackup (2nd execution) failed at /usr/bin/innobackupex line 2572.

버그리포트//
https://bugs.launchpad.net/percona-xtrabackup/+bug/1368846
https://bugs.launchpad.net/percona-xtrabackup/+bug/1399873 (duplicated)

https://www.percona.com/doc/percona-xtrabackup/2.3/release-notes/2.2/2.2.10.html
현재 2.2, 2.3 버전에서 fix 릴리즈가 된 것으로 보이나 2.1 은 아님
Fixed Percona XtraBackup assertion caused by dirty pages remaining in the buffer pool after the log was fully applied. Bug fixed #1368846.

https://github.com/percona/percona-xtrabackup/pull/19
Looking at the stack trace I see pending IO complete (read)
operations which caused ibuf merge. This merge happened after
page_cleaner thread stopped, so there were no thread to flush dirty
pages from buffer pool. We should not allow page_cleaner to stop
when there are pending reads.
페이지클리너가 스탑된 상태에서 ibuf merge 발생시 버퍼풀에서 더티페이지 플러싱할 쓰레드가 없어서 에러, 펜딩된 읽기작업이 있을 때 페이지클리너를 스탑시키지 않게끔 하였음

결론은 .. 업데이트 해야할 때

Percona Xtrabackup 2.2 & 2.3 & 2.4

1. xtrabackup 2.4
MySQL 5.7과 Percona Server 5.7 기본 지원

2. xtrabackup 2.3
mysql 커맨드라인 옵션 가이드라인 형식을 따름
클라우드 업/다운로드용 xbcloud 바이너리추가, 다수 관련 옵션 추가
innobackupex 스크립트는 C로 재작성되어 xtrabackup의 symlink 로 세팅됨, 모든 기능들은 여전히 지원되나 innbackupex는 향후 제거될 예정
신규 피쳐들은 innodbackupex가 아닌 xtrabackup에 추가되겠으며 innbackupex 고유의 기능들은 xtrabackup에도 유지됨

3. xtrabackup 2.2
패키지명 percona-xtrabackup-22 로 변경 (percona-xtrabackup 은 2.3)
버전별로 분할되어있는 xtrabackup 바이너리 통합
백업 히스토리 DB기록 추가
시스템 zlib 라이브러리 사용
MariaDB GTID 지원
my.cnf 의 open_file_limit 획득
서버옵션을 my.cnf 가 아닌 show variables 을 통해 획득
백업 테이블스페이스 스캔시 lsn 외 더 상세한 로그 출력