Uploaded image for project: 'MariaDB MaxScale'
  1. MariaDB MaxScale
  2. MXS-3987

Maxscale doesn't rejoin old master as a slave

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Critical
    • Resolution: Not a Bug
    • None
    • N/A
    • N/A
    • None

    Description

      I have master (192.168.56.118) and slave (192.168.56.119)

      Master my.cnf:

      [mysqld]
       
      character_set_server=utf8mb4
      collation_server=utf8mb4_unicode_ci
      innodb_file_format=Barracuda
      innodb_large_prefix=1
      innodb_file_per_table=1
      lower_case_table_names=1
       
      port = 3306
       
      log_bin = mariadb-bin
       
      server_id = 1
       
      gtid_strict_mode = 1
      gtid_domain_id = 1
       
      [mysqld_safe]
      log-error=/var/log/mariadb/mariadb.log
      pid-file=/var/run/mariadb/mariadb.pid
       
       
      [client-server]
       
       
      !includedir /etc/my.cnf.d
      

      Slave my.cnf:

      [mysqld]
       
      character_set_server=utf8mb4
      collation_server=utf8mb4_unicode_ci
      innodb_file_format=Barracuda
      innodb_large_prefix=1
      innodb_file_per_table=1
      lower_case_table_names=1
       
      port = 3306
       
      log_bin = mariadb-bin
       
      server_id = 2
      gtid_strict_mode = 1
      gtid_domain_id = 1
       
      [mysqld_safe]
      log-error=/var/log/mariadb/mariadb.log
      pid-file=/var/run/mariadb/mariadb.pid
       
       
      [client-server]
       
       
      !includedir /etc/my.cnf.d
      

      Replication works correctly, on slave ststus command has no errors:

      MariaDB [(none)]> show slave status\G
      *************************** 1. row ***************************
                      Slave_IO_State: Waiting for master to send event
                         Master_Host: 192.168.56.118
                         Master_User: repl
                         Master_Port: 3306
                       Connect_Retry: 60
                     Master_Log_File: mariadb-bin.000001
                 Read_Master_Log_Pos: 3630
                      Relay_Log_File: pg-exercises-relay-bin.000002
                       Relay_Log_Pos: 3544
               Relay_Master_Log_File: mariadb-bin.000001
                    Slave_IO_Running: Yes
                   Slave_SQL_Running: Yes
                     Replicate_Do_DB:
                 Replicate_Ignore_DB:
                  Replicate_Do_Table:
              Replicate_Ignore_Table:
             Replicate_Wild_Do_Table:
         Replicate_Wild_Ignore_Table:
                          Last_Errno: 0
                          Last_Error:
                        Skip_Counter: 0
                 Exec_Master_Log_Pos: 3630
                     Relay_Log_Space: 3860
                     Until_Condition: None
                      Until_Log_File:
                       Until_Log_Pos: 0
                  Master_SSL_Allowed: No
                  Master_SSL_CA_File:
                  Master_SSL_CA_Path:
                     Master_SSL_Cert:
                   Master_SSL_Cipher:
                      Master_SSL_Key:
               Seconds_Behind_Master: 0
       Master_SSL_Verify_Server_Cert: No
                       Last_IO_Errno: 0
                       Last_IO_Error:
                      Last_SQL_Errno: 0
                      Last_SQL_Error:
         Replicate_Ignore_Server_Ids:
                    Master_Server_Id: 1
                      Master_SSL_Crl:
                  Master_SSL_Crlpath:
                          Using_Gtid: Slave_Pos
                         Gtid_IO_Pos: 1-1-22
             Replicate_Do_Domain_Ids:
         Replicate_Ignore_Domain_Ids:
                       Parallel_Mode: optimistic
                           SQL_Delay: 0
                 SQL_Remaining_Delay: NULL
             Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
                    Slave_DDL_Groups: 18
      Slave_Non_Transactional_Groups: 1
          Slave_Transactional_Groups: 0
      1 row in set (0.000 sec)
      

      Also I have maxscale, maxscale.cnf:

      [maxscale]
      threads=auto
       
       
      [server1]
      type=server
      address=192.168.56.118
      port=3306
      protocol=MariaDBBackend
       
       
      [server2]
      type=server
      address=192.168.56.119
      port=3306
      protocol=MariaDBBackend
       
      [MariaDB-Monitor]
      type=monitor
      module=mariadbmon
      servers=server1,server2
      user=maxscale
      password=maxscale
      auto_failover=true
      auto_rejoin=true
      monitor_interval=100
      replication_user=repl
      replication_password=lper
       
      [Read-Write-Service]
      type=service
      router=readwritesplit
      servers=server1,server2
      user=maxscale
      password=maxscale
       
       
      [Read-Write-Listener]
      type=listener
      service=Read-Write-Service
      protocol=MariaDBClient
      port=4006
      

      Firsty it works without problems:
      maxctrl list servers
      ┌─────────┬────────────────┬──────┬─────────────┬─────────────────┬────────┐
      │ Server │ Address │ Port │ Connections │ State │ GTID │
      ├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────┤
      │ server1 │ 192.168.56.118 │ 3306 │ 0 │ Master, Running │ 1-1-22 │
      ├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────┤
      │ server2 │ 192.168.56.119 │ 3306 │ 0 │ Slave, Running │ 1-1-22 │
      └─────────┴────────────────┴──────┴─────────────┴─────────────────┴────────┘

      When master fails, slave bocomes a master:
      maxctrl list servers
      ┌─────────┬────────────────┬──────┬─────────────┬─────────────────┬────────┐
      │ Server │ Address │ Port │ Connections │ State │ GTID │
      ├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────┤
      │ server1 │ 192.168.56.118 │ 3306 │ 0 │ Down │ 1-1-22 │
      ├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────┤
      │ server2 │ 192.168.56.119 │ 3306 │ 0 │ Master, Running │ 1-1-22 │
      └─────────┴────────────────┴──────┴─────────────┴─────────────────┴────────┘

      But, when I start master again I have such situation:
      maxctrl list servers
      ┌─────────┬────────────────┬──────┬─────────────┬─────────────────┬────────┐
      │ Server │ Address │ Port │ Connections │ State │ GTID │
      ├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────┤
      │ server1 │ 192.168.56.118 │ 3306 │ 0 │ Running │ 1-1-22 │
      ├─────────┼────────────────┼──────┼─────────────┼─────────────────┼────────┤
      │ server2 │ 192.168.56.119 │ 3306 │ 0 │ Master, Running │ 1-1-22 │
      └─────────┴────────────────┴──────┴─────────────┴─────────────────┴────────┘

      And I found error in the maxscale log:
      2022-02-08 12:22:05 warning: [mariadbmon] Automatic rejoin was not attempted on server 'server1' even though it is a valid candidate. Will keep retrying with this message suppressed for all servers. Errors:
      gtid_current_pos of 'server1' (1-1-22) is incompatible with gtid_binlog_pos of 'server2' (1-2-8).

      So, server1 previously was a master, so, I thought that it's ok that his global.gtid_binlog_pos is higher.
      Perhaps I'm doing something wrong? Or is this the standard behavior?

      Attachments

        Activity

          People

            Unassigned Unassigned
            magzhanova Asel Magzhanova
            Votes:
            0 Vote for this issue
            Watchers:
            2 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.