WL#10479: Defaults: Enable Replication Chains
Affects: Server-8.0 — Status: Complete — Priority: Medium
Rationale ---------------- This option ensures correct behavior in various replication chain setups, which have become the norm today. This is also required for Group Replication. Server Changes: ---------------- log-slave-updates = ON : This causes a slave to log replicated events into its own binary log User Override ---------------- log-slave-updates = OFF : This will disable the setting and match 5.x behavior When user has explicitly passes skip-log-bin on the command line with this worklog, It generates a warning. "[Warning] You need to use --log-bin to make --log-slave-updates work." So we can use skip-log-slave-updates option with skip-log-bin to avoid this warning. Upgrade Story ---------------- There are no special upgrade considerations. Acceptance Criteria ---------------- 1. This setting should not cause any instability/failures in our automated tests. 2. This setting should not cause more than an average 10% regression in SysQA write perf tests (on slaves).
FR1. It must be possible to run all the rpl tests (Ex : rpl,rpl_gtid,rpl_nogtid etc) with log-slave-updates enabled and all the tests must pass. FR2. It must be possible to run all the binlog tests (Ex : binlog,binlog_gtid,binlog_nogtid etc) with log-slave-updates enabled and all the tests must pass. FR3. It must be possible to run the group_replication suite with log-slave-updates enabled and all the tests must pass. FR4. It must be possible to run all the topology (circular, chained, async, semisync, msr) mtr/jet tests with log-slave-updates enabled and all the tests must pass.(These tests are part of different rpl suites itself) FR5. It must be possible to run failover, crash mtr tests with log-slave-updates enabled and all the tests must pass.(These tests are part of different rpl suites itself) FR6. All the tests, apart from the FR5,FR6,FR7 should pass with log-slave-updates disabled also FR7. It must be possible to run all the group_replication and replication tests in JET with log-slave-updates enabled and all the tests must pass. FR8. All the cross version JET tests with log-slave-updates option enabled (ON) must pass Implied requirements: FR9. Tests that are failing by test case design that can be slightly redesigned or should be fixed to pass, irrespective of log-slave-updates being enabled or disabled. FR10. Tests that do not make sense to run with log-slave-updates enabled should be skipped for such runs. Non Functional Requirements : FR11. This setting should not cause more than an average 10% regression in SysQA write perf tests (on slaves).
There is no additional features need to implemented, on the mysql_test_run.pl script in order to fulfill this worklog requirements. So, the following needs to be done: 1. There is already a config file being used in rpl tests, "rpl_1slave_base.cnf". at mysql-test/suite/rpl directory, with the following [mysqld.2] options: "log-slave-updates" That means, by default in rpl tests log-slave-updates already enabled and the tests are running with log-slave-updates option enabled. This is the list of suites which should be run with log-slave-updates=ON (To have log-slave-updates working log-bin must be ON): --suite=rpl --suite=rpl_gtid --suite=rpl_nogtid --suite=binlog --suite=binlog_gtid --suite=binlog_nogtid --suite=group_replication The following section contains mention of some internal tests, please remove when publishing : --suite=i_rpl --suite=i_rpl_gtid --suite=i_rpl_largedata --suite=i_rpl_nogtid --suite=i_binlog --suite=i_binlog_gtid --suite=i_binlog_nogtid Apart from this, now due to this default option, all the other suites also will be running with log-slave-updates ON. So if there are any failures due to this option, that needs to be analyzed. Just have a look on the runs and analyse the failures and fix tests where applicable / report product bugs if it does not work as expected. 2. While in JET you can see the replication and group replications tests here. Test file => xml file ==================== ============================== com.sun.mysql.jet.testcases.replication -> com.sun.mysql.jet.tests.replication com.sun.mysql.jet.testcases.replication.wl9426 -> com.sun.mysql.jet.tests.replication.wl9426 All these jet tests must pass, with these log-slave-updates enabled. Already in most of the tests log-slave-updates are enabled, so the failures needs to be analysed if there is any, once the default option is changed. There is also one load replication test which will be executed by sys-qa. 3. All the cross version JET tests with log-slave-updates option enabled (ON) must pass and check the behavior with log-slave-updates(ON/OFF) across master and slave (Async/Semisynch). 4. All the topology tests in MTR and JET must pass with log-slave-updates enabled and check the need for new tests 4.1 circular 4.2 chain replication with different combinations 4.3 MSR 4.4 Async 4.5 Semi-Sync 5. Upgrade and Downgrades There must not be any impact. - For GR this is transparent. GR already requires log-slave-updates to be set, so no real change here; - For those with log-slave-updates, this will also be transparent,no real change here; - For those that do not set log-slave-updates, they will see changes being written to the binary log, if they do not explicitly turn it off. If they absolutely do not want events from the applier to be written to the binary log, then they must *explicitly* turn it off.. 6. Remove the log-slave-updates set explicitly in cnf files, since default value is going to be "ON". Items 1 to 2 of this HLS should be performed first using Hudson custom jobs. After finishing fixing and reporting issues, this worklog will be considered ready to be pushed. Hudson changes should be done only after pushing this worklog.
Copyright (c) 2000, 2019, Oracle Corporation and/or its affiliates. All rights reserved.