@@ -80,25 +80,42 @@ func (ScrapeSlaveHosts) Scrape(ctx context.Context, db *sql.DB, ch chan<- promet
80
80
var masterId string
81
81
var slaveUuid string
82
82
83
+ columnNames , err := slaveHostsRows .Columns ()
84
+ if err != nil {
85
+ return err
86
+ }
87
+
83
88
for slaveHostsRows .Next () {
84
89
// Newer versions of mysql have the following
85
90
// Server_id, Host, Port, Master_id, Slave_UUID
86
91
// Older versions of mysql have the following
87
92
// Server_id, Host, Port, Rpl_recovery_rank, Master_id
88
- err := slaveHostsRows .Scan (& serverId , & host , & port , & rrrOrMasterId , & slaveUuidOrMasterId )
93
+ // MySQL 5.5 and MariaDB 10.5 have the following
94
+ // Server_id, Host, Port, Master_id
95
+ if len (columnNames ) == 5 {
96
+ err = slaveHostsRows .Scan (& serverId , & host , & port , & rrrOrMasterId , & slaveUuidOrMasterId )
97
+ } else {
98
+ err = slaveHostsRows .Scan (& serverId , & host , & port , & rrrOrMasterId )
99
+ }
89
100
if err != nil {
90
101
return err
91
102
}
92
103
93
- // Check to see if slaveUuidOrMasterId resembles a UUID or not
94
- // to find out if we are using an old version of MySQL
95
- if _ , err = uuid .FromString (slaveUuidOrMasterId ); err != nil {
96
- // We are running an older version of MySQL with no slave UUID
97
- slaveUuid = ""
98
- masterId = slaveUuidOrMasterId
104
+ // if a Slave_UUID or Rpl_recovery_rank field is present
105
+ if len (columnNames ) == 5 {
106
+ // Check to see if slaveUuidOrMasterId resembles a UUID or not
107
+ // to find out if we are using an old version of MySQL
108
+ if _ , err = uuid .FromString (slaveUuidOrMasterId ); err != nil {
109
+ // We are running an older version of MySQL with no slave UUID
110
+ slaveUuid = ""
111
+ masterId = slaveUuidOrMasterId
112
+ } else {
113
+ // We are running a more recent version of MySQL
114
+ slaveUuid = slaveUuidOrMasterId
115
+ masterId = rrrOrMasterId
116
+ }
99
117
} else {
100
- // We are running a more recent version of MySQL
101
- slaveUuid = slaveUuidOrMasterId
118
+ slaveUuid = ""
102
119
masterId = rrrOrMasterId
103
120
}
104
121
0 commit comments