Bug #858 CHANGE MASTER forgets to update relay-log.info
Submitted: 16 Jul 2003 13:37 Modified: 24 Jul 2003 13:34
Reporter: Guilhem Bichot Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Replication Severity:S3 (Non-critical)
Version:4.0 OS:Any (all)
Assigned to: Guilhem Bichot CPU Architecture:Any

[16 Jul 2003 13:37] Guilhem Bichot
Description:
After some shutdowns/restarts and a CHANGE MASTER, one gets:
030716 22:14:56  Failed to open the relay log (relay_log_name='./gbichot2-relay-bin.004', relay_log_pos=47)
030716 22:14:56  Could not find target log during relay log initialization
030716 22:14:56  Failed to initialize the master info structure
in the .err file of the slave.

How to repeat:
Found by Dmitri Lenev (quoting his email to me):
------------------------------------------------

1) i set up two servers a master and a slave, and set up replication 
   between them as described in manual.
2) Now i shutdown slave via mysqladmin shutdown
3) Start up slave server
4) Now i shutdown slave via mysqladmin shutdown
5) Start up slave server
6) Now i shutdown slave via mysqladmin shutdown
7) Start up slave server

Now slave data directory looks like:

---------------
[dlenev@dlenev mysql-4.1]$ ls -l ../../mysql_data2/
итого 20580
-rw-rw----    1 dlenev   dlenev          4 Июл 16 23:30 dlenev.pid
-rw-rw----    1 dlenev   dlenev          4 Июл 16 23:30
dlenev-relay-bin.000004
-rw-rw----    1 dlenev   dlenev         26 Июл 16 23:30
dlenev-relay-bin.index
drwx------    2 dlenev   dlenev       4096 Июл  1 22:01 foo
-rw-r-----    1 dlenev   dlenev      25088 Июл  1 22:01
ib_arch_log_0000000000
-rw-r-----    1 dlenev   dlenev   10485760 Июл 16 23:30 ibdata1
-rw-r-----    1 dlenev   dlenev    5242880 Июл 16 23:30 ib_logfile0
-rw-r-----    1 dlenev   dlenev    5242880 Июл  1 22:01 ib_logfile1
-rw-rw----    1 dlenev   dlenev        157 Июл 16 23:30 master.info
drwxr-xr-x    2 dlenev   dlenev       4096 Июл  1 22:01 mysql
-rw-rw----    1 dlenev   dlenev         51 Июл 16 23:30 relay-log.info
drwx------    2 dlenev   dlenev       4096 Июл 16 14:22 test
[dlenev@dlenev mysql-4.1]$ cat ../../mysql_data2/relay-log.info 
./dlenev-relay-bin.000004
4
dlenevrepl.000023
79
9
[dlenev@dlenev mysql-4.1]$ 
------------

Note that 000004 suffix. I obtained it via several shutdown/start-up
iterations.

8) 
---------
[dlenev@dlenev mysql-4.1]$ client/mysql -u root --protocol=tcp --port=3316
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.1.1-alpha-debug

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

mysql> change master to master_user='test';
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> Bye
-----------
So we stop slave, setting non-existent master_user, starting up slave

9) Now we again shutdown slave server
10) Start up it again and get

-----------
[dlenev@dlenev mysql-4.1]$ ./start_mysqld2.sh
030716 23:38:02  InnoDB: Started
030716 23:38:02  Could not find target log during relay log initialization
030716 23:38:02  Note: Failed to initialized master info
/home/dlenev/src/mysql-4.1/sql/mysqld: ready for connections.
Version: '4.1.1-alpha-debug'  socket: '/home/dlenev/mysql_data/mysql.sock'
port: 3316
-----------

Note that on this stage slave's data dir looks like:

-----------
[dlenev@dlenev mysql-4.1]$ cat ../../mysql_data2/relay-log.info 
./dlenev-relay-bin.000004
4
dlenevrepl.000023
79
9
[dlenev@dlenev mysql-4.1]$ ls -l ../../mysql_data2/
итого 20584
-rw-rw----    1 dlenev   dlenev          4 Июл 16 23:38 dlenev.pid
-rw-rw----    1 dlenev   dlenev          4 Июл 16 23:37
dlenev-relay-bin.000001
-rw-rw----    1 dlenev   dlenev          4 Июл 16 23:38
dlenev-relay-bin.000002
-rw-rw----    1 dlenev   dlenev         52 Июл 16 23:38
dlenev-relay-bin.index
drwx------    2 dlenev   dlenev       4096 Июл  1 22:01 foo
-rw-r-----    1 dlenev   dlenev      25088 Июл  1 22:01
ib_arch_log_0000000000
-rw-r-----    1 dlenev   dlenev   10485760 Июл 16 23:37 ibdata1
-rw-r-----    1 dlenev   dlenev    5242880 Июл 16 23:38 ib_logfile0
-rw-r-----    1 dlenev   dlenev    5242880 Июл  1 22:01 ib_logfile1
-rw-rw----    1 dlenev   dlenev        157 Июл 16 23:37 master.info
drwxr-xr-x    2 dlenev   dlenev       4096 Июл  1 22:01 mysql
-rw-rw----    1 dlenev   dlenev         51 Июл 16 23:35 relay-log.info
drwx------    2 dlenev   dlenev       4096 Июл 16 14:22 test
[dlenev@dlenev mysql-4.1]$
-----------

So in this case all old relay files are deleted 
but relay-log.info contains the same 000004 suffix!

Suggested fix:
Something wrong in sql_repl.cc I think.
[21 Jul 2003 2:09] Guilhem Bichot
not committed; sent to Serg for review.
[24 Jul 2003 13:34] Guilhem Bichot
Thank you for your bug report. This issue has been fixed in the latest
development tree for that product. You can find more information about
accessing our development trees at 
    http://www.mysql.com/doc/en/Installing_source_tree.html

Fixed in ChangeSet@1.1536.1.2, 2003-07-24 22:29:09+02:00, guilhem@mysql.com