WL#10474: Defaults: Store Replication Metadata In InnoDB

Affects: Server-8.0   —   Status: Complete   —   Priority: Medium

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%)