| Bug #16261 | LOAD TABLE FROM MASTER 4.0 to 5.0 destroys data | ||
|---|---|---|---|
| Submitted: | 6 Jan 2006 19:12 | Modified: | 4 Aug 2006 9:59 |
| Reporter: | Ingo Strüwing | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Replication | Severity: | S2 (Serious) |
| Version: | 4.0.27-BK/5.0.19-BK, 4.0.18 / 5.0.16 | OS: | Linux (Linux) |
| Assigned to: | MC Brown | CPU Architecture: | Any |
[6 Jan 2006 19:12]
Ingo Strüwing
[30 Jan 2006 10:55]
Valeriy Kravchuk
Thank you for a bug report. Verified just as described on latest 4.0.27-BK (ChangeSet@1.2172, 2006-01-23 21:51:32+03:00) as master and 5.0.19-BK (ChangeSet@1.2011, 2006-01-28 19:44:51-06:00) as slave, on SuSE 9.3:
MASTER:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.0.27-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE `loadtable` (
-> `f1` tinyint(4) NOT NULL default '0',
-> `f2` tinyint(4) NOT NULL default '0'
-> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO `loadtable` (`f1`, `f2`) VALUES (1, 1);
Query OK, 1 row affected (0.01 sec)
...
mysql> INSERT INTO `loadtable` (`f1`, `f2`) VALUES (1, 1);
Query OK, 1 row affected (0.00 sec)
mysql> select * from loadtable;
+----+----+
| f1 | f2 |
+----+----+
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
+----+----+
16 rows in set (0.01 sec)
mysql> select version();
+------------+
| version() |
+------------+
| 4.0.27-log |
+------------+
1 row in set (0.01 sec)
SLAVE:
openxs@suse:~/dbs/5.0> bin/mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 5.0.19
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| loadtable |
+----------------+
1 row in set (0.00 sec)
mysql> select * from loadtable;
+----+----+
| f1 | f2 |
+----+----+
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
+----+----+
16 rows in set (0.00 sec)
mysql> drop table loadtable;
Query OK, 0 rows affected (0.01 sec)
mysql> LOAD TABLE loadtable FROM MASTER ;
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> show warnings;
+---------+------+--------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------------------+
| Warning | 1287 | 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead |
+---------+------+--------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from loadtable;
+----+----+
| f1 | f2 |
+----+----+
| 1 | 1 |
| 0 | 0 |
| 1 | 0 |
| 1 | 1 |
| 0 | 0 |
| 1 | 0 |
| 1 | 1 |
+----+----+
7 rows in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.19 |
+-----------+
1 row in set (0.01 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: repl
Master_Port: 3340
Connect_Retry: 60
Master_Log_File: mysql-bin.002
Read_Master_Log_Pos: 2194
Relay_Log_File: suse-relay-bin.000003
Relay_Log_Pos: 1798
Relay_Master_Log_File: mysql-bin.002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test
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: 2194
Relay_Log_Space: 1798
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
1 row in set (0.00 sec)
It is a bug.
P.S.
Master configuration:
openxs@suse:~/dbs/4.0> cat var/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
port=3340
socket=/tmp/mysql40.sock
Slave configuration:
openxs@suse:~/dbs/5.0> cat var/my.cnf
[mysqld]
server-id=2
replicate_do_db=test
openxs@suse:~/dbs/5.0> cat var/master.info
14
mysql-bin.002
2194
localhost
repl
repl
3340
60
0
[12 Jul 2006 16:44]
Chad MILLER
Brian said this has sat too long, and wants me to take a try at it.
[2 Aug 2006 14:22]
Chad MILLER
Sorry, we don't support this. It should be documented, if it isn't so.
[4 Aug 2006 9:59]
MC Brown
I have updated the documentation for 5.0 to state that this combination (4.1/5.0) and LOAD TABLE FROM MASTER is not supported.
[13 Sep 2006 12:34]
Christian Hammers
Are you serious? Either say "ERROR: 4.x master cannot connect to 5.0 slave." without touching the data (you surely get the version numbers from the handshare) or fix it but silently corrupting the database is BAD! Note: there was a warning given, that maybe even has to do with the cause of the corruptiong but the point is that *this* warning points out the use of a deprecated, but apparently still accepted, option. It does neither discourage the 4.0/5.0 mix nor warns it for possible data corruptions. bye, -christian-
