Commit graph

342 commits

Author SHA1 Message Date
guilhem@mysql.com
c9fd311aac In the slave I/O thread (in master.info), it seems less worse to flush
the relay log before flushing master.info.
Doing 'before' leads to duplicate event, doing after leads to missing event.
Both can be as destructive, but 'duplicate' enables us to later add detection
code to catch it. Whereas 'missing' can't be caught (it can't, because
the I/O thread can produce legal position jumps, for example if it has
ignored an event coming from this slave (rememember that starting from 4.1.1,
the I/O thread filters the server id).
2003-11-28 16:15:21 +01:00
guilhem@gbichot2
05e5a35bf2 Replication:
Now the I/O thread (in flush_master_info()) flushes the relay log to disk
after reading every event. Slower but provides additionnal safety in case
of brutal crash.
I had to make the flush optional (i.e. add a if(some_bool_argument) in the function)
because sometimes flush_master_info() is called when there is no usable
relay log (the relay log's IO_CACHE is not initialized so can't be flushed).
2003-11-23 17:02:59 +01:00
paul@teton.kitebird.com
9b4050c406 Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
2003-11-21 23:02:06 -06:00
monty@mysql.com
d87494c5ac Don't flush cur_log (relay log) on flush_relay_log_info becasue this crashes the server if cur_log is 'hot' and the io_thread has changed log file.
Updated project files for windows
Made rpl_change_master.test portable
Ensure that mutex are not freed if not initilized
2003-11-22 03:21:40 +02:00
paul@teton.kitebird.com
7a1bb450a6 Change word order of a few PROCESSLIST messages to correspond
to order used in START SLAVE syntax.
2003-11-21 12:35:33 -06:00
paul@ice.snake.net
53c93091f2 Write slave status field names using consistent style.
(Initial caps for each word.) For example, instead of writing
Until_condition, Until_Log_File, and Until_log_pos, write
Until_Condition, Until_Log_File, and Until_Log_pos.
2003-11-20 13:07:25 -06:00
monty@narttu.mysql.fi
4e4725377d Merge with 4.0 2003-11-04 09:40:36 +02:00
guilhem@mysql.com
fbc54c139d When we delete the slave's temp tables from memory, we reset
rli->save_temporary_tables and slave_open_temp_tables
(in old 4.0 you could make "SHOW STATUS LIKE 'slave_open_temp_tables'" grow
indefinitely by doing RESET SLAVE and replicating always the same CREATE
TEMPORARY TABLE).
It's critical to reset save_temporary_tables to 0 (otherwise you may later
read memory which has been freed) so this changeset should go into 4.1.
2003-11-03 18:24:01 +01:00
guilhem@mysql.com
c1f7f33960 4 small items in this:
- when we don't have in_addr_t, use uint32.
- a forgotten initialization of slave_proxy_id in sql/log_event.cc (was not really "forgot", was
"we needn't init it there", but there was one case where we needed...).
- made slave_proxy_id always meaningful in THD and Log_event, so we can
rely more on it (no need to test if it's meaningful). THD::slave_proxy_id
is equal to THD::thread_id except for the slave SQL thread.
- clean up the slave's temporary table (i.e. free their memory) when slave
server shuts down.
2003-10-31 23:20:23 +01:00
guilhem@mysql.com
59d0872aa0 Fix for BUG#1686
"If 2 master threads with same-name temp table, slave makes bad binlog"
and (two birds with one stone) for
BUG#1240 "slave of slave breaks when STOP SLAVE was issud on parent slave
and temp tables".

Here is the design change:
in a slave running with --log-slave-updates, events are now logged with the
thread id they had on the master. So no more id conflicts between master threads,
but introduces id conflicts between one master thread and one normal 
client thread connected to the slave. This is solved by storing the server id
in the temp table's name.

New test which requires mysql-test-run to be run with --manager,
otherwise it will be skipped.

Undoing a Monty's change (hum, a chill runs down my spine ;) which was
"Cleanup temporary tables when slave ends" in ChangeSet 1.1572.1.1.
2003-10-29 14:23:35 +01:00
serg@serg.mylan
f944fd4a65 merged 2003-10-21 11:58:43 +02:00
guilhem@mysql.com
ce6d736714 A fix for a random test failure rpl_trunc_binlog: don't RESET MASTER
while the slave is connected.
2003-10-17 00:00:25 +02:00
monty@mashka.mysql.fi
e87c9f5ff8 merge with 4.0 2003-10-16 03:08:40 +03:00
monty@mashka.mysql.fi
84d9d98078 Better fix for CREATE TABLE IF NOT EXISTS ... SELECT
Fixed chsize() problem on windows
Extend default timeout on windows clients to 1 year (to avoid timeout problems)
2003-10-15 21:41:13 +03:00
serg@serg.mylan
50d9b95b77 merged 2003-10-15 12:25:44 +02:00
serg@serg.mylan
8cc3951c8f key_map with more that 64 bits width 2003-10-11 13:06:55 +02:00
guilhem@mysql.com
b2500829a3 Make the slave die if master is 5.0. Indeed, 5.0 masters send
a Format_description_log_event (or maybe it will be named
Description_log_event) which is not recognized by 4.0, so
a 4.0 can't be a slave of 5.0. We detect it early to produce
a helpful message instead of "corrupted relay log" later.
2003-10-09 17:40:38 +02:00
guilhem@gbichot2
c0075fa64b Final push for WL#1098:
"Add a column "Timestamp_of_last_master_event_executed" in SHOW SLAVE STATUS".
Finally this is adding
- Slave_IO_State (a copy of the State column of SHOW PROCESSLIST for the I/O thread,
so that the users, most of the time, has enough info with only SHOW SLAVE STATUS).
- Seconds_behind_master. When the slave connects to the master it does SELECT UNIX_TIMESTAMP()
on the master, computes the absolute difference between the master's and the slave's clock.
It records the timestamp of the last event executed by the SQL thread, and does a
small computation to find the number of seconds by which the slave is late.
2003-10-09 00:06:21 +02:00
monty@narttu.mysql.fi
d9ff665102 Fixes after merge 2003-10-08 12:01:58 +03:00
monty@narttu.mysql.fi
6056cfadfc Merge with 4.0.16 2003-10-07 15:42:26 +03:00
hf@deer.(none)
a2dbfaefa3 SCRUM
embedded library
hash_insert renamed to my_hash_insert to avoid name intersection
with another libraries
is there better idea?
2003-09-19 14:44:31 +05:00
dlenev@mysql.com
2c24b2e9b4 Manual merge after commiting START SLAVE UNTIL 2003-09-14 01:57:09 +04:00
dlenev@dlenev.mshome
c0cfae1c8d Implemented support for START SLAVE UNTIL (WL#868) 2003-09-14 00:13:41 +04:00
guilhem@mysql.com
59663fc661 * Fix for BUG#1248: "LOAD DATA FROM MASTER drops the slave's db unexpectedly".
Now LOAD DATA FROM MASTER does not drop the database, instead it only tries to
create it, and drops/creates table-by-table.
* replicate_wild_ignore_table='db1.%' is now considered as "ignore the 'db1'
database as a whole", as it already works for CREATE DATABASE and DROP DATABASE.
2003-09-11 23:17:28 +02:00
monty@mashka.mysql.fi
45aa92c574 After merge fixes.
Note that mix_innodb_myisam_binlog and union fails after this patch (Will be fixed shortly by maintaners of this code)
2003-09-11 19:06:23 +03:00
monty@narttu.mysql.fi
4b3b4b9250 merge 2003-09-03 19:53:08 +03:00
kostja@oak.local
424a647069 post-merge fixes 2003-09-03 16:43:41 +04:00
kostja@oak.local
36dd82c1d5 merge commit, hope that none of bar and dlenev changes were
lost.
2003-09-03 14:12:10 +04:00
dlenev@mysql.com
73ab4be246 Manual merge fixes 2003-09-01 16:14:54 +04:00
dlenev@dlenev.mshome
2486222cd2 Implemented replication over SSL
Added proper options to CHANGE MASTER TO, new fields to SHOW SLAVE STATUS,
 Honoring this parameters during connection to master.
 Introduced new format of master.info file
2003-09-01 15:16:20 +04:00
monty@narttu.mysql.fi
77a70a0a24 merge with 4.0.15 2003-08-29 13:44:35 +03:00
monty@narttu.mysql.fi
60dd8a2c4f hanged UDF interface to use clear() instead of reset() 2003-08-27 22:30:50 +03:00
guilhem@mysql.com
cc29458056 comments about mutexes in replication.
Don't start the SQL slave thread with SQL_BIG_SELECTS;
it's better to inhibate max_join_size instead.
2003-08-25 16:20:21 +02:00
guilhem@mysql.com
6c9cff9534 Clearer states in SHOW PROCESSLIST for replication threads.
For example the Binlog_dump thread (on the master) sometimes showed "Slave:".
And there were confusing messages where "binlog" was employed instead
of "relay log".
2003-08-25 14:13:58 +02:00
guilhem@mysql.com
cc918272ed The slave threads MUST not care about max_join_size, we start them with
OPTION_BIG_SELECTS.
2003-08-23 17:41:43 +02:00
guilhem@mysql.com
10811aba88 * Fix for a potential bug:
when the SQL thread stops, set rli->inside_transaction to 0. This is needed if the user
later restarts replication from a completely different place where there are only autocommit
statements.
* Detect the case where the master died while flushing the binlog cache to the binlog
and stop with error. Cannot add a testcase for this in 4.0 (I tested it manually)
as the slave always runs with --skip-innodb.
2003-08-23 16:53:04 +02:00
guilhem@mysql.com
165dc895b3 Yesterday I removed process_io_create_file; I shouldn't have.
Let's say the lack of comments did not help me ;)
Copying it back again and adding comments; now 3.23->4.0
replication of LOAD DATA INFILE works again.
2003-08-21 10:24:37 +02:00
guilhem@mysql.com
f405287beb Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/mysql_src/mysql-4.0
2003-08-20 23:25:58 +02:00
guilhem@mysql.com
1dd53ed073 First commit for fixing BUG#1100
"LOAD DATA INFILE is badly filtered by binlog-*-db rules".
There will probably be a second final one to merge Dmitri's changes
to rpl_log.result and mine.
2 new tests:
rpl_loaddata_rule_m : test of logging of LOAD DATA INFILE when the master has binlog-*-db rules,
rpl_loaddata_rule_s : test of logging of LOAD DATA INFILE when the slave has binlog-*-db rules and --log-slave-updates.
2003-08-20 23:24:45 +02:00
dlenev@mysql.com
bb96092202 Fix for BUG#1086. Now we don't preserve event's log_pos through
log-slave-updates since this causes unexpected values in 
Exec_master_log_pos in A->B->C replication setup, synchronization
 problems in master_pos_wait()... 
Still this brokes some functionality in sql/repl_failsafe.cc 
(but this file is not used now)
2003-08-20 03:38:31 +04:00
monty@mashka.mysql.fi
eb6458cb18 After merge fixes + bugs from last merge 2003-08-19 16:00:12 +03:00
monty@mashka.mysql.fi
4f7512160b After merge fixes
Use server character set if --default-character-set is not used
Added convert_string() for more efficient alloc+character-set convert of strings
2003-08-19 00:08:08 +03:00
monty@mashka.mysql.fi
2263e3e51f Merge with 4.0.14 2003-08-11 22:44:43 +03:00
monty@mashka.mysql.fi
6e7a509d06 Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mashka.mysql.fi:/home/my/mysql-4.0
2003-08-07 20:18:51 +03:00
monty@mashka.mysql.fi
8f08c511ee Review of changesets since last pull.
(Mostly code cleanups)
2003-08-07 20:16:37 +03:00
guilhem@mysql.com
bb12d905cb 2 bugfixes:
- Bug #985: "Between RESET SLAVE and START SLAVE, SHOW SLAVE STATUS is wrong."
Now RESET SLAVE puts correct info in mi->host etc. A new test rpl_reset_slave
for that.
- Bug #986: "CHANGE MASTER & START SLAVE do not reset error columns in SHOW
SLAVE STATUS". Now these reset the errors.
2003-08-04 10:59:44 +02:00
kostja@oak.local
50d3291aee manual merge 2003-07-31 17:11:52 +04:00
guilhem@mysql.com
df3b31f3c4 WL#1036 (print the db in slave error messages).
I extended the task to cleaning error messages, making them look nicer,
and making the output of SHOW SLAVE STATUS (column Last_error) be as complete
as what's printed on the .err file;
previously we would have, for a failure of a replicated LOAD DATA INFILE:
- in the .err, 2 lines:
"duplicate entry 2708 for key 1"
"failed loading SQL_LOAD-5-2-2.info"
- and in SHOW SLAVE STATUS, only:
"failed loading SQL_LOAD-5-2-2.info".
Now SHOW SLAVE STATUS will contain the concatenation of the 2 messages.
2003-07-24 22:25:36 +02:00
guilhem@gbichot2
9a5ac78f4c On Feb 4th, 2003, Monty said he would push my patch to print replicate-do-table
and other replicate-*-table options in SHOW SLAVE STATUS.
Seems like it had not been done, so I push it now:
there's 4 new columns to SHOW SLAVE STATUS.
2003-07-23 15:46:46 +02:00
monty@narttu.mysql.fi
df7c1e8165 Better fix for bug #791: At binlog rotation, INSERTs may not find their way into the binlog 2003-07-14 14:59:26 +03:00