Bug #114570 Error running mysqldump with tables with big blobs on docker
Submitted: 8 Apr 2024 2:00 Modified: 8 Apr 2024 10:00
Reporter: Fernando Sosa Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: mysqldump Command-line Client Severity:S2 (Serious)
Version:8.0.35 OS:Debian
Assigned to: CPU Architecture:x86
Tags: mysqldump backup blob data tables

[8 Apr 2024 2:00] Fernando Sosa
Description:
I have a docker compose file with this configuration for mysql

  mysql:
    image: mysql:8.0.35
    container_name: mysql
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    restart: always
    ports:
      - "3306:3306"
    expose:
      - 3306
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
    volumes:
      - mysql-data:/var/lib/mysql
      - ./volumes/mysql/conf:/etc/mysql/conf.d
      - ./volumes/mysql/init:/docker-entrypoint-initdb.d
    healthcheck:
      test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
      start_period: 10s
      interval: 30s
      timeout: 30s
      retries: 15
    networks:
      - public-network

and another image that performs a mysqldump every night, 
there is a database with a big table that contains files called ApplicationData Content, when I try to do a dump for this database I'm getting this errors:

==> Dumping database: priolo_webapp
mysqldump: Error 2026: TLS/SSL error: unexpected eof while reading when dumping table `ApplicationFileContent` at row: 45
==> Dumping database: sigein_webapp
mysqldump: Got error: 2002: "Can't connect to server on 'mysql' (115)" when trying to connect
==> Dumping database: venoil_webapp
mysqldump: Got error: 2002: "Can't connect to server on 'mysql' (115)" when trying to connect
=> MySql Backup process finished at 2024-04-07 06:00:59

these are the mysql logs:

S[ w   -  | ?^  x  a    1  o   +   hZ^1#   (    @   @g   )  [ f]1S( e8c       ^  1 '     ^1    d     Jx    %M    " . (m 8(l   @ J      #M :  "  F   f    (      !=  ","  U  g     3   (@  /=   8" 1 (% 8(    @  k       -= qNS] r(  8i      c    +-   o^  A' Z8j  &D wd&F   ;
InnoDB: End of page dump
2024-04-07T22:02:09.296214Z 8 [ERROR] [MY-011899] [InnoDB] [FATAL] Unable to read page [page id: space=2784, page number=5653] into the buffer pool after 100 attempts. The most probable cause of this error may be that the table has been corrupted. Or, the table was compressed with with an algorithm that is not supported by this instance. If it is not a decompress failure, you can try to fix this problem by using innodb_force_recovery. Please see http://dev.mysql.com/doc/refman/8.0/en/ for more details. Aborting...
2024-04-07T22:02:09.296237Z 8 [ERROR] [MY-013183] [InnoDB] Assertion failure: buf0buf.cc:4054:ib::fatal triggered thread 140614552221440
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/8.0/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
2024-04-07T22:02:09Z UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=e3f5f5708a91d873f150de7f5a4fb28bbc5f4632
Thread pointer: 0x7fe2ec000fc0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7fe3606f6c10 thread_stack 0x100000
/usr/sbin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x41) [0x2133971]
/usr/sbin/mysqld(print_fatal_signal(int)+0x2a2) [0xfef532]
/usr/sbin/mysqld(my_server_abort()+0x75) [0xfef775]
/usr/sbin/mysqld(my_abort()+0xe) [0x212d80e]
/usr/sbin/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x309) [0x237e859]
/usr/sbin/mysqld(ib::fatal::~fatal()+0xcf) [0x238119f]
/usr/sbin/mysqld(Buf_fetch<Buf_fetch_normal>::read_page()+0x1b7) [0x23d8f77]
/usr/sbin/mysqld(Buf_fetch_normal::get(buf_block_t*&)+0x108) [0x23e3a58]
/usr/sbin/mysqld(Buf_fetch<Buf_fetch_normal>::single_page()+0x4e) [0x23e3b2e]
/usr/sbin/mysqld(buf_page_get_gen(page_id_t const&, page_size_t const&, unsigned long, buf_block_t*, Page_fetch, ut::Location, mtr_t*, bool)+0x1fa) [0x23e4a4a]
/usr/sbin/mysqld(lob::read(lob::ReadContext*, lob::ref_t, unsigned long, unsigned long, unsigned char*)+0x5fc) [0x255619c]
/usr/sbin/mysqld(lob::btr_copy_externally_stored_field_func(trx_t*, dict_index_t const*, unsigned long*, unsigned long*, unsigned char const*, page_size_t const&, unsigned long, mem_block_info_t*)+0x125) [0x21f1925]
/usr/sbin/mysqld(lob::btr_rec_copy_externally_stored_field_func(trx_t*, dict_index_t const*, unsigned char const*, unsigned long const*, page_size_t const&, unsigned long, unsigned long*, unsigned long*, mem_block_info_t*, bool)+0xcf) [0x21f1b6f]
/usr/sbin/mysqld() [0x22f528d]
/usr/sbin/mysqld(row_sel_store_mysql_rec(unsigned char*, row_prebuilt_t*, unsigned char const*, dtuple_t const*, bool, dict_index_t const*, dict_index_t const*, unsigned long const*, bool, lob::undo_vers_t*, mem_block_info_t*&)+0x2e8) [0x22f7808]
/usr/sbin/mysqld(row_search_mvcc(unsigned char*, page_cur_mode_t, row_prebuilt_t*, unsigned long, unsigned long)+0x2e59) [0x22feb49]
/usr/sbin/mysqld(ha_innobase::general_fetch(unsigned char*, unsigned int, unsigned int)+0x110) [0x2194070]
/usr/sbin/mysqld(handler::ha_rnd_next(unsigned char*)+0x66) [0x10fcd36]
/usr/sbin/mysqld(TableScanIterator::Read()+0x79) [0x1249dc9]
/usr/sbin/mysqld(Query_expression::ExecuteIteratorQuery(THD*)+0x2f0) [0xf59910]
/usr/sbin/mysqld(Query_expression::execute(THD*)+0x30) [0xf59c80]
/usr/sbin/mysqld(Sql_cmd_dml::execute(THD*)+0x1e4) [0xee3d14]
/usr/sbin/mysqld(mysql_execute_command(THD*, bool)+0xae7) [0xe7f9e7]
/usr/sbin/mysqld(dispatch_sql_command(THD*, Parser_state*)+0x51b) [0xe831db]
/usr/sbin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x2351) [0xe85b21]
/usr/sbin/mysqld(do_command(THD*)+0x15b) [0xe8669b]
/usr/sbin/mysqld() [0xfdf748]
/usr/sbin/mysqld() [0x2846ab4]
/lib64/libpthread.so.0(+0x81da) [0x7fe37a23a1da]
/lib64/libc.so.6(clone+0x43) [0x7fe3787e8e73]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7fe2ec202d70): SELECT /*!40001 SQL_NO_CACHE */ `Id`, `FileContent`, `ContentType`, `CreateDate`, `FileName`, `FileSize` FROM `ApplicationFileContent`
Connection ID (thread ID): 8
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
2024-04-07 22:02:15+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.35-1.el8 started.
2024-04-07 22:02:15+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2024-04-07 22:02:15+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.35-1.el8 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
2024-04-07T22:02:15.741321Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2024-04-07T22:02:15.742850Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
2024-04-07T22:02:15.742877Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.35) starting as process 1
2024-04-07T22:02:15.748296Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-04-07T22:02:17.078122Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.

How to repeat:
Add a table with a longblob column, add files bigger than 10M, try to do mysqldump of this table.
[8 Apr 2024 2:00] Fernando Sosa
Run it with the official docker image for mysql 8.0.35
[8 Apr 2024 10:00] MySQL Verification Team
Hi Mr. Sosa,

Thank you for your bug report.

However, let us inform you that this is a forum for fully repeatable test cases. We do not see such a test case in your report. Test case should consist of a set of SQL statements that will always lead to the error that you are getting.

The error that you are getting is that the tablespace is corrupted. That can happen due to the constraints of the docker environment, like running out of RAM or disk space.

Can't repeat.