Details

    Description

      Galera Cluster version 3, has strict inconsistency policy: all transaction replication errors cause emergency abort for all nodes detecting the inconsistency.

      Galera Cluster 4 has more sophisticated inconsistency strategy where cluster runs inconsistency voting protocol and optimizes the way cluster reacts to detected inconsistency. With consistency voting, Galera Cluster can mitigate the harm of inconsistency for the cluster. In the best case, only one node has to abort, and majority can continue operating normally However, if the database has been inconsistent, for indefinitely long period, and application business logic may have been hurt

      Attachments

        Issue Links

          Activity

            seppo Seppo Jaakola added a comment -

            Inconsistency voting is complete in MySQL version, and has been fully integrated in MariaDB 10.4 candidate tree. However, no buildbot testing for this feature has yet been carried out. The related tests are in galera_ee and galera_3_nodes_ee suites.

            seppo Seppo Jaakola added a comment - Inconsistency voting is complete in MySQL version, and has been fully integrated in MariaDB 10.4 candidate tree. However, no buildbot testing for this feature has yet been carried out. The related tests are in galera_ee and galera_3_nodes_ee suites.

            Yurchenko Yes, we want PR against 10.5

            jplindst Jan Lindström (Inactive) added a comment - Yurchenko Yes, we want PR against 10.5

            High-level decsription.

            • For transactions:
              • if applying slave writeset fails (apply callback), error description is passed back to provider and it initiates voting in the group. All nodes report which result they got for a given action, and if there is a simple majority about a given result, then this result wins and the nodes that have a different result gracefully quit the group. If there is no majority then success wins. If there is no node with success result, then some other node wins.
            • For TOI operations (DDLs):
              • All the same as for transactions, except that master also may initiate a vote if DDL fails.
            • Control:
              • wsrep_ignore_apply_errors bitmask controls whether the error is reported back to provider. E.g. wsrep_ignore_apply_errors=4 will ignore any DDL errors, thus imitating 10.4 behavior. (Otherwise any DDL error will result in a voting round) (a better value would be 1 where only reconciling DDL errors are ignored)
            • gcs.vote_policy defines who wins in a voting round:
              • Default value 0 means simple majority as described above. Any value >= 1 means that if success votes count is >= that value, success wins even if in minority. E.g. gcs.vote_policy=1 will imitate current 10.4 behavior, where only the node that successfully committed transaction would remain (the difference would be that in 10.4 it will end up in non-primary configuration, in 10.5 it will remain primary).
            jplindst Jan Lindström (Inactive) added a comment - High-level decsription. For transactions: if applying slave writeset fails (apply callback), error description is passed back to provider and it initiates voting in the group. All nodes report which result they got for a given action, and if there is a simple majority about a given result, then this result wins and the nodes that have a different result gracefully quit the group. If there is no majority then success wins. If there is no node with success result, then some other node wins. For TOI operations (DDLs): All the same as for transactions, except that master also may initiate a vote if DDL fails. Control: wsrep_ignore_apply_errors bitmask controls whether the error is reported back to provider. E.g. wsrep_ignore_apply_errors=4 will ignore any DDL errors, thus imitating 10.4 behavior. (Otherwise any DDL error will result in a voting round) (a better value would be 1 where only reconciling DDL errors are ignored) gcs.vote_policy defines who wins in a voting round: Default value 0 means simple majority as described above. Any value >= 1 means that if success votes count is >= that value, success wins even if in minority. E.g. gcs.vote_policy=1 will imitate current 10.4 behavior, where only the node that successfully committed transaction would remain (the difference would be that in 10.4 it will end up in non-primary configuration, in 10.5 it will remain primary).
            jplindst Jan Lindström (Inactive) added a comment - - edited

            jacob.moorman This is feature to 10.5 see above for description. I can give a example if wanted.

            jplindst Jan Lindström (Inactive) added a comment - - edited jacob.moorman This is feature to 10.5 see above for description. I can give a example if wanted.

            People

              jplindst Jan Lindström (Inactive)
              jplindst Jan Lindström (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.