Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-6593

domain_id based replication filters

Details

    Description

      Provide a mechanism to filter replication events on the slave replication
      server based on domain_id.

      New master definitions:

      (1) DO_DOMAIN_IDS = (N[,N])

      • Accepts a comma-separated list of domain_ids, the replication events of
        which will be kept.
      • If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
        existing list of domain ids (if any) would be preserved.
      • DO_DOMAIN_IDS=() can be used to clear the list.
      • The list should show in SHOW MASTER STATUS output and master_info file.
      • On restart, the list should automatically get populated from master_info.

      (2) IGNORE_DOMAIN_IDS = (N[,N])

      • Accepts a comma-separated list of domain_ids, the replication events of
        which will be filtered out.
      • If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
        existing list of domain ids (if any) would be preserved.
      • IGNORE_DOMAIN_IDS=() can be used to clear the list.
      • The list should show in SHOW MASTER STATUS output and master_info file.
      • On restart, the list should automatically get populated from master_info.

      Additional notes:

      • The list preservation rule is consistent with IGNORE_SERVER_IDS.
      • Both the lists (DO_ & IGNORE_) cannot be non-empty at the same time.
      • CHANGE MASTER TO command would fail with ER_MASTER_INFO if it tries
        to set both the lists.

      Examples:

      CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
      CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
      CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

      $ tail -2 master.info
      do_domain_ids=0
      ignore_domain_ids=3 1 2 3

      Attachments

        Issue Links

          Activity

            nirbhay_c Nirbhay Choubey (Inactive) created issue -
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Field Original Value New Value

            It might be better to do it like ignored server ids. Eg.

            CHANGE MASTER TO IGNORE_DOMAIN_IDS= (1,2)
            CHANGE MASTER TO ONLY_DOMAIN_IDS= (0)

            This way, it is possible to configure it per master connection, which would seem to be useful.

            knielsen Kristian Nielsen added a comment - It might be better to do it like ignored server ids. Eg. CHANGE MASTER TO IGNORE_DOMAIN_IDS= (1,2) CHANGE MASTER TO ONLY_DOMAIN_IDS= (0) This way, it is possible to configure it per master connection, which would seem to be useful.
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Assignee Nirbhay Choubey [ nirbhay_c ]
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Description Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            Someting like:
            --replicate-do-domain-id=N
            --replicate-ignore-domain-id=N
            Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            ignore_domain_ids=3 1 2 3
            do_domain_ids=1 99

            Hi Kristian,
            Thanks for the suggestion. I have updated the description accordingly.

            nirbhay_c Nirbhay Choubey (Inactive) added a comment - Hi Kristian, Thanks for the suggestion. I have updated the description accordingly.
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Description Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            ignore_domain_ids=3 1 2 3
            do_domain_ids=1 99
            Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            ignore_domain_ids=3 1 2 3
            do_domain_ids=0
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Description Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            ignore_domain_ids=3 1 2 3
            do_domain_ids=0
            Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            do_domain_ids=0
            ignore_domain_ids=3 1 2 3
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Description Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            do_domain_ids=0
            ignore_domain_ids=3 1 2 3
            Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.
              * On restart, the list should automatically get populated from master_info.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.
              * On restart, the list should automatically get populated from master_info.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            do_domain_ids=0
            ignore_domain_ids=3 1 2 3
            nirbhay_c Nirbhay Choubey (Inactive) added a comment - http://lists.askmonty.org/pipermail/commits/2014-September/006553.html
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Assignee Nirbhay Choubey [ nirbhay_c ] Kristian Nielsen [ knielsen ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            knielsen Kristian Nielsen added a comment - https://lists.launchpad.net/maria-developers/msg07703.html https://lists.launchpad.net/maria-developers/msg07704.html
            knielsen Kristian Nielsen made changes -
            Assignee Kristian Nielsen [ knielsen ] Nirbhay Choubey [ nirbhay_c ]
            Status In Review [ 10002 ] Stalled [ 10000 ]
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            nirbhay_c Nirbhay Choubey (Inactive) added a comment - http://lists.askmonty.org/pipermail/commits/2014-November/006904.html
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Assignee Nirbhay Choubey [ nirbhay_c ] Kristian Nielsen [ knielsen ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            knielsen Kristian Nielsen added a comment - - edited
            knielsen Kristian Nielsen added a comment - - edited Review sent on maria-developers@: https://lists.launchpad.net/maria-developers/msg07895.html
            knielsen Kristian Nielsen made changes -
            Assignee Kristian Nielsen [ knielsen ] Nirbhay Choubey [ nirbhay_c ]
            nirbhay_c Nirbhay Choubey (Inactive) added a comment - http://lists.askmonty.org/pipermail/commits/2014-November/007040.html
            serg Sergei Golubchik made changes -
            Fix Version/s 10.1 [ 16100 ]
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Description Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * This list would take precedence over IGNORE_DOMAIN_IDS list.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.
              * On restart, the list should automatically get populated from master_info.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.
              * On restart, the list should automatically get populated from master_info.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            do_domain_ids=0
            ignore_domain_ids=3 1 2 3
            Provide a mechanism to filter replication events on the slave replication
            server based on domain_id.

            New master definitions:

            (1) DO_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be kept.
              * If a CHANGE MASTER command is executed without DO_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * DO_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.
              * On restart, the list should automatically get populated from master_info.

            (2) IGNORE_DOMAIN_IDS = (N[,N])
              * Accepts a comma-separated list of domain_ids, the replication events of
                which will be filtered out.
              * If a CHANGE MASTER command is executed without IGNORE_DOMAIN_IDS, the
                existing list of domain ids (if any) would be preserved.
              * IGNORE_DOMAIN_IDS=() can be used to clear the list.
              * The list should show in SHOW MASTER STATUS output and master_info file.
              * On restart, the list should automatically get populated from master_info.


            Additional notes:
              * The list preservation rule is consistent with IGNORE_SERVER_IDS.
              * Both the lists (DO_ & IGNORE_) cannot be non-empty at the same time.
              * CHANGE MASTER TO command would fail with ER_MASTER_INFO if it tries
                 to set both the lists.

            Examples:

            CHANGE MASTER TO .. IGNORE_DOMAIN_IDS= (1,2,3) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= (99) .. ;
            CHANGE MASTER TO .. DO_DOMAIN_IDS= () .. ;

            $ tail -2 master.info
            do_domain_ids=0
            ignore_domain_ids=3 1 2 3
            nirbhay_c Nirbhay Choubey (Inactive) added a comment - https://github.com/MariaDB/server/commit/a50ddebb5cfa7b79540d155e8e41c7a07c4c3fbf
            nirbhay_c Nirbhay Choubey (Inactive) made changes -
            Component/s Replication [ 10100 ]
            Fix Version/s 10.1.2 [ 15801 ]
            Fix Version/s 10.1 [ 16100 ]
            Resolution Fixed [ 1 ]
            Status In Review [ 10002 ] Closed [ 6 ]
            ratzpo Rasmus Johansson (Inactive) made changes -
            Workflow MariaDB v2 [ 52803 ] MariaDB v3 [ 64681 ]
            stephane@skysql.com VAROQUI Stephane made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 64681 ] MariaDB v4 [ 132393 ]

            People

              nirbhay_c Nirbhay Choubey (Inactive)
              nirbhay_c Nirbhay Choubey (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              5 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.