• Marko Mäkelä's avatar
    MDEV-11782: Redefine the innodb_encrypt_log format · 2af28a36
    Marko Mäkelä authored
    Write only one encryption key to the checkpoint page.
    Use 4 bytes of nonce. Encrypt more of each redo log block,
    only skipping the 4-byte field LOG_BLOCK_HDR_NO which the
    initialization vector is derived from.
    
    Issue notes, not warning messages for rewriting the redo log files.
    
    recv_recovery_from_checkpoint_finish(): Do not generate any redo log,
    because we must avoid that before rewriting the redo log files, or
    otherwise a crash during a redo log rewrite (removing or adding
    encryption) may end up making the database unrecoverable.
    Instead, do these tasks in innobase_start_or_create_for_mysql().
    
    Issue a firm "Missing MLOG_CHECKPOINT" error message. Remove some
    unreachable code and duplicated error messages for log corruption.
    
    LOG_HEADER_FORMAT_ENCRYPTED: A flag for identifying an encrypted redo
    log format.
    
    log_group_t::is_encrypted(), log_t::is_encrypted(): Determine
    if the redo log is in encrypted format.
    
    recv_find_max_checkpoint(): Interpret LOG_HEADER_FORMAT_ENCRYPTED.
    
    srv_prepare_to_delete_redo_log_files(): Display NOTE messages about
    adding or removing encryption. Do not issue warnings for redo log
    resizing any more.
    
    innobase_start_or_create_for_mysql(): Rebuild the redo logs also when
    the encryption changes.
    
    innodb_log_checksums_func_update(): Always use the CRC-32C checksum
    if innodb_encrypt_log. If needed, issue a warning
    that innodb_encrypt_log implies innodb_log_checksums.
    
    log_group_write_buf(): Compute the checksum on the encrypted
    block contents, so that transmission errors or incomplete blocks can be
    detected without decrypting.
    
    Rewrite most of the redo log encryption code. Only remember one
    encryption key at a time (but remember up to 5 when upgrading from the
    MariaDB 10.1 format.)
    2af28a36
innodb-32k.result 29 KB