| Bug #37313 | BINLOG Contains Incorrect server id | ||
|---|---|---|---|
| Submitted: | 10 Jun 2008 18:11 | Modified: | 18 Mar 16:16 |
| Reporter: | Gregory Haase | ||
| Status: | Closed | ||
| Category: | Server: Replication | Severity: | S3 (Non-critical) |
| Version: | 5.1.24/5.0/6.0 | OS: | Linux (x86_64) |
| Assigned to: | Andrei Elkin | Target Version: | 5.0+ |
| Tags: | server_id, binlog | ||
| Triage: | Triaged: D3 (Medium) | ||
[11 Jun 2008 3:42]
Miguel Solorzano
Thank you for the bug report.
mysql 5.0 > show binlog events in 'hegel.000003';
+--------------+-----+-------------+------------+-------------+------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info
|
+--------------+-----+-------------+------------+-------------+------------------------------------------+
| hegel.000003 | 4 | Format_desc | 2147483647 | 98 | Server ver:
5.0.64-nt-log, Binlog ver: 4 |
| hegel.000003 | 98 | Query | 2147483648 | 188 | use `test`; insert into
test values (1) |
| hegel.000003 | 188 | Rotate | 2147483648 | 227 | hegel.000004;pos=4
|
+--------------+-----+-------------+------------+-------------+------------------------------------------+
3 rows in set (0.00 sec)
mysql 5.0 > exit
Bye
c:\dbs>5.0\bin\mysqlbinlog.exe c:\dbs\5.0\data\hegel.000003
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#080610 22:27:55 server id 2147483647 end_log_pos 98 Start: binlog v 4, server v
5.0.64-nt-log created 080610 22:27:55
# at 98
#080610 22:27:55 server id -2147483648 end_log_pos 188 Query thread_id=1
exec_time=0 error_code=0
use test/*!*/;
SET TIMESTAMP=1213147675/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1,
@@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
/*!\C latin1 *//*!*/;
SET
@@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
insert into test values (1)
/*!*/;
# at 188
#080610 22:27:55 server id -2147483648 end_log_pos 227 Rotate to hegel.000004
pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
c:\dbs>
[16 Nov 2008 22:35]
Giuseppe Maxia
The problem is in mysqlbinlog code. A simple display error. Patch follows
=== modified file 'sql/log_event.cc'
--- sql/log_event.cc 2008-10-20 18:50:08 +0000
+++ sql/log_event.cc 2008-11-16 21:33:46 +0000
@@ -1257,7 +1257,7 @@
my_b_printf(file, "#");
print_timestamp(file);
- my_b_printf(file, " server id %d end_log_pos %s ", server_id,
+ my_b_printf(file, " server id %lu end_log_pos %s ", server_id,
llstr(log_pos,llbuff));
/* mysqlbinlog --hexdump */
[13 Feb 22:39]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/66307 2744 Andrei Elkin 2009-02-13 Bug #37313 BINLOG Contains Incorrect server id Singed integer format specifier forced to print the binlog header with server_id negative if the unsigned value set the sign bit ON. Fixed with correcting the specifier to correspond to typeof(server_id) == ulong.
[20 Feb 12:56]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/67019 2757 Andrei Elkin 2009-02-20 Bug #37313 BINLOG Contains Incorrect server id Signed integer format specifier forced to print the binlog header with server_id negative if the unsigned value sets the sign-bit ON. Fixed with correcting the specifier to correspond to typeof(server_id) == ulong.
[24 Feb 15:18]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/67387 2758 Andrei Elkin 2009-02-24 fixing compilation warning and adding flush logs to test of bug#37313
[24 Feb 16:01]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/67392 2817 Andrei Elkin 2009-02-24 [merge] merging bug#37313fixes from 5.0-bt to 5.1-bt
[24 Feb 16:06]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/67395 3076 Andrei Elkin 2009-02-24 [merge] merging fixes for bug#37313 from 5.0->5.1 bt
[24 Feb 18:26]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/67406 3076 Andrei Elkin 2009-02-24 [merge] merging bug#37313fixes from 5.0-bt -> 5.1-bt -> 6.0-bt
[9 Mar 15:14]
Bugs System
Pushed into 5.0.79 (revid:joro@sun.com-20090309135922-a0di9ebkxoj4d4wv) (version source revid:aelkin@mysql.com-20090224141734-1fl9i2eosw0rt3kl) (merge vers: 5.0.79) (pib:6)
[10 Mar 14:51]
Jon Stephens
Documented bugfix in the 5.0.79 changelog as follows:
Server IDs greater than 2147483647 (2³²-1) were represented
by negative numbers in the binary log.
Set status to NDI pending merges to 5.1 and 6.0 trees.
[13 Mar 20:06]
Bugs System
Pushed into 5.1.33 (revid:joro@sun.com-20090313111355-7bsi1hgkvrg8pdds) (version source revid:patrick.crews@sun.com-20090225081629-ent6zn9d1lt6bx68) (merge vers: 5.1.33) (pib:6)
[15 Mar 11:27]
Jon Stephens
Fix also noted in 5.1.33 changelog; set back to NDI status pending merge to 6.0 tree.
[18 Mar 14:21]
Bugs System
Pushed into 6.0.11-alpha (revid:joro@sun.com-20090318122208-1b5kvg6zeb4hxwp9) (version source revid:aelkin@mysql.com-20090224172530-tciie915ngdb595w) (merge vers: 6.0.10-alpha) (pib:6)
[18 Mar 16:16]
Jon Stephens
Fix also noted in 6.0.11 changelog; closed.
[21 Apr 11:49]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/72558 3220 Andrei Elkin 2009-04-21 [merge] merging bug#37313fixes from 5.1-bt to 6.0-bt
[6 May 16:11]
Bugs System
Pushed into 6.0.12-alpha (revid:svoj@sun.com-20090506125450-yokcmvqf2g7jhujq) (version source revid:aelkin@mysql.com-20090421094803-hho7a34gdsby7382) (merge vers: 6.0.11-alpha) (pib:6)
[9 May 18:45]
Bugs System
Pushed into 5.1.34-ndb-6.2.18 (revid:jonas@mysql.com-20090508185236-p9b3as7qyauybefl) (version source revid:jonas@mysql.com-20090508100057-30ote4xggi4nq14v) (merge vers: 5.1.33-ndb-6.2.18) (pib:6)
[9 May 19:42]
Bugs System
Pushed into 5.1.34-ndb-6.3.25 (revid:jonas@mysql.com-20090509063138-1u3q3v09wnn2txyt) (version source revid:jonas@mysql.com-20090508175813-s6yele2z3oh6o99z) (merge vers: 5.1.33-ndb-6.3.25) (pib:6)
[9 May 20:39]
Bugs System
Pushed into 5.1.34-ndb-7.0.6 (revid:jonas@mysql.com-20090509154927-im9a7g846c6u1hzc) (version source revid:jonas@mysql.com-20090509073226-09bljakh9eppogec) (merge vers: 5.1.33-ndb-7.0.6) (pib:6)

Description: The server id as it appears in mysqlbinlog is not using proper unsigned int. Therefore, server ids greater than 2147483647 are showing up as a negative integer in mysqlbinlog. This is a problem for people who want their server_id to be set as inet_aton('<ip_address>') to ensure they are always unique in large data centers. Although the data as it appears in mysqlbinlog is incorrect, there is no evidence that this has any adverse affects. How to repeat: in mysql: > flush logs; > set global server_id = 2147483647; > create table test (id INT); > flush logs; > set global server_id = 2147483648; > insert into test values (1); > flush logs; mysql> show binlog events in 'bin-logs.000001'; +-----------------+-----+-------------+------------+-------------+----------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +-----------------+-----+-------------+------------+-------------+----------------------------------------------------+ | bin-logs.000001 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.24-rc-community-log, Binlog ver: 4 | | bin-logs.000001 | 106 | Query | 2147483647 | 197 | use `test`; create table test (id INT) | | bin-logs.000001 | 197 | Rotate | 2147483647 | 239 | bin-logs.000002;pos=4 | +-----------------+-----+-------------+------------+-------------+----------------------------------------------------+ 3 rows in set (0.00 sec) mysql> show binlog events in 'bin-logs.000047'; +-----------------+-----+-------------+------------+-------------+----------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +-----------------+-----+-------------+------------+-------------+----------------------------------------------------+ | bin-logs.000002 | 4 | Format_desc | 2147483647 | 106 | Server ver: 5.1.24-rc-community-log, Binlog ver: 4 | | bin-logs.000002 | 106 | Query | 2147483648 | 174 | use `test`; BEGIN | | bin-logs.000002 | 174 | Query | 2147483648 | 264 | use `test`; insert into test values (1) | | bin-logs.000002 | 264 | Xid | 2147483648 | 291 | COMMIT /* xid=3773881 */ | | bin-logs.000002 | 291 | Rotate | 2147483648 | 333 | bin-logs.000003;pos=4 | +-----------------+-----+-------------+------------+-------------+----------------------------------------------------+ 5 rows in set (0.00 sec) So far so good... these values are correct. Now look at the same events through mysqlbinlog: /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #080610 15:59:30 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.24-rc-community-log created 080610 15:59:30 BINLOG ' 4qROSA8BAAAAZgAAAGoAAAAAAAQANS4xLjI0LXJjLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC '/*!*/; # at 106 #080610 16:00:16 server id 2147483647 end_log_pos 197 Query thread_id=539 exec_time=0 error_code=0 use test/*!*/; SET TIMESTAMP=1213113616/*!*/; SET @@session.pseudo_thread_id=539/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/; SET @@session.sql_mode=0/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C latin1 *//*!*/; SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; create table test (id INT) /*!*/; # at 197 #080610 16:00:23 server id 2147483647 end_log_pos 239 Rotate to bin-logs.000002 pos: 4 DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #080610 16:00:23 server id 2147483647 end_log_pos 106 Start: binlog v 4, server v 5.1.24-rc-community-log created 080610 16:00:23 BINLOG ' F6VOSA////9/ZgAAAGoAAAAAAAQANS4xLjI0LXJjLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC '/*!*/; # at 106 #080610 16:00:44 server id -2147483648 end_log_pos 174 Query thread_id=539 exec_time=0 error_code=0 use test/*!*/; SET TIMESTAMP=1213113644/*!*/; SET @@session.pseudo_thread_id=539/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/; SET @@session.sql_mode=0/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C latin1 *//*!*/; SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; BEGIN /*!*/; # at 174 #080610 16:00:44 server id -2147483648 end_log_pos 264 Query thread_id=539 exec_time=0 error_code=0 SET TIMESTAMP=1213113644/*!*/; insert into test values (1) /*!*/; # at 264 #080610 16:00:44 server id -2147483648 end_log_pos 291 Xid = 3773881 COMMIT/*!*/; # at 291 #080610 16:00:48 server id -2147483648 end_log_pos 333 Rotate to bin-logs.000003 pos: 4 DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; Notice the server id in the second report shows a negative number.