Bug #102706 Update group replication docs replication configuration requirements
Submitted: 23 Feb 2021 15:02 Modified: 13 Mar 2021 23:18
Reporter: Eduardo Ortega Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Documentation Severity:S3 (Non-critical)
Version:8.0.21, 8.0.23 OS:Any
Assigned to: CPU Architecture:Any

[23 Feb 2021 15:02] Eduardo Ortega
Description:
Hi:

group replication fails to start when slave_preserve_commit_order = 0 and slave_parallel_workers > 1. This is the error in the error log:

2021-02-23T14:50:07.755573Z 5092442 [Warning] [MY-011682] [Repl] Plugin group_replication reported: 'Group Replication requires slave-preserve-commit-order to be set to ON when using more than 1 applier threads.'

However, the docs don't seem to reflect this requirements, at least neither here:

https://dev.mysql.com/doc/refman/8.0/en/group-replication-configuring-instances.html

nor here:

https://dev.mysql.com/doc/refman/8.0/en/group-replication-limitations.html

How to repeat:
1. Create replication group.

2. stop group_replication  in a member

3. Set slave_preserve_commit_order=0 and slave_parallel_workers=10 on the member

4. start group_replication.

5. See error on the error log.

6. Profit :D

Suggested fix:
Update the docs to reflect the configuration requirement
[24 Feb 2021 13:45] MySQL Verification Team
Hello Eduardo,

Thank you for the report and feedback.
Verified as described.

regards,
Umesh
[24 Feb 2021 13:47] MySQL Verification Team
MySQL Server 8.0.23 test results

Attachment: 102706_8.0.23.results (application/octet-stream, text), 15.70 KiB.

[24 Feb 2021 13:48] MySQL Verification Team
Changing the category to Docs
[13 Mar 2021 23:18] Margaret Fisher
Posted by developer:
 
Thanks for the comment! It's actually noted in the Group Replication Requirements topic here, near where you were looking:
https://dev.mysql.com/doc/refman/8.0/en/group-replication-requirements.html

Multithreaded Appliers.  Group Replication members can be configured as multithreaded replicas, enabling transactions to be applied in parallel. A nonzero value for slave_parallel_workers enables the multithreaded applier on the member, and up to 1024 parallel applier threads can be specified. Setting slave_preserve_commit_order=1 ensures that the final commit of parallel transactions is in the same order as the original transactions, as required for Group Replication, which relies on consistency mechanisms built around the guarantee that all participating members receive and apply committed transactions in the same order. Finally, the setting slave_parallel_type=LOGICAL_CLOCK, which specifies the policy used to decide which transactions are allowed to execute in parallel on the replica, is required with slave_preserve_commit_order=1. Setting slave_parallel_workers=0 disables parallel execution and gives the replica a single applier thread and no coordinator thread. With that setting, the slave_parallel_type and slave_preserve_commit_order options have no effect and are ignored. 

- It's too low level to put in the Getting Started topic, but I'll reword to clarify that it is a requirement, as the wording is a little unclear.