1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

MDEV-6926: innodb_rows_updated is misleading on slav

Merged Facebook commit dd2d11be7aaf3be270e740fb95cbc4eacb52f4d7
authored by Rongrong Zhong from https://github.com/facebook/mysql-5.6

This fixes MySQL Bug #68220 innodb_rows_updated is misleading on slave
http://bugs.mysql.com/bug.php?id=68220

Added innodb_system_rows_read/inserted/updated/deleted counters
that are the equivalent of innodb_rows_* but that only account for
changes made to system databases (mysql, information_schame and
preformance_schema). These counters will be used on slaves to
differentiated the updates made on system databases from those made on
user databases.

innodb_rows_* status counters are not updated when innodb_system_rows_*
are updated.

dd2d11be7a
This commit is contained in:
Jan Lindström
2014-10-26 07:22:51 +02:00
parent 60e995cfec
commit caeffc7a7d
27 changed files with 1889 additions and 21 deletions

View File

@@ -0,0 +1,59 @@
--source include/have_innodb.inc
--source include/master-slave.inc
#
# Bug#68220: innodb_rows_updated is misleading on slave when *info_repository=TABLE
#
# clean previous tests
--connection master
--disable_warnings
DROP TABLE IF EXISTS testdb.t1;
DROP DATABASE IF EXISTS testdb;
--enable_warnings
--sync_slave_with_master
# created all the base variables at the beginning at the test
--connection master
select variable_value into @master_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
select variable_value into @master_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
select variable_value into @master_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
select variable_value into @master_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
select variable_value into @master_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
select variable_value into @master_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
select variable_value into @master_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
select variable_value into @master_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
--connection slave
select variable_value into @slave_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
select variable_value into @slave_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
select variable_value into @slave_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
select variable_value into @slave_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
select variable_value into @slave_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
select variable_value into @slave_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
select variable_value into @slave_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
select variable_value into @slave_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
--connection master
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testdb.t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB;
# insert a row and show counters on master and slave
INSERT INTO testdb.t1 VALUES (1);
--source suite/rpl/include/rpl_innodb_rows_counters.inc
# update the row and show counters on master and slave
UPDATE t1 SET i=2 WHERE i=1;
--source suite/rpl/include/rpl_innodb_rows_counters.inc
# delete the row and show counters on master and slave
DELETE FROM t1 WHERE i=2;
--source suite/rpl/include/rpl_innodb_rows_counters.inc
# clean the test
DROP TABLE t1;
DROP DATABASE testdb;
--sync_slave_with_master
--source include/rpl_end.inc