WL#10474: Defaults: Store Replication Metadata In InnoDB
Affects: Server-8.0
—
Status: Complete
Rationale ---------------- Storing the information in InnoDB tables offers ACID guarantees and MVCC characteristics for binary log and replication channel related metadata. This is required for crash-safe replication and for reliable replication generally. We want the default behavior to prefer correctness and safety over raw performance, and this is one important example. We want crash-safe replication to be the default. For those willing to sacrifice correctness, consistency, or reliability for raw performance, the options to do that still exist. Again, we want to reverse the legacy MySQL tendency to favor performance to correctness, thus getting rid of many historical MySQL “gotchas”. Additional reasons are: 1. Storing the info in InnoDB tables is a requirement for Group Replication. 2. Storing the info in InnoDB tables is generally much more secure. Otherwise usernames and passwords are stored in plain text on disk in .info files 2A. When storing the info in InnoDB tables we can take advantage of existing TDE integration Server Changes: ---------------- master-info-repository = TABLE : causes mysql.slave_master_info to be used for storing replication channel metadata. relay-log-info-repository = TABLE : causes mysql.slave_relay_log_info to be used for storing relay log metadata. User Override ---------------- master-info-repository = FILE relay-log-info-repository = FILE Upgrade Story ---------------- There are no special upgrade considerations. Acceptance Criteria ---------------- 1. These settings should not cause any instability/failures in our automated tests. 2. These settings should not cause more than an average 5% regression in SysQA write perf tests.
Functional Requirements: ======================= FR1 : All tests in rpl suite must run successfully with master-info-repository = TABLE , relay-log-info-repository = TABLE and GTID_MODE=ON. FR2 : All tests in rpl suite must run successfully with master-info-repository = TABLE , relay-log-info-repository = TABLE and GTID_MODE=OFF. FR3 : All tests in rpl_gtid,rpl_nogtid suites must run successfully with master-info-repository = TABLE and relay-log-info-repository =TABLE. FR4 : All tests which include 'master-slave.inc'/ 'rpl_init.inc' in suites other than rpl must run successfully with master-info-repository = TABLE , relay-log-info-repository = TABLE and when GTID_MODE = ON. FR5 : All tests which include 'master-slave.inc'/'rpl_init.inc' in suites other than rpl must run successfully with master-info-repository = TABLE , relay-log-info-repository = TABLE and GTID_MODE = OFF. FR6 : All replication tests must run successfully with master-info-repository = TABLE , relay-log-info-repository = TABLE , slave-parallel-workers=4 and slave-parallel-type=LOGICAL_CLOCK/DATABASE. FR7 : All tests in gr suite must run successfully. FR8 : All replication JET tests must run successfully with master-info-repository = TABLE and relay-log-info-repository = TABLE. Non functional Requirements : ============================ NFR1 : There SHALL NOT be a significant performance degradation of slave. (No more than 5%)
Copyright (c) 2000, 2024, Oracle Corporation and/or its affiliates. All rights reserved.