mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
96665fd9cc
All statements executed by mysql_upgrade are binlogged and then are replicated to slave. This will result in some errors. The report of this bug has demonstrated some examples. Master and slave should be upgraded separately. All statements executed by mysql_upgrade will not be binlogged. --write-binlog and --skip-write-binlog options are added into mysql_upgrade. These options control whether sql statements are binlogged or not.
56 lines
2 KiB
Text
56 lines
2 KiB
Text
#############################################################################
|
|
# BUG#43579 mysql_upgrade tries to alter log tables on replicated database
|
|
# Master and slave should be upgraded separately. All statements executed by
|
|
# mysql_upgrade will not be binlogged. --write-binlog and --skip-write-binlog
|
|
# options are added into mysql_upgrade. These options control whether sql
|
|
# statements are binlogged or not.
|
|
#############################################################################
|
|
--source include/master-slave.inc
|
|
|
|
# Only run test if "mysql_upgrade" is found
|
|
--source include/have_mysql_upgrade.inc
|
|
|
|
connection master;
|
|
--disable_warnings
|
|
DROP DATABASE IF EXISTS `#mysql50#mysqltest-1`;
|
|
CREATE DATABASE `#mysql50#mysqltest-1`;
|
|
--enable_warnings
|
|
sync_slave_with_master;
|
|
|
|
connection master;
|
|
let $before_position= query_get_value(SHOW MASTER STATUS, Position, 1);
|
|
|
|
#With '--force' option, mysql_upgrade always executes all sql statements for upgrading.
|
|
#--skip-write-binlog option disables binlog.
|
|
--exec $MYSQL_UPGRADE --skip-write-binlog --skip-verbose --force --user=root > $MYSQLTEST_VARDIR/log/mysql_upgrade.log 2>&1
|
|
sync_slave_with_master;
|
|
|
|
connection master;
|
|
let $after_position= query_get_value(SHOW MASTER STATUS, Position, 1);
|
|
|
|
if (`SELECT '$before_position'='$after_position'`)
|
|
{
|
|
echo Master position is not changed;
|
|
}
|
|
|
|
#Some log events of the mysql_upgrade's will cause errors on slave.
|
|
connection slave;
|
|
STOP SLAVE SQL_THREAD;
|
|
source include/wait_for_slave_sql_to_stop.inc;
|
|
|
|
connection master;
|
|
#With '--force' option, mysql_upgrade always executes all sql statements for upgrading.
|
|
--exec $MYSQL_UPGRADE --skip-verbose --force --user=root > $MYSQLTEST_VARDIR/log/mysql_upgrade.log 2>&1
|
|
|
|
connection master;
|
|
let $after_file= query_get_value(SHOW MASTER STATUS, File, 1);
|
|
let $after_position= query_get_value(SHOW MASTER STATUS, Position, 1);
|
|
|
|
if (!`SELECT '$before_position'='$after_position'`)
|
|
{
|
|
echo Master position has been changed;
|
|
}
|
|
|
|
DROP DATABASE `mysqltest-1`;
|
|
connection slave;
|
|
DROP DATABASE `#mysql50#mysqltest-1`;
|