From 9b806a572048d434495dff700636e97759e1beac Mon Sep 17 00:00:00 2001 From: saviochen Date: Fri, 7 Jul 2023 17:51:36 +0800 Subject: [PATCH] [feature] Replica buffer pool fast warmup When MySQL has a master-replica switch due to various reasons, since the content in the buffer pool of the replica is different from that of the master, the hit rate of the buffer pool will be low for a long time, and the service will also be affected. This commit introduces a method to quickly warm up the buffer pool of the replica by synchronizing the contents of the buffer pool between the master and replicas. The specific method consists of three steps: 1. Snapshot: Retrieve the buffer pool information from the master and save it to a local file. 2. Transmit: Transfer the information file to the replicas. 3. Recover: Apply the buffer pool information from the file to the buffer pool of the replicas. The detailed usage is as follows: 1. snapshot To take a snapshot of the buffer pool, execute the following statement on the master side: * SET GLOBAL innodb_buffer_pool_sync_snapshot_now=ON; Two triggers are introduced to snapshot bufferpool: * SET GLOBAL innodb_buffer_pool_sync_snapshot_interval=120; * SET GLOBAL innodb_buffer_pool_sync_snapshot_threashold=10; Set the above variables to 0 to disable them. Use the innodb_buffer_pool_sync_snapshot_pct to select the hottest N% of buffer pools to be snapshotted: * SET GLOBAL innodb_buffer_pool_sync_snapshot_pct=60; Use the innodb_buffer_pool_sync_snapshot_status to observe the behavior of the snapshot: * SHOW status LIKE innodb_buffer_pool_sync_snapshot_status; 2. transmit The replica can initiate the copying of the ib_bp_info file from the master node by executing the following statement to configure it: * SET GLOBAL innodb_buffer_pool_sync_transmit_enabled=ON; * SET GLOBAL innodb_buffer_pool_sync_transmit_interval=120; Use the innodb_buffer_pool_sync_transmit_status to observe the behavior of the transmit: * SHOW status LIKE innodb_buffer_pool_sync_transmit_status; 3. recover To recover a buffer pool, execute the following statement on the replica side: * SET GLOBAL innodb_buffer_pool_sync_recover_now=ON; One trigger is introduced to recover the buffer pool. If the following variable is set, buffer pool recovery will be executed after each transmission: * SET GLOBAL innodb_buffer_pool_sync_recover_after_transmit=ON; --- include/bp_sync.h | 41 + include/my_command.h | 2 +- include/mysql.h.pp | 1 + include/mysql/plugin_audit.h.pp | 1 + include/mysql/thread_type.h | 3 +- mysql-test/std_data/partition_data.zip | Bin 0 -> 429472 bytes .../innodb_buffer_pool_snapshot_and_recover.result | 173 ++++ .../t/innodb_buffer_pool_snapshot_and_recover.test | 351 ++++++++ .../suite/perfschema/r/dml_setup_threads.result | 3 +- .../suite/perfschema/r/threads_innodb.result | 1 + .../suite/perfschema/t/dml_setup_threads.test | 2 +- .../suite/rpl/r/innodb_buffer_pool_transmit.result | 79 ++ .../suite/rpl/t/innodb_buffer_pool_transmit.test | 155 ++++ mysql-test/suite/sys_vars/r/all_vars.result | 20 + .../sysschema/r/pr_ps_setup_show_disabled.result | 2 + .../r/pr_ps_setup_show_disabled_instruments.result | 1 + .../sysschema/r/pr_ps_setup_show_enabled.result | 4 + .../r/pr_ps_setup_show_enabled_instruments.result | 1 + share/messages_to_error_log.txt | 12 + sql-common/client.cc | 1 + sql/mysqld.cc | 34 +- sql/mysqld.h | 9 + sql/rpl_info.cc | 5 +- sql/rpl_info.h | 4 + sql/rpl_info_factory.cc | 1 + sql/rpl_mi.cc | 10 + sql/rpl_mi.h | 6 + sql/rpl_replica.cc | 447 +++++++++-- sql/rpl_replica.h | 5 +- sql/sql_parse.cc | 93 +++ sql/sys_vars.cc | 14 + storage/innobase/CMakeLists.txt | 1 + storage/innobase/buf/buf0buf.cc | 19 +- storage/innobase/buf/buf0dump.cc | 40 +- storage/innobase/buf/buf0rea.cc | 13 +- storage/innobase/buf/buf0snapshot.cc | 888 +++++++++++++++++++++ storage/innobase/clone/clone0apply.cc | 2 +- storage/innobase/clone/clone0copy.cc | 2 +- storage/innobase/handler/ha_innodb.cc | 115 ++- storage/innobase/include/buf0buf.h | 20 +- storage/innobase/include/buf0buf.ic | 17 + storage/innobase/include/buf0dump.h | 7 +- storage/innobase/include/buf0rea.h | 14 +- storage/innobase/include/buf0snapshot.h | 60 ++ storage/innobase/include/rem0rec.h | 13 + storage/innobase/include/rem0rec.ic | 27 + storage/innobase/include/srv0srv.h | 22 + storage/innobase/lock/lock0lock.cc | 3 + storage/innobase/srv/srv0srv.cc | 107 +++ storage/innobase/srv/srv0start.cc | 13 +- storage/innobase/trx/trx0i_s.cc | 3 + 51 files changed, 2739 insertions(+), 128 deletions(-) create mode 100644 include/bp_sync.h create mode 100644 mysql-test/std_data/partition_data.zip create mode 100644 mysql-test/suite/innodb/r/innodb_buffer_pool_snapshot_and_recover.result create mode 100644 mysql-test/suite/innodb/t/innodb_buffer_pool_snapshot_and_recover.test create mode 100644 mysql-test/suite/rpl/r/innodb_buffer_pool_transmit.result create mode 100644 mysql-test/suite/rpl/t/innodb_buffer_pool_transmit.test create mode 100644 storage/innobase/buf/buf0snapshot.cc create mode 100644 storage/innobase/include/buf0snapshot.h diff --git a/include/bp_sync.h b/include/bp_sync.h new file mode 100644 index 0000000..d948708 --- /dev/null +++ b/include/bp_sync.h @@ -0,0 +1,41 @@ +/* Copyright (c) 2013, 2023, Oracle and/or its affiliates. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + This program is also distributed with certain software (including + but not limited to OpenSSL) that is licensed under separate terms, + as designated in a particular file or component or in included license + documentation. The authors of MySQL hereby grant you an additional + permission to link the program and your derivative works with the + separately licensed software that they have included with MySQL. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License, version 2.0, for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#ifndef BP_SYNC_INCLUDED +#define BP_SYNC_INCLUDED + +#define BP_SEND_BUFFER_SIZE 1048576 +#define SNAPSHOT_FILENAME "ib_bp_info" +#define BP_END_FLAG 0XFFFFFF +#define BP_END_FLAG_LEN 3 +#define TRANSMIT_STATUS_LEN 2048 +#define TRANSMIT_RETRY_MAX 3 +#define SLEEP_UNIT 50000 + +extern bool innodb_buffer_pool_sync_transmit_enabled; +extern bool innodb_buffer_pool_transmit_exit; +extern bool innodb_buffer_pool_transmit_finished; +extern bool innodb_buffer_pool_current_file_has_sent; +extern ulonglong innodb_buffer_pool_sync_transmit_interval; +extern char innodb_buffer_pool_sync_transmit_status[TRANSMIT_STATUS_LEN]; + +#endif // BP_SYNC_INCLUDED diff --git a/include/my_command.h b/include/my_command.h index d38c9fe..7e69f4e 100644 --- a/include/my_command.h +++ b/include/my_command.h @@ -95,7 +95,7 @@ enum enum_server_command { COM_CLONE, COM_SUBSCRIBE_GROUP_REPLICATION_STREAM, /* don't forget to update const char *command_name[] in sql_parse.cc */ - + COM_BP_TRANSMIT, /* Must be last */ COM_END /**< Not a real command. Refused. */ }; diff --git a/include/mysql.h.pp b/include/mysql.h.pp index 9456b05..1694f2b 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -88,6 +88,7 @@ enum enum_server_command { COM_RESET_CONNECTION, COM_CLONE, COM_SUBSCRIBE_GROUP_REPLICATION_STREAM, + COM_BP_TRANSMIT, COM_END }; #include "my_compress.h" diff --git a/include/mysql/plugin_audit.h.pp b/include/mysql/plugin_audit.h.pp index 8db4d6e..5026d0d 100644 --- a/include/mysql/plugin_audit.h.pp +++ b/include/mysql/plugin_audit.h.pp @@ -172,6 +172,7 @@ enum enum_server_command { COM_RESET_CONNECTION, COM_CLONE, COM_SUBSCRIBE_GROUP_REPLICATION_STREAM, + COM_BP_TRANSMIT, COM_END }; #include "my_sqlcommand.h" diff --git a/include/mysql/thread_type.h b/include/mysql/thread_type.h index 27751c4..02fe837 100644 --- a/include/mysql/thread_type.h +++ b/include/mysql/thread_type.h @@ -46,7 +46,8 @@ enum enum_thread_type { SYSTEM_THREAD_SERVER_INITIALIZE = 2048, SYSTEM_THREAD_INIT_FILE = 4096, SYSTEM_THREAD_SERVER_UPGRADE = 8192, - SYSTEM_THREAD_GROUP_REPLICATION_CONNECTION = 16384 + SYSTEM_THREAD_GROUP_REPLICATION_CONNECTION = 16384, + SYSTEM_THREAD_SLAVE_TRANSMIT = 32768 }; #endif /* THREAD_TYPE_INCLUDED */ diff --git a/mysql-test/std_data/partition_data.zip b/mysql-test/std_data/partition_data.zip new file mode 100644 index 0000000000000000000000000000000000000000..106929069a696106f1873b34db051e928404955b GIT binary patch literal 429472 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≪gxBxg_qSww0U4FP6Zz1y~- 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 z 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

M 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 literal 0 HcmV?d00001 diff --git a/mysql-test/suite/innodb/r/innodb_buffer_pool_snapshot_and_recover.result b/mysql-test/suite/innodb/r/innodb_buffer_pool_snapshot_and_recover.result new file mode 100644 index 0000000..1ac09d5 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_buffer_pool_snapshot_and_recover.result @@ -0,0 +1,173 @@ +set @old_snapshot_pct = @@innodb_buffer_pool_sync_snapshot_pct; +set @old_recover_pct = @@innodb_buffer_pool_sync_recover_pct; +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = 100; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = 100; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_snapshot_status"; +Variable_name Value +Innodb_buffer_pool_sync_snapshot_status Snapshoting of buffer pool not started +SET global innodb_buffer_pool_sync_snapshot_threshold = 2; +SET global innodb_buffer_pool_sync_snapshot_interval = 0; +USE test; +CREATE TABLE `t` ( +`a` int NOT NULL AUTO_INCREMENT, +`b` varchar(7000) DEFAULT NULL, +PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; +CREATE PROCEDURE load_t (count INT UNSIGNED) +BEGIN +DECLARE s INT UNSIGNED DEFAULT 1; +DECLARE c VARCHAR(7000) DEFAULT REPEAT(CHAR(97+rand()*26), 7000); +WHILE s <= count DO +INSERT INTO t SELECT NULL,c; +SET s=s+1; +END WHILE; +END; +// +call load_t(1000); +SET global innodb_buffer_pool_sync_snapshot_threshold = 0; +SET global innodb_buffer_pool_sync_snapshot_interval = 2; +SET global innodb_buffer_pool_sync_snapshot_interval = 0; +SET global innodb_buffer_pool_sync_snapshot_now = ON; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_recover_status"; +Variable_name Value +Innodb_buffer_pool_sync_recover_status Recovering of buffer pool not started +SET global innodb_buffer_pool_sync_recover_now = ON; +CREATE TABLE `types` ( +`a` tinyint NOT NULL, +`b` smallint DEFAULT NULL, +`c` mediumint DEFAULT NULL, +`d` int DEFAULT NULL, +`e` bigint DEFAULT NULL, +`f` float DEFAULT NULL, +`g` double DEFAULT NULL, +`h` decimal(20,10) DEFAULT NULL, +`i` char(10) DEFAULT NULL, +`j` varchar(10) DEFAULT NULL, +`k` tinyblob, +`l` tinytext, +`m` blob, +`n` text, +`o` mediumblob, +`p` mediumtext, +`q` longblob, +`r` longtext, +`s` varbinary(100) DEFAULT NULL, +`t` binary(100) DEFAULT NULL, +`u` date DEFAULT NULL, +`v` time DEFAULT NULL, +`w` year DEFAULT NULL, +`x` datetime DEFAULT NULL, +`y` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, +PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; +INSERT INTO types SELECT -128, 32767, -8388608, -2147483648, -92333720368775808, -3.40282, -43243.4025282, -4324324243.4025282, repeat('a', 10), repeat('b', 10), repeat('c', 200), repeat('d', 200), repeat('e', 6000),repeat('f', 6000), repeat('g', 6000), repeat('h', 6000),repeat('i', 6000), repeat('j', 6000),repeat('k', 20),repeat('l', 20), '2018-12-20', '10:01:01', '2019', '1000-01-01 00:00:00', '2019-01-01 00:00:00'; +INSERT INTO types SELECT 127, NULL ,8388607, 2147483647, 92233720368547707, 1.175494, 43243.4025282, 4324324243.40252, repeat('\'', 10), repeat('\\', 10), repeat('\*', 200), repeat('\#', 200), repeat('\'', 6000), repeat('\'', 6000), repeat('\'', 6000), repeat('\'', 6000),repeat('\'', 6000),repeat('\'', 6000), repeat('\'', 20), repeat('\'', 20), '2019-12-20', '12:01:01', '2018', '2000-01-01 02:00:00', '1999-01-01 00:00:00'; +CREATE TABLE `partition_t` ( +`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', +`uid` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'uid', +`avatar_name` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'avatar_name', +`avatar_url` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'avatar_url', +`pt` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'pt', +`dhash` char(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, +PRIMARY KEY (`id`,`pt`), +KEY `uid_idx` (`uid`(191)), +KEY `avatar_name_idx` (`avatar_name`(191)), +KEY `pt_idx` (`pt`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +/*!50500 PARTITION BY LIST COLUMNS(pt) +(PARTITION `preserve` VALUES IN ('preserve') ENGINE = InnoDB, +PARTITION p20181109 VALUES IN ('2018-11-09') ENGINE = InnoDB, +PARTITION p20181110 VALUES IN ('2018-11-10') ENGINE = InnoDB, +PARTITION p20181111 VALUES IN ('2018-11-11') ENGINE = InnoDB, +PARTITION p20181112 VALUES IN ('2018-11-12') ENGINE = InnoDB, +PARTITION p20181113 VALUES IN ('2018-11-13') ENGINE = InnoDB, +PARTITION p20181114 VALUES IN ('2018-11-14') ENGINE = InnoDB, +PARTITION p20181115 VALUES IN ('2018-11-15') ENGINE = InnoDB, +PARTITION p20181116 VALUES IN ('2018-11-16') ENGINE = InnoDB, +PARTITION p20181117 VALUES IN ('2018-11-17') ENGINE = InnoDB, +PARTITION p20181118 VALUES IN ('2018-11-18') ENGINE = InnoDB, +PARTITION p20181119 VALUES IN ('2018-11-19') ENGINE = InnoDB) */; +CREATE TABLE `news` ( +`id` int unsigned NOT NULL AUTO_INCREMENT, +`catid` smallint unsigned NOT NULL DEFAULT '0', +`typeid` smallint unsigned NOT NULL, +`title` varchar(150) NOT NULL DEFAULT '', +`style` char(24) NOT NULL DEFAULT '', +`thumb` varchar(200) NOT NULL DEFAULT '', +`keywords` varchar(100) NOT NULL DEFAULT '', +`description` mediumtext NOT NULL, +`posids` tinyint unsigned NOT NULL DEFAULT '0', +`url` char(100) NOT NULL, +`listorder` tinyint unsigned NOT NULL DEFAULT '0', +`status` tinyint unsigned NOT NULL DEFAULT '1', +`sysadd` tinyint unsigned NOT NULL DEFAULT '0', +`islink` tinyint unsigned NOT NULL DEFAULT '0', +`username` char(20) NOT NULL, +`inputtime` int unsigned NOT NULL DEFAULT '0', +`updatetime` int unsigned NOT NULL DEFAULT '0', +`subtitle` varchar(255) NOT NULL DEFAULT '', +`passname` varchar(255) NOT NULL DEFAULT '', +`modifyname` varchar(255) NOT NULL DEFAULT '', +`ztsc` tinyint NOT NULL DEFAULT '0', +`yuansuid` mediumint(9) NOT NULL DEFAULT '0' COMMENT '游戏ID', +`zhnaduiid` mediumint(9) NOT NULL DEFAULT '0' COMMENT '战队ID', +`duiyaunid` mediumint(9) NOT NULL DEFAULT '0' COMMENT '成员ID', +`gameid` mediumint(8) NOT NULL DEFAULT '0' COMMENT '哪个游戏', +`gameclassid` tinyint(3) NOT NULL COMMENT '属于什么游戏', +`baidu` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否原创', +`gamename` varchar(50) NOT NULL COMMENT '游戏名称', +PRIMARY KEY (`id`), +KEY `status` (`status`,`listorder`,`id`), +KEY `listorder` (`catid`,`status`,`listorder`,`id`), +KEY `catid` (`catid`,`status`,`id`), +KEY `username` (`username`), +KEY `updatetime` (`updatetime`), +KEY `inputtime` (`inputtime`), +KEY `status_2` (`status`,`username`) USING BTREE, +KEY `title` (`title`), +KEY `gameid` (`gameid`), +KEY `duiyaunid` (`duiyaunid`), +KEY `zhnaduiid` (`zhnaduiid`), +KEY `yuansuid` (`yuansuid`), +KEY `gameid_2` (`gameid`,`catid`) USING BTREE, +KEY `catid_2` (`catid`), +KEY `keywords` (`keywords`), +KEY `modifyname` (`modifyname`), +KEY `status_3` (`status`), +KEY `gameclassid` (`gameclassid`,`gameid`) USING BTREE, +KEY `baidu` (`baidu`,`status`,`username`) USING BTREE, +KEY `status_4` (`status`,`catid`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=29209518 DEFAULT CHARSET=UTF8MB4; +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +INSERT INTO `test`.`news` (`id`, `catid`, `typeid`, `title`, `style`, `thumb`, `keywords`, `description`, `posids`, `url`, `listorder`, `status`, `sysadd`, `islink`, `username`, `inputtime`, `updatetime`, `subtitle`, `passname`, `modifyname`, `ztsc`, `yuansuid`, `zhnaduiid`, `duiyaunid`, `gameid`, `gameclassid`, `baidu`, `gamename`) VALUES ('20676114', '19', '0', '甲乙丙丁', '', '', '甲乙丙丁', '@@?value.islive$$@@=', '0', 'http://www.abcd.com', '0', '1', '1', '0', 'meihua', '1558139', '15599', '甲乙丙丁', '', '', '0', '0', '0', '0', '0', '0', '0', ''); +INSERT INTO `test`.`news` (`id`, `catid`, `typeid`, `title`, `style`, `thumb`, `keywords`, `description`, `posids`, `url`, `listorder`, `status`, `sysadd`, `islink`, `username`, `inputtime`, `updatetime`, `subtitle`, `passname`, `modifyname`, `ztsc`, `yuansuid`, `zhnaduiid`, `duiyaunid`, `gameid`, `gameclassid`, `baidu`, `gamename`) VALUES ('20676115', '19', '0', '甲乙丙丁', '', 'http://picc.com', '百花般齐放', '测试', '0', 'http://www.yx.com', '0', '1', '1', '0', 'meihua', '1550000000', '1560000000', '甲乙丙丁', '', '', '0', '0', '0', '0', '0', '0', '0', ''); +INSERT INTO `test`.`news` (`id`, `catid`, `typeid`, `title`, `style`, `thumb`, `keywords`, `description`, `posids`, `url`, `listorder`, `status`, `sysadd`, `islink`, `username`, `inputtime`, `updatetime`, `subtitle`, `passname`, `modifyname`, `ztsc`, `yuansuid`, `zhnaduiid`, `duiyaunid`, `gameid`, `gameclassid`, `baidu`, `gamename`) VALUES ('20676116', '19', '0', '增加', '', '', '预计', '@@?value.islive$$@@=', '0', 'http://www.hao.com/', '0', '1', '1', '0', 'meihua', '1570000000', '1580000000', '国际', '', '', '0', '0', '0', '0', '0', '0', '0', ''); +set global innodb_buffer_pool_sync_snapshot_now = on; +set global innodb_buffer_pool_sync_recover_now = ON; +DROP TABLE t; +set global innodb_buffer_pool_sync_recover_now = ON; +DROP INDEX listorder ON news; +set global innodb_buffer_pool_sync_recover_now = ON; +ALTER TABLE types DROP COLUMN b; +ALTER TABLE news DROP ztsc; +set global innodb_buffer_pool_sync_recover_now = ON; +set global innodb_buffer_pool_sync_recover_now = ON; +call mtr.add_suppression("\\[ERROR\\] .* Error parsing"); +set global innodb_buffer_pool_sync_snapshot_pct = 80; +set global innodb_buffer_pool_sync_recover_pct = 10; +set global innodb_buffer_pool_sync_snapshot_now = ON; +set global innodb_buffer_pool_sync_recover_now = ON; +set global innodb_buffer_pool_sync_recover_pct = 100; +set global innodb_buffer_pool_sync_recover_now = ON; +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = @old_snapshot_pct; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = @old_recover_pct; +DROP PROCEDURE load_t; +DROP TABLE types; +DROP TABLE partition_t; +DROP TABLE news; diff --git a/mysql-test/suite/innodb/t/innodb_buffer_pool_snapshot_and_recover.test b/mysql-test/suite/innodb/t/innodb_buffer_pool_snapshot_and_recover.test new file mode 100644 index 0000000..6fbc828 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_buffer_pool_snapshot_and_recover.test @@ -0,0 +1,351 @@ +# +# Test for the functionality of InnoDB Buffer Pool snapshot/recover +# + +--let $file = `SELECT CONCAT(@@datadir, "ib_bp_info")` + +--error 0,1 +--remove_file $file + +# +# Part 1: Start testing bufferpool snapshot +# + +set @old_snapshot_pct = @@innodb_buffer_pool_sync_snapshot_pct; +set @old_recover_pct = @@innodb_buffer_pool_sync_recover_pct; +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = 100; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = 100; + +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_snapshot_status"; + +# Set bufferpool change percentage threshold to trigger snapshot +SET global innodb_buffer_pool_sync_snapshot_threshold = 2; +SET global innodb_buffer_pool_sync_snapshot_interval = 0; + +# Create a table and populate it with some data +USE test; +CREATE TABLE `t` ( + `a` int NOT NULL AUTO_INCREMENT, + `b` varchar(7000) DEFAULT NULL, + PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; + +DELIMITER //; +CREATE PROCEDURE load_t (count INT UNSIGNED) +BEGIN +DECLARE s INT UNSIGNED DEFAULT 1; +DECLARE c VARCHAR(7000) DEFAULT REPEAT(CHAR(97+rand()*26), 7000); +WHILE s <= count DO +INSERT INTO t SELECT NULL,c; +SET s=s+1; +END WHILE; +END; +// +DELIMITER ;// + +call load_t(1000); + +# Snapshot was triggered while insertion, wait for the dump to complete +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 34) = 'Buffer pool(s) snapshot started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_snapshot_status'; +--enable_warnings +--source include/wait_condition.inc + +# Confirm the file has been created +--file_exists $file +--remove_file $file + +# Disable threshold trigger and set bufferpool time interval to trigger snapshot +SET global innodb_buffer_pool_sync_snapshot_threshold = 0; +SET global innodb_buffer_pool_sync_snapshot_interval = 2; + +# Snapshot was triggered after 2 seconds, wait for the dump to complete +# Wait 1 more seconds than snpashot_interval +sleep 3; +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 34) = 'Buffer pool(s) snapshot started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_snapshot_status'; +--enable_warnings +--source include/wait_condition.inc + +# Confirm the file has been created +--file_exists $file +--remove_file $file + +# Snapshot was triggered after 2 seconds, wait for the dump to complete +# Wait 1 more seconds than snpashot_interval +sleep 3; + +# Confirm the file has been created +--file_exists $file +--remove_file $file + +# Disable interval trigger and snapshot bufferpool immediately +SET global innodb_buffer_pool_sync_snapshot_interval = 0; +SET global innodb_buffer_pool_sync_snapshot_now = ON; + +# Wait 1 second to complete snapshot +sleep 1; + +# Confirm the file has been created +--file_exists $file + +# +# Part 2: Start testing bufferpool recover +# +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_recover_status"; + +# Normal case: Test load ib_bp_info and recover bufferpool +SET global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +# Test different data types, partition table and UTF-8 table +CREATE TABLE `types` ( + `a` tinyint NOT NULL, + `b` smallint DEFAULT NULL, + `c` mediumint DEFAULT NULL, + `d` int DEFAULT NULL, + `e` bigint DEFAULT NULL, + `f` float DEFAULT NULL, + `g` double DEFAULT NULL, + `h` decimal(20,10) DEFAULT NULL, + `i` char(10) DEFAULT NULL, + `j` varchar(10) DEFAULT NULL, + `k` tinyblob, + `l` tinytext, + `m` blob, + `n` text, + `o` mediumblob, + `p` mediumtext, + `q` longblob, + `r` longtext, + `s` varbinary(100) DEFAULT NULL, + `t` binary(100) DEFAULT NULL, + `u` date DEFAULT NULL, + `v` time DEFAULT NULL, + `w` year DEFAULT NULL, + `x` datetime DEFAULT NULL, + `y` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; + +INSERT INTO types SELECT -128, 32767, -8388608, -2147483648, -92333720368775808, -3.40282, -43243.4025282, -4324324243.4025282, repeat('a', 10), repeat('b', 10), repeat('c', 200), repeat('d', 200), repeat('e', 6000),repeat('f', 6000), repeat('g', 6000), repeat('h', 6000),repeat('i', 6000), repeat('j', 6000),repeat('k', 20),repeat('l', 20), '2018-12-20', '10:01:01', '2019', '1000-01-01 00:00:00', '2019-01-01 00:00:00'; + +INSERT INTO types SELECT 127, NULL ,8388607, 2147483647, 92233720368547707, 1.175494, 43243.4025282, 4324324243.40252, repeat('\'', 10), repeat('\\', 10), repeat('\*', 200), repeat('\#', 200), repeat('\'', 6000), repeat('\'', 6000), repeat('\'', 6000), repeat('\'', 6000),repeat('\'', 6000),repeat('\'', 6000), repeat('\'', 20), repeat('\'', 20), '2019-12-20', '12:01:01', '2018', '2000-01-01 02:00:00', '1999-01-01 00:00:00'; + +CREATE TABLE `partition_t` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `uid` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'uid', + `avatar_name` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'avatar_name', + `avatar_url` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'avatar_url', + `pt` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'pt', + `dhash` char(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`,`pt`), + KEY `uid_idx` (`uid`(191)), + KEY `avatar_name_idx` (`avatar_name`(191)), + KEY `pt_idx` (`pt`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +/*!50500 PARTITION BY LIST COLUMNS(pt) +(PARTITION `preserve` VALUES IN ('preserve') ENGINE = InnoDB, + PARTITION p20181109 VALUES IN ('2018-11-09') ENGINE = InnoDB, + PARTITION p20181110 VALUES IN ('2018-11-10') ENGINE = InnoDB, + PARTITION p20181111 VALUES IN ('2018-11-11') ENGINE = InnoDB, + PARTITION p20181112 VALUES IN ('2018-11-12') ENGINE = InnoDB, + PARTITION p20181113 VALUES IN ('2018-11-13') ENGINE = InnoDB, + PARTITION p20181114 VALUES IN ('2018-11-14') ENGINE = InnoDB, + PARTITION p20181115 VALUES IN ('2018-11-15') ENGINE = InnoDB, + PARTITION p20181116 VALUES IN ('2018-11-16') ENGINE = InnoDB, + PARTITION p20181117 VALUES IN ('2018-11-17') ENGINE = InnoDB, + PARTITION p20181118 VALUES IN ('2018-11-18') ENGINE = InnoDB, + PARTITION p20181119 VALUES IN ('2018-11-19') ENGINE = InnoDB) */; + +LET $MYSQL_DATA_DIR = `select @@datadir`; +--exec unzip -qo $MYSQL_TEST_DIR/std_data/partition_data.zip -d $MYSQL_DATA_DIR +--exec $MYSQL test < $MYSQL_DATA_DIR/partition_t.sql + +CREATE TABLE `news` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `catid` smallint unsigned NOT NULL DEFAULT '0', + `typeid` smallint unsigned NOT NULL, + `title` varchar(150) NOT NULL DEFAULT '', + `style` char(24) NOT NULL DEFAULT '', + `thumb` varchar(200) NOT NULL DEFAULT '', + `keywords` varchar(100) NOT NULL DEFAULT '', + `description` mediumtext NOT NULL, + `posids` tinyint unsigned NOT NULL DEFAULT '0', + `url` char(100) NOT NULL, + `listorder` tinyint unsigned NOT NULL DEFAULT '0', + `status` tinyint unsigned NOT NULL DEFAULT '1', + `sysadd` tinyint unsigned NOT NULL DEFAULT '0', + `islink` tinyint unsigned NOT NULL DEFAULT '0', + `username` char(20) NOT NULL, + `inputtime` int unsigned NOT NULL DEFAULT '0', + `updatetime` int unsigned NOT NULL DEFAULT '0', + `subtitle` varchar(255) NOT NULL DEFAULT '', + `passname` varchar(255) NOT NULL DEFAULT '', + `modifyname` varchar(255) NOT NULL DEFAULT '', + `ztsc` tinyint NOT NULL DEFAULT '0', + `yuansuid` mediumint(9) NOT NULL DEFAULT '0' COMMENT '游戏ID', + `zhnaduiid` mediumint(9) NOT NULL DEFAULT '0' COMMENT '战队ID', + `duiyaunid` mediumint(9) NOT NULL DEFAULT '0' COMMENT '成员ID', + `gameid` mediumint(8) NOT NULL DEFAULT '0' COMMENT '哪个游戏', + `gameclassid` tinyint(3) NOT NULL COMMENT '属于什么游戏', + `baidu` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否原创', + `gamename` varchar(50) NOT NULL COMMENT '游戏名称', + PRIMARY KEY (`id`), + KEY `status` (`status`,`listorder`,`id`), + KEY `listorder` (`catid`,`status`,`listorder`,`id`), + KEY `catid` (`catid`,`status`,`id`), + KEY `username` (`username`), + KEY `updatetime` (`updatetime`), + KEY `inputtime` (`inputtime`), + KEY `status_2` (`status`,`username`) USING BTREE, + KEY `title` (`title`), + KEY `gameid` (`gameid`), + KEY `duiyaunid` (`duiyaunid`), + KEY `zhnaduiid` (`zhnaduiid`), + KEY `yuansuid` (`yuansuid`), + KEY `gameid_2` (`gameid`,`catid`) USING BTREE, + KEY `catid_2` (`catid`), + KEY `keywords` (`keywords`), + KEY `modifyname` (`modifyname`), + KEY `status_3` (`status`), + KEY `gameclassid` (`gameclassid`,`gameid`) USING BTREE, + KEY `baidu` (`baidu`,`status`,`username`) USING BTREE, + KEY `status_4` (`status`,`catid`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=29209518 DEFAULT CHARSET=UTF8MB4; + +INSERT INTO `test`.`news` (`id`, `catid`, `typeid`, `title`, `style`, `thumb`, `keywords`, `description`, `posids`, `url`, `listorder`, `status`, `sysadd`, `islink`, `username`, `inputtime`, `updatetime`, `subtitle`, `passname`, `modifyname`, `ztsc`, `yuansuid`, `zhnaduiid`, `duiyaunid`, `gameid`, `gameclassid`, `baidu`, `gamename`) VALUES ('20676114', '19', '0', '甲乙丙丁', '', '', '甲乙丙丁', '@@?value.islive$$@@=', '0', 'http://www.abcd.com', '0', '1', '1', '0', 'meihua', '1558139', '15599', '甲乙丙丁', '', '', '0', '0', '0', '0', '0', '0', '0', ''); + +INSERT INTO `test`.`news` (`id`, `catid`, `typeid`, `title`, `style`, `thumb`, `keywords`, `description`, `posids`, `url`, `listorder`, `status`, `sysadd`, `islink`, `username`, `inputtime`, `updatetime`, `subtitle`, `passname`, `modifyname`, `ztsc`, `yuansuid`, `zhnaduiid`, `duiyaunid`, `gameid`, `gameclassid`, `baidu`, `gamename`) VALUES ('20676115', '19', '0', '甲乙丙丁', '', 'http://picc.com', '百花般齐放', '测试', '0', 'http://www.yx.com', '0', '1', '1', '0', 'meihua', '1550000000', '1560000000', '甲乙丙丁', '', '', '0', '0', '0', '0', '0', '0', '0', ''); + +INSERT INTO `test`.`news` (`id`, `catid`, `typeid`, `title`, `style`, `thumb`, `keywords`, `description`, `posids`, `url`, `listorder`, `status`, `sysadd`, `islink`, `username`, `inputtime`, `updatetime`, `subtitle`, `passname`, `modifyname`, `ztsc`, `yuansuid`, `zhnaduiid`, `duiyaunid`, `gameid`, `gameclassid`, `baidu`, `gamename`) VALUES ('20676116', '19', '0', '增加', '', '', '预计', '@@?value.islive$$@@=', '0', 'http://www.hao.com/', '0', '1', '1', '0', 'meihua', '1570000000', '1580000000', '国际', '', '', '0', '0', '0', '0', '0', '0', '0', ''); +--remove_file $file +set global innodb_buffer_pool_sync_snapshot_now = on; +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 34) = 'Buffer pool(s) snapshot started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_snapshot_status'; +--enable_warnings +--source include/wait_condition.inc +--file_exists $file + +set global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +# Test none exist table +DROP TABLE t; +set global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +# Test none exist index +DROP INDEX listorder ON news; +set global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +# Test none exist column +ALTER TABLE types DROP COLUMN b; +ALTER TABLE news DROP ztsc; +set global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +# Test wrong ib_bp_info +--exec echo "abcd" >> $file +set global innodb_buffer_pool_sync_recover_now = ON; + +call mtr.add_suppression("\\[ERROR\\] .* Error parsing"); +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 13) = 'Error parsing' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +# Test snapshot and recover pages limit +set global innodb_buffer_pool_sync_snapshot_pct = 80; +set global innodb_buffer_pool_sync_recover_pct = 10; + +set global innodb_buffer_pool_sync_snapshot_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 34) = 'Buffer pool(s) snapshot started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_snapshot_status'; +--enable_warnings +--source include/wait_condition.inc +--file_exists $file + +set global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 65) = 'Buffer pool(s) recover aborted because it reached the pages limit' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +set global innodb_buffer_pool_sync_recover_pct = 100; +set global innodb_buffer_pool_sync_recover_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = @old_snapshot_pct; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = @old_recover_pct; + +# Clean +DROP PROCEDURE load_t; +DROP TABLE types; +DROP TABLE partition_t; +DROP TABLE news; + +--remove_file $file diff --git a/mysql-test/suite/perfschema/r/dml_setup_threads.result b/mysql-test/suite/perfschema/r/dml_setup_threads.result index 11a9b21..63c7f04 100644 --- a/mysql-test/suite/perfschema/r/dml_setup_threads.result +++ b/mysql-test/suite/perfschema/r/dml_setup_threads.result @@ -1,9 +1,10 @@ select * from performance_schema.setup_threads; select * from performance_schema.setup_threads -order by name limit 12; +order by name limit 13; NAME ENABLED HISTORY PROPERTIES VOLATILITY DOCUMENTATION thread/innodb/buf_dump_thread YES YES singleton 0 NULL thread/innodb/buf_resize_thread YES YES singleton 0 NULL +thread/innodb/buf_synchronize_thread YES YES 0 NULL thread/innodb/clone_ddl_thread YES YES singleton 0 NULL thread/innodb/clone_gtid_thread YES YES singleton 0 NULL thread/innodb/ddl_thread YES YES 0 NULL diff --git a/mysql-test/suite/perfschema/r/threads_innodb.result b/mysql-test/suite/perfschema/r/threads_innodb.result index 13b09ba..113a91c 100644 --- a/mysql-test/suite/perfschema/r/threads_innodb.result +++ b/mysql-test/suite/perfschema/r/threads_innodb.result @@ -9,6 +9,7 @@ GROUP BY name; name type processlist_user processlist_host processlist_db processlist_command processlist_state processlist_info parent_thread_id role instrumented thread/innodb/buf_dump_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL YES thread/innodb/buf_resize_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL YES +thread/innodb/buf_synchronize_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL YES thread/innodb/dict_stats_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL YES thread/innodb/fts_optimize_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL YES thread/innodb/io_ibuf_thread BACKGROUND NULL NULL NULL NULL NULL NULL NULL NULL YES diff --git a/mysql-test/suite/perfschema/t/dml_setup_threads.test b/mysql-test/suite/perfschema/t/dml_setup_threads.test index 9f69706..2d3685a 100644 --- a/mysql-test/suite/perfschema/t/dml_setup_threads.test +++ b/mysql-test/suite/perfschema/t/dml_setup_threads.test @@ -12,7 +12,7 @@ select * from performance_schema.setup_threads; --enable_result_log select * from performance_schema.setup_threads - order by name limit 12; + order by name limit 13; --disable_result_log select * from performance_schema.setup_threads diff --git a/mysql-test/suite/rpl/r/innodb_buffer_pool_transmit.result b/mysql-test/suite/rpl/r/innodb_buffer_pool_transmit.result new file mode 100644 index 0000000..127361c --- /dev/null +++ b/mysql-test/suite/rpl/r/innodb_buffer_pool_transmit.result @@ -0,0 +1,79 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the connection metadata repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START REPLICA; see the 'START REPLICA Syntax' in the MySQL Manual for more information. +[connection master] +set @old_snapshot_pct = @@innodb_buffer_pool_sync_snapshot_pct; +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = 100; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status ib_bp_info transmition not started +set @old_transmit_enabled = @@innodb_buffer_pool_sync_transmit_enabled; +set @old_transmit_interval = @@innodb_buffer_pool_sync_transmit_interval; +set @old_recover_after_transmit = @@innodb_buffer_pool_sync_recover_after_transmit; +set @old_recover_pct = @@innodb_buffer_pool_sync_recover_pct; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = 100; +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = OFF; +# Check STOP REPLICA && START REPLICA when slave is on and enabled is off +STOP REPLICA; +START REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status ib_bp_info transmition not started +# Check START REPLICA && STOP REPLICA when slave is off and enabled is off +STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status ib_bp_info transmition not started +START REPLICA; +STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status ib_bp_info transmition not started +# Set slave is on and enabled is on +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = ON; +START REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status slave_transmit thread for channel '': connected to master 'root@127.0.0.1:MASTER_PORT' +# Check STOP REPLICA && START REPLICA when slave is on and enabled is on +STOP REPLICA; +START REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status slave_transmit thread for channel '': connected to master 'root@127.0.0.1:MASTER_PORT' +# check START REPLICA && STOP REPLICA when slave is off and enabled is on +STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status slave_transmit thread exited +START REPLICA; +STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status slave_transmit thread exited +START REPLICA; +CREATE TABLE ib_bp_test +(a INT AUTO_INCREMENT, b VARCHAR(64), c TEXT, PRIMARY KEY (a), KEY (b, c(128))) +ENGINE=INNODB; +SET GLOBAL innodb_buffer_pool_sync_snapshot_now = ON; +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = ON; +STOP REPLICA; +START REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +Variable_name Value +Innodb_buffer_pool_sync_transmit_status slave_transmit thread for channel '': connected to master 'root@127.0.0.1:MASTER_PORT' +SET GLOBAL innodb_buffer_pool_sync_transmit_interval = 5; + +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_recover_status"; +Variable_name Value +Innodb_buffer_pool_sync_recover_status Recovering of buffer pool not started +SET GLOBAL innodb_buffer_pool_sync_recover_after_transmit = ON; +SET GLOBAL innodb_buffer_pool_sync_snapshot_now = ON; +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = @old_transmit_enabled; +SET GLOBAL innodb_buffer_pool_sync_transmit_interval = @old_transmit_interval; +SET GLOBAL innodb_buffer_pool_sync_recover_after_transmit = @old_recover_after_transmit; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = @old_recover_pct; +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = @old_snapshot_pct; +DROP TABLE ib_bp_test; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/innodb_buffer_pool_transmit.test b/mysql-test/suite/rpl/t/innodb_buffer_pool_transmit.test new file mode 100644 index 0000000..28a2300 --- /dev/null +++ b/mysql-test/suite/rpl/t/innodb_buffer_pool_transmit.test @@ -0,0 +1,155 @@ +--source include/master-slave.inc + +connection master; +set @old_snapshot_pct = @@innodb_buffer_pool_sync_snapshot_pct; + +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = 100; + +connection slave; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +set @old_transmit_enabled = @@innodb_buffer_pool_sync_transmit_enabled; +set @old_transmit_interval = @@innodb_buffer_pool_sync_transmit_interval; +set @old_recover_after_transmit = @@innodb_buffer_pool_sync_recover_after_transmit; +set @old_recover_pct = @@innodb_buffer_pool_sync_recover_pct; + +SET GLOBAL innodb_buffer_pool_sync_recover_pct = 100; + +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = OFF; +--echo # Check STOP REPLICA && START REPLICA when slave is on and enabled is off +STOP REPLICA; START REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +--echo # Check START REPLICA && STOP REPLICA when slave is off and enabled is off +STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +START REPLICA; STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +--echo # Set slave is on and enabled is on +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = ON; +START REPLICA; +sleep 1; +replace_result $MASTER_MYPORT MASTER_PORT; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +--echo # Check STOP REPLICA && START REPLICA when slave is on and enabled is on +STOP REPLICA; START REPLICA; +sleep 1; +replace_result $MASTER_MYPORT MASTER_PORT; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +--echo # check START REPLICA && STOP REPLICA when slave is off and enabled is on +STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +START REPLICA; STOP REPLICA; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; +START REPLICA; + +# Prepare master ib_bp_info file +connection master; + +--disable_query_log +call mtr.add_suppression('.*Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.*'); +--enable_query_log + +# Create a table and populate it with some data +--disable_warnings +CREATE TABLE ib_bp_test +(a INT AUTO_INCREMENT, b VARCHAR(64), c TEXT, PRIMARY KEY (a), KEY (b, c(128))) +ENGINE=INNODB; + +# Here we end up with 16382 rows in the table +--disable_query_log +INSERT INTO ib_bp_test (b, c) VALUES (REPEAT('b', 64), REPEAT('c', 256)); +INSERT INTO ib_bp_test (b, c) VALUES (REPEAT('B', 64), REPEAT('C', 256)); +let $i=12; +while ($i) +{ + --eval INSERT INTO ib_bp_test (b, c) VALUES ($i, $i * $i); + INSERT INTO ib_bp_test (b, c) SELECT b, c FROM ib_bp_test; + dec $i; +} +--enable_query_log +--enable_warnings + +# Snapshot bufferpool +SET GLOBAL innodb_buffer_pool_sync_snapshot_now = ON; + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 34) = 'Buffer pool(s) snapshot started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_snapshot_status'; +--enable_warnings +--source include/wait_condition.inc + +# Confirm ib_bp_info +--let $file = `SELECT CONCAT(@@datadir, "ib_bp_info")` +--file_exists $file + +# Start testing bufferpool transmit +connection slave; + +# Start transmit thread +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = ON; +STOP REPLICA; +START REPLICA; + +# Check whether transmit thread was created +sleep 1; +replace_result $MASTER_MYPORT MASTER_PORT; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_transmit_status"; + +# Check if ib_bp_info can be transmited +SET GLOBAL innodb_buffer_pool_sync_transmit_interval = 5; + +sleep 10; +--echo $file1 +--let $file1 = `SELECT CONCAT(@@datadir, "ib_bp_info")` +--file_exists $file1 + +# Check innodb_buffer_pool_sync_transmit_status in master +connection master; + +# Check innodb_buffer_pool_sync_recover_after_transmit +connection slave; +SHOW STATUS WHERE Variable_name = "innodb_buffer_pool_sync_recover_status"; +SET GLOBAL innodb_buffer_pool_sync_recover_after_transmit = ON; + +connection master; +SET GLOBAL innodb_buffer_pool_sync_snapshot_now = ON; + +connection slave; +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 34) = 'Buffer pool(s) transmit started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_transmit_status'; +--enable_warnings +--source include/wait_condition.inc + +--let $file1 = `SELECT CONCAT(@@datadir, "ib_bp_info")` +--file_exists $file1 + +--disable_warnings +let $wait_condition = + SELECT SUBSTR(variable_value, 1, 33) = 'Buffer pool(s) recover started at' + FROM performance_schema.global_status + WHERE LOWER(variable_name) = 'innodb_buffer_pool_sync_recover_status'; +--enable_warnings +--source include/wait_condition.inc + +SET GLOBAL innodb_buffer_pool_sync_transmit_enabled = @old_transmit_enabled; +SET GLOBAL innodb_buffer_pool_sync_transmit_interval = @old_transmit_interval; +SET GLOBAL innodb_buffer_pool_sync_recover_after_transmit = @old_recover_after_transmit; +SET GLOBAL innodb_buffer_pool_sync_recover_pct = @old_recover_pct; + +# Clean +connection master; +SET GLOBAL innodb_buffer_pool_sync_snapshot_pct = @old_snapshot_pct; +DROP TABLE ib_bp_test; + +--source include/rpl_end.inc diff --git a/mysql-test/suite/sys_vars/r/all_vars.result b/mysql-test/suite/sys_vars/r/all_vars.result index ab906a8..9a23cb4 100644 --- a/mysql-test/suite/sys_vars/r/all_vars.result +++ b/mysql-test/suite/sys_vars/r/all_vars.result @@ -40,6 +40,26 @@ init_replica init_replica init_slave init_slave +innodb_buffer_pool_sync_snapshot_interval +innodb_buffer_pool_sync_snapshot_interval +innodb_buffer_pool_sync_snapshot_threshold +innodb_buffer_pool_sync_snapshot_threshold +innodb_buffer_pool_sync_recover_abort +innodb_buffer_pool_sync_recover_abort +innodb_buffer_pool_sync_recover_after_transmit +innodb_buffer_pool_sync_recover_after_transmit +innodb_buffer_pool_sync_recover_now +innodb_buffer_pool_sync_recover_now +innodb_buffer_pool_sync_recover_pct +innodb_buffer_pool_sync_recover_pct +innodb_buffer_pool_sync_snapshot_now +innodb_buffer_pool_sync_snapshot_now +innodb_buffer_pool_sync_snapshot_pct +innodb_buffer_pool_sync_snapshot_pct +innodb_buffer_pool_sync_transmit_enabled +innodb_buffer_pool_sync_transmit_enabled +innodb_buffer_pool_sync_transmit_interval +innodb_buffer_pool_sync_transmit_interval innodb_dedicated_server innodb_dedicated_server innodb_log_spin_cpu_abs_lwm diff --git a/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled.result b/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled.result index a1f79b8..c2bcd6f 100644 --- a/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled.result +++ b/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled.result @@ -78,6 +78,7 @@ stage/innodb/clone (page copy) YES stage/innodb/clone (redo copy) YES statement/com/Binlog Dump YES statement/com/Binlog Dump GTID YES +statement/com/Bufferpool Transmit YES statement/com/Change user YES statement/com/Close stmt YES statement/com/Connect YES @@ -195,6 +196,7 @@ stage/innodb/clone (page copy) YES stage/innodb/clone (redo copy) YES statement/com/Binlog Dump YES statement/com/Binlog Dump GTID YES +statement/com/Bufferpool Transmit YES statement/com/Change user YES statement/com/Close stmt YES statement/com/Connect YES diff --git a/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled_instruments.result b/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled_instruments.result index 14c4c4e..1026fb3 100644 --- a/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled_instruments.result +++ b/mysql-test/suite/sysschema/r/pr_ps_setup_show_disabled_instruments.result @@ -20,6 +20,7 @@ stage/innodb/clone (page copy) YES stage/innodb/clone (redo copy) YES statement/com/Binlog Dump YES statement/com/Binlog Dump GTID YES +statement/com/Bufferpool Transmit YES statement/com/Change user YES statement/com/Close stmt YES statement/com/Connect YES diff --git a/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled.result b/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled.result index 7c3e1a8..d9b67ab 100644 --- a/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled.result +++ b/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled.result @@ -158,6 +158,7 @@ stage/innodb/clone (page copy) YES stage/innodb/clone (redo copy) YES statement/com/Binlog Dump YES statement/com/Binlog Dump GTID YES +statement/com/Bufferpool Transmit YES statement/com/Change user YES statement/com/Close stmt YES statement/com/Connect YES @@ -217,6 +218,7 @@ thread_instrumentation enabled_threads thread_type innodb/buf_dump_thread BACKGROUND innodb/buf_resize_thread BACKGROUND +innodb/buf_synchronize_thread BACKGROUND innodb/clone_gtid_thread BACKGROUND innodb/dict_stats_thread BACKGROUND innodb/fts_optimize_thread BACKGROUND @@ -268,6 +270,7 @@ thread_instrumentation enabled_threads thread_type innodb/buf_dump_thread BACKGROUND innodb/buf_resize_thread BACKGROUND +innodb/buf_synchronize_thread BACKGROUND innodb/clone_gtid_thread BACKGROUND innodb/dict_stats_thread BACKGROUND innodb/fts_optimize_thread BACKGROUND @@ -382,6 +385,7 @@ stage/innodb/clone (page copy) YES stage/innodb/clone (redo copy) YES statement/com/Binlog Dump YES statement/com/Binlog Dump GTID YES +statement/com/Bufferpool Transmit YES statement/com/Change user YES statement/com/Close stmt YES statement/com/Connect YES diff --git a/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled_instruments.result b/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled_instruments.result index 7f3a85e..289500a 100644 --- a/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled_instruments.result +++ b/mysql-test/suite/sysschema/r/pr_ps_setup_show_enabled_instruments.result @@ -96,6 +96,7 @@ stage/innodb/clone (page copy) YES stage/innodb/clone (redo copy) YES statement/com/Binlog Dump YES statement/com/Binlog Dump GTID YES +statement/com/Bufferpool Transmit YES statement/com/Change user YES statement/com/Close stmt YES statement/com/Connect YES diff --git a/share/messages_to_error_log.txt b/share/messages_to_error_log.txt index aeb8122..bfd2c95 100644 --- a/share/messages_to_error_log.txt +++ b/share/messages_to_error_log.txt @@ -12250,6 +12250,18 @@ ER_LOG_CANNOT_PURGE_BINLOG_WITH_BACKUP_LOCK # same directory as this file for more # information. +ER_INNODB_buffer_pool_sync_snapshot_status_INFO + eng "%s" + +ER_INNODB_buffer_pool_sync_snapshot_status_ERR + eng "%s" + +ER_INNODB_buffer_pool_sync_recover_status_INFO + eng "%s" + +ER_INNODB_buffer_pool_sync_recover_status_ERR + eng "%s" + # # End of 8.0 error messages intended to be written to the server error log. # diff --git a/sql-common/client.cc b/sql-common/client.cc index 1d3f3bb..6965821 100644 --- a/sql-common/client.cc +++ b/sql-common/client.cc @@ -1442,6 +1442,7 @@ bool cli_advanced_command(MYSQL *mysql, enum enum_server_command command, case COM_BINLOG_DUMP: case COM_BINLOG_DUMP_GTID: case COM_TABLE_DUMP: + case COM_BP_TRANSMIT: MYSQL_TRACE(DISCONNECTED, mysql, ()); break; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 43a8e07..cff2466 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -942,6 +942,7 @@ MySQL clients support the protocol: #include #include #include +#include #ifndef EMBEDDED_LIBRARY #ifdef WITH_LOCK_ORDER @@ -1552,6 +1553,18 @@ SHOW_COMP_OPTION have_compress; SHOW_COMP_OPTION have_profiling; SHOW_COMP_OPTION have_statement_timeout = SHOW_OPTION_DISABLED; +/* Variables for ib_bp_info file transmit from master to slave. */ +bool innodb_buffer_pool_sync_transmit_enabled = false; +bool innodb_buffer_pool_transmit_finished = false; +bool innodb_buffer_pool_current_file_has_sent = false; +ulonglong innodb_buffer_pool_sync_transmit_interval = 120; +mysql_mutex_t LOCK_transmit_client_access; +PSI_mutex_key key_LOCK_transmit_client_access; +std::map > global_transmit_client; + +/* Status for ib_bp_info file transmit from master to slave. */ +char innodb_buffer_pool_sync_transmit_status[TRANSMIT_STATUS_LEN]; + /* Thread specific variables */ thread_local MEM_ROOT **THR_MALLOC = nullptr; @@ -2770,6 +2783,7 @@ static void clean_up_mutexes() { mysql_mutex_destroy(&LOCK_partial_revokes); mysql_mutex_destroy(&LOCK_authentication_policy); mysql_mutex_destroy(&LOCK_global_conn_mem_limit); + mysql_mutex_destroy(&LOCK_transmit_client_access); } /**************************************************************************** @@ -4759,6 +4773,9 @@ int init_common_variables() { max_system_variables.pseudo_thread_id = (my_thread_id)~0; server_start_time = flush_status_time = time(nullptr); + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "ib_bp_info transmition not started"); + binlog_filter = new Rpl_filter; if (!binlog_filter) { LogErr(ERROR_LEVEL, ER_RPL_BINLOG_FILTERS_OOM, strerror(errno)); @@ -5350,6 +5367,8 @@ static int init_thread_environment() { MY_MUTEX_INIT_FAST); mysql_mutex_init(key_LOCK_global_conn_mem_limit, &LOCK_global_conn_mem_limit, MY_MUTEX_INIT_FAST); + mysql_mutex_init(key_LOCK_transmit_client_access, + &LOCK_transmit_client_access, MY_MUTEX_INIT_FAST); return 0; } @@ -9610,6 +9629,15 @@ static int show_telemetry_traces_support(THD * /*unused*/, SHOW_VAR *var, return 0; } +static int show_transmit_status(THD *thd MY_ATTRIBUTE((unused)), SHOW_VAR *var, + char *buff) { + var->type = SHOW_CHAR; + var->value = buff; + sprintf(buff, "%s", innodb_buffer_pool_sync_transmit_status); + + return 0; +} + SHOW_VAR status_vars[] = { {"Aborted_clients", (char *)&aborted_threads, SHOW_LONG, SHOW_SCOPE_GLOBAL}, {"Aborted_connects", (char *)&show_aborted_connects, SHOW_FUNC, @@ -9970,6 +9998,8 @@ SHOW_VAR status_vars[] = { SHOW_SCOPE_GLOBAL}, {"Telemetry_traces_supported", (char *)show_telemetry_traces_support, SHOW_FUNC, SHOW_SCOPE_GLOBAL}, + {"Innodb_buffer_pool_sync_transmit_status", (char *)&show_transmit_status, + SHOW_FUNC, SHOW_SCOPE_GLOBAL}, {NullS, NullS, SHOW_LONG, SHOW_SCOPE_ALL}}; void add_terminator(vector *options) { @@ -11764,6 +11794,7 @@ PSI_mutex_key key_mutex_replica_worker_hash; PSI_mutex_key key_monitor_info_run_lock; PSI_mutex_key key_LOCK_delegate_connection_mutex; PSI_mutex_key key_LOCK_group_replication_connection_mutex; +PSI_mutex_key key_master_info_transmit_lock; /* clang-format off */ static PSI_mutex_info all_server_mutexes[]= @@ -11858,7 +11889,8 @@ static PSI_mutex_info all_server_mutexes[]= { &key_LOCK_delegate_connection_mutex, "LOCK_delegate_connection_mutex", PSI_FLAG_SINGLETON, 0, PSI_DOCUMENT_ME}, { &key_LOCK_group_replication_connection_mutex, "LOCK_group_replication_connection_mutex", PSI_FLAG_SINGLETON, 0, PSI_DOCUMENT_ME}, { &key_LOCK_authentication_policy, "LOCK_authentication_policy", PSI_FLAG_SINGLETON, 0, "A lock to ensure execution of CREATE USER or ALTER USER sql and SET @@global.authentication_policy variable are serialized"}, - { &key_LOCK_global_conn_mem_limit, "LOCK_global_conn_mem_limit", PSI_FLAG_SINGLETON, 0, PSI_DOCUMENT_ME} + { &key_LOCK_global_conn_mem_limit, "LOCK_global_conn_mem_limit", PSI_FLAG_SINGLETON, 0, PSI_DOCUMENT_ME}, + { &key_master_info_transmit_lock, "Master_info::transmit_lock", 0, 0, PSI_DOCUMENT_ME} }; /* clang-format on */ diff --git a/sql/mysqld.h b/sql/mysqld.h index 8b5a842..4c8a692 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -66,6 +66,9 @@ #endif // _WIN32 #include "sql/sql_bitmap.h" #include "sql/sql_const.h" // UUID_LENGTH +#include "bp_sync.h" +#include +#include class Rpl_global_filter; class Rpl_acf_configuration_handler; @@ -542,6 +545,7 @@ extern PSI_socket_key key_socket_tcpip; extern PSI_socket_key key_socket_unix; extern PSI_socket_key key_socket_client_connection; +extern PSI_mutex_key key_master_info_transmit_lock; #endif /* HAVE_PSI_INTERFACE */ /* @@ -698,6 +702,11 @@ extern MYSQL_PLUGIN_IMPORT char pidfile_name[]; #define mysql_tmpdir (my_tmpdir(&mysql_tmpdir_list)) +/* Variable to control ib_bp_info to only copy once for each client. */ +extern mysql_mutex_t LOCK_transmit_client_access; +extern PSI_mutex_key key_LOCK_transmit_client_access; +extern std::map > global_transmit_client; + /* Server mutex locks and condition variables. */ diff --git a/sql/rpl_info.cc b/sql/rpl_info.cc index 82140af..b985366 100644 --- a/sql/rpl_info.cc +++ b/sql/rpl_info.cc @@ -56,7 +56,10 @@ Rpl_info::Rpl_info(const char *type, slave_running(0), slave_run_id(0), handler(nullptr), - internal_id(param_id) { + internal_id(param_id), + transmit_thd(nullptr), + transmit_running(0), + transmit_abort(0) { #ifdef HAVE_PSI_INTERFACE mysql_mutex_init(*key_info_run_lock, &run_lock, MY_MUTEX_INIT_FAST); mysql_mutex_init(*key_info_data_lock, &data_lock, MY_MUTEX_INIT_FAST); diff --git a/sql/rpl_info.h b/sql/rpl_info.h index e5dd61a..c3f29c0 100644 --- a/sql/rpl_info.h +++ b/sql/rpl_info.h @@ -190,5 +190,9 @@ class Rpl_info : public Slave_reporting_capability { public: /* True when the thread is still running, but started the stop procedure */ std::atomic atomic_is_stopping{false}; + + THD *transmit_thd; + std::atomic transmit_running; + std::atomic transmit_abort; }; #endif /* RPL_INFO_H */ diff --git a/sql/rpl_info_factory.cc b/sql/rpl_info_factory.cc index 4d18919..4457ae9 100644 --- a/sql/rpl_info_factory.cc +++ b/sql/rpl_info_factory.cc @@ -106,6 +106,7 @@ Master_info *Rpl_info_factory::create_mi(uint mi_option, const char *channel, &key_source_info_rotate_lock, &key_source_info_data_cond, &key_source_info_start_cond, &key_source_info_stop_cond, &key_source_info_sleep_cond, &key_source_info_rotate_cond, + &key_master_info_transmit_lock, #endif instances, channel))) goto err; diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc index d03c7f8..27ac894 100644 --- a/sql/rpl_mi.cc +++ b/sql/rpl_mi.cc @@ -166,6 +166,7 @@ Master_info::Master_info( PSI_mutex_key *param_key_info_stop_cond, PSI_mutex_key *param_key_info_sleep_cond, PSI_mutex_key *param_key_info_rotate_cond, + PSI_mutex_key *param_key_info_transmit_lock, #endif uint param_id, const char *param_channel) : Rpl_info("I/O", @@ -240,6 +241,13 @@ Master_info::Master_info( key_rwlock_channel_lock #endif ); + +#ifdef HAVE_PSI_INTERFACE + mysql_mutex_init(*param_key_info_transmit_lock, &transmit_lock, + MY_MUTEX_INIT_FAST); +#else + mysql_mutex_init(nullptr, &transmit_lock, MY_MUTEX_INIT_FAST); +#endif } Master_info::~Master_info() { @@ -257,6 +265,8 @@ Master_info::~Master_info() { delete ignore_server_ids; delete mi_description_event; delete gtid_monitoring_info; + + mysql_mutex_destroy(&transmit_lock); } void Master_info::request_rotate(THD *thd) { diff --git a/sql/rpl_mi.h b/sql/rpl_mi.h index f7d858e..bae1b7a 100644 --- a/sql/rpl_mi.h +++ b/sql/rpl_mi.h @@ -638,6 +638,7 @@ class Master_info : public Rpl_info { PSI_mutex_key *param_key_info_stop_cond, PSI_mutex_key *param_key_info_sleep_cond, PSI_mutex_key *param_key_info_rotate_cond, + PSI_mutex_key *param_key_info_transmit_lock, #endif uint param_id, const char *param_channel); @@ -820,6 +821,11 @@ class Master_info : public Rpl_info { Port of the server where master_uuid was last read. */ uint m_uuid_from_port{0}; + + /** + Used to ensure the uniqueness of the slave transmit thread. + */ + mysql_mutex_t transmit_lock; }; #endif /* RPL_MI_H */ diff --git a/sql/rpl_replica.cc b/sql/rpl_replica.cc index 325801c..ac5623b 100644 --- a/sql/rpl_replica.cc +++ b/sql/rpl_replica.cc @@ -163,6 +163,7 @@ #include "rpl_debug_points.h" #endif #include "scope_guard.h" +#include "bp_sync.h" struct mysql_cond_t; struct mysql_mutex_t; @@ -398,7 +399,8 @@ static void set_replica_max_allowed_packet(THD *thd, MYSQL *mysql) { static PSI_memory_key key_memory_rli_mta_coor; static PSI_thread_key key_thread_replica_io, key_thread_replica_sql, - key_thread_replica_worker, key_thread_replica_monitor_io; + key_thread_replica_worker, key_thread_replica_monitor_io, + key_thread_slave_transmit; static PSI_thread_info all_slave_threads[] = { {&key_thread_replica_io, "replica_io", "rpl_rca_io", PSI_FLAG_THREAD_SYSTEM, @@ -408,6 +410,8 @@ static PSI_thread_info all_slave_threads[] = { {&key_thread_replica_worker, "replica_worker", "rpl_rca_wkr", PSI_FLAG_THREAD_SYSTEM, 0, PSI_DOCUMENT_ME}, {&key_thread_replica_monitor_io, "replica_monitor", "rpl_rca_mon", + PSI_FLAG_SINGLETON | PSI_FLAG_THREAD_SYSTEM, 0, PSI_DOCUMENT_ME}, + {&key_thread_slave_transmit, "slave_transmit", "rpl_rca_tsm", PSI_FLAG_SINGLETON | PSI_FLAG_THREAD_SYSTEM, 0, PSI_DOCUMENT_ME}}; static PSI_memory_info all_slave_memory[] = {{&key_memory_rli_mta_coor, @@ -1839,6 +1843,19 @@ int terminate_slave_threads(Master_info *mi, int thread_mask, mysql_mutex_unlock(log_lock); } + + /* + Avoid another user thread terminating or creating transmit thread. + */ + mysql_mutex_lock(&mi->transmit_lock); + if (mi->transmit_running) { + mi->transmit_abort = true; + + /* Wait sometime before transmit thread exits. */ + usleep(2 * SLEEP_UNIT); + } + mysql_mutex_unlock(&mi->transmit_lock); + return 0; } @@ -2131,6 +2148,28 @@ bool start_slave_threads(bool need_lock_slave, bool wait_for_start, terminate_slave_threads(mi, thread_mask & (SLAVE_IO | SLAVE_MONITOR), rpl_stop_replica_timeout, need_lock_slave); } + + /* + Avoid another user thread terminating or creating transmit thread. + */ + mysql_mutex_lock(&mi->transmit_lock); + if (!is_error && innodb_buffer_pool_sync_transmit_enabled && + !mi->transmit_running) { + mi->transmit_running = true; + my_thread_handle th; + if (mysql_thread_create(key_thread_slave_transmit, &th, &connection_attrib, + handle_slave_transmit, (void *)mi)) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Can't create slave transmit thread%s", + mi->get_for_channel_str()); + sql_print_error("Can't create slave transmit thread%s", + mi->get_for_channel_str()); + is_error = true; + my_error(ER_REPLICA_THREAD, MYF(0)); + } + } + mysql_mutex_unlock(&mi->transmit_lock); + return is_error; } @@ -4056,11 +4095,11 @@ int init_replica_thread(THD *thd, SLAVE_THD_TYPE thd_type) { #if !defined(NDEBUG) int simulate_error = 0; #endif - thd->system_thread = (thd_type == SLAVE_THD_WORKER) - ? SYSTEM_THREAD_SLAVE_WORKER - : (thd_type == SLAVE_THD_SQL) - ? SYSTEM_THREAD_SLAVE_SQL - : SYSTEM_THREAD_SLAVE_IO; + thd->system_thread = + (thd_type == SLAVE_THD_WORKER) ? SYSTEM_THREAD_SLAVE_WORKER + : (thd_type == SLAVE_THD_SQL) ? SYSTEM_THREAD_SLAVE_SQL + : (thd_type == SLAVE_THD_IO) ? SYSTEM_THREAD_SLAVE_IO + : SYSTEM_THREAD_SLAVE_TRANSMIT; thd->get_protocol_classic()->init_net(nullptr); thd->slave_thread = true; thd->enable_slow_log = opt_log_slow_replica_statements; @@ -4097,7 +4136,7 @@ int init_replica_thread(THD *thd, SLAVE_THD_TYPE thd_type) { THD_STAGE_INFO(thd, stage_waiting_for_the_next_event_in_relay_log); thd->set_command( COM_QUERY); // the SQL thread does not use the server protocol - } else { + } else if (thd_type == SLAVE_THD_IO){ THD_STAGE_INFO(thd, stage_waiting_for_source_update); } thd->set_time(); @@ -8463,77 +8502,102 @@ int connect_to_master(THD *thd, MYSQL *mysql, Master_info *mi, bool reconnect, bool replica_was_killed{false}; bool connected{false}; - while (!connected) { - replica_was_killed = is_io_thread ? io_slave_killed(thd, mi) - : monitor_io_replica_killed(thd, mi); - if (replica_was_killed) { - LogErr(INFORMATION_LEVEL, ER_RPL_REPLICA_IO_THREAD_KILLED, - mi->get_for_channel_str()); - break; + if (thd == mi->transmit_thd) { + while (!mi->transmit_abort && + (reconnect ? mysql_reconnect(mysql) != 0 + : mysql_real_connect(mysql, mi->host, user, password, 0, + mi->port, 0, client_flag) == 0)) { + /* If err_count < TRANSMIT_RETRY_MAX, sleep 1 second and retry again. */ + if (++err_count == TRANSMIT_RETRY_MAX) { + replica_was_killed = 1; + break; + } + usleep(1000000); } - if (reconnect) { - connected = !mysql_reconnect(mysql); - } else { - // Set this each time mysql_real_connect() is called to make a connection - mysql_extension_set_server_extn(mysql, &mi->server_extn); - - connected = mysql_real_connect(mysql, tmp_host, user, password, nullptr, - tmp_port, nullptr, client_flag); + /* If succeed, set vio to active. */ + if (!replica_was_killed) { + thd->set_active_vio(mysql->net.vio); } - if (connected) break; + } else { + while (!connected) { + replica_was_killed = is_io_thread ? io_slave_killed(thd, mi) + : monitor_io_replica_killed(thd, mi); + if (replica_was_killed) { + LogErr(INFORMATION_LEVEL, ER_RPL_REPLICA_IO_THREAD_KILLED, + mi->get_for_channel_str()); + break; + } - /* - SHOW REPLICA STATUS will display the number of retries which - would be real retry counts instead of mi->retry_count for - each connection attempt by 'Last_IO_Error' entry. - */ - last_errno = mysql_errno(mysql); - suppress_warnings = false; - if (is_io_thread) { - mi->report(ERROR_LEVEL, last_errno, - "Error %s to source '%s@%s:%d'." - " This was attempt %lu/%lu, with a delay of %d seconds between" - " attempts. Message: %s", - (reconnect ? "reconnecting" : "connecting"), mi->get_user(), - tmp_host, tmp_port, err_count + 1, mi->retry_count, - mi->connect_retry, mysql_error(mysql)); - } + if (reconnect) { + connected = !mysql_reconnect(mysql); + } else { + /* + Set this each time mysql_real_connect() is called to make a + connection. + */ + mysql_extension_set_server_extn(mysql, &mi->server_extn); - /* - By default we try forever. The reason is that failure will trigger - master election, so if the user did not set mi->retry_count we - do not want to have election triggered on the first failure to - connect - */ - if (++err_count == mi->retry_count) { - if (is_network_error(last_errno) && is_io_thread) mi->set_network_error(); - replica_was_killed = true; - break; - } - slave_sleep(thd, mi->connect_retry, - is_io_thread ? io_slave_killed : monitor_io_replica_killed, mi); - } + connected = mysql_real_connect(mysql, tmp_host, user, password, nullptr, + tmp_port, nullptr, client_flag); + } + if (connected) break; - if (!replica_was_killed) { - if (is_io_thread) { - mi->clear_error(); // clear possible left over reconnect error - mi->reset_network_error(); - } + /* + SHOW REPLICA STATUS will display the number of retries which + would be real retry counts instead of mi->retry_count for + each connection attempt by 'Last_IO_Error' entry. + */ + last_errno = mysql_errno(mysql); + suppress_warnings = false; + if (is_io_thread) { + mi->report( + ERROR_LEVEL, last_errno, + "Error %s to source '%s@%s:%d'." + " This was attempt %lu/%lu, with a delay of %d seconds between" + " attempts. Message: %s", + (reconnect ? "reconnecting" : "connecting"), mi->get_user(), + tmp_host, tmp_port, err_count + 1, mi->retry_count, + mi->connect_retry, mysql_error(mysql)); + } - if (reconnect) { - if (!suppress_warnings) - LogErr(SYSTEM_LEVEL, - ER_RPL_REPLICA_CONNECTED_TO_SOURCE_REPLICATION_RESUMED, - mi->get_for_channel_str(), mi->get_user(), tmp_host, tmp_port, - mi->get_io_rpl_log_name(), - llstr(mi->get_master_log_pos(), llbuff)); - } else { - query_logger.general_log_print(thd, COM_CONNECT_OUT, "%s@%s:%d", - mi->get_user(), tmp_host, tmp_port); + /* + By default we try forever. The reason is that failure will trigger + master election, so if the user did not set mi->retry_count we + do not want to have election triggered on the first failure to + connect + */ + if (++err_count == mi->retry_count) { + if (is_network_error(last_errno) && is_io_thread) + mi->set_network_error(); + replica_was_killed = true; + break; + } + slave_sleep(thd, mi->connect_retry, + is_io_thread ? io_slave_killed : monitor_io_replica_killed, + mi); } - thd->set_active_vio(mysql->net.vio); + if (!replica_was_killed) { + if (is_io_thread) { + mi->clear_error(); // clear possible left over reconnect error + mi->reset_network_error(); + } + + if (reconnect) { + if (!suppress_warnings) + LogErr(SYSTEM_LEVEL, + ER_RPL_REPLICA_CONNECTED_TO_SOURCE_REPLICATION_RESUMED, + mi->get_for_channel_str(), mi->get_user(), tmp_host, tmp_port, + mi->get_io_rpl_log_name(), + llstr(mi->get_master_log_pos(), llbuff)); + } else { + query_logger.general_log_print(thd, COM_CONNECT_OUT, "%s@%s:%d", + mi->get_user(), tmp_host, tmp_port); + } + + thd->set_active_vio(mysql->net.vio); + } } mysql->reconnect = true; DBUG_PRINT("exit", ("replica_was_killed: %d", replica_was_killed)); @@ -11339,3 +11403,248 @@ static bool check_replica_configuration_errors(Master_info *mi, } return false; } + +/** + Get current timestamp. +*/ +void get_current_timestamp(char *buf) { + struct tm *cal_tm_ptr; + time_t tm; + + struct tm cal_tm; + time(&tm); + localtime_r(&tm, &cal_tm); + cal_tm_ptr = &cal_tm; + sprintf(buf, "%02d%02d%02d %2d:%02d:%02d", cal_tm_ptr->tm_year % 100, + cal_tm_ptr->tm_mon + 1, cal_tm_ptr->tm_mday, cal_tm_ptr->tm_hour, + cal_tm_ptr->tm_min, cal_tm_ptr->tm_sec); +} + +bool check_while_sleep(Master_info *mi) { + int counts = innodb_buffer_pool_sync_transmit_interval * 1000000 / SLEEP_UNIT; + for (int i = 0; i < counts; i++) { + if (mi->transmit_abort) return (true); + usleep(SLEEP_UNIT); + } + return (false); +} + +/** + Slave bufferpool file transmit thread entry point. + + @param arg Pointer to Master_info struct that holds information for + the transmit thread. + + @return Always 0. +*/ +extern "C" void *handle_slave_transmit(void *arg) { + THD *thd = nullptr; + MYSQL *mysql = nullptr; + Master_info *mi = (Master_info *)arg; + bool error = false; + bool end_flag = false; + int ret; + bool successfully_connected; + + char tmp_filename[FN_REFLEN] = ""; + char filename[FN_REFLEN] = ""; + char start_time[32] = ""; + char end_time[32] = ""; + + my_thread_init(); + { + DBUG_TRACE; + + assert(mi->inited); + + thd = new THD; + THD_CHECK_SENTRY(thd); + mi->transmit_thd = thd; + + thd->thread_stack = (char *)&thd; + if (init_replica_thread(thd, SLAVE_THD_TRANSMIT)) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Failed during slave_transmit thread initialization"); + goto err; + } + + RPL_MASTER_INFO = mi; + + if (!(mysql = mysql_init(nullptr))) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Failed during mysql_init()"); + goto err; + } + + mysql_extension_set_server_extn(mysql, &mi->server_extn); + + if (mi->is_set_network_namespace()) { +#ifdef HAVE_SETNS + if (set_network_namespace(mi->network_namespace)) goto err; +#else + /* Network namespace not supported by the platform. Report error. */ + LogErr(ERROR_LEVEL, ER_NETWORK_NAMESPACES_NOT_SUPPORTED); + goto err; +#endif + /* Save default value of network namespace + Set network namespace before sockets be created. */ + } + successfully_connected = !safe_connect(thd, mysql, mi); + /* we can get killed during safe_connect. */ +#ifdef HAVE_SETNS + if (mi->is_set_network_namespace()) { + /* Restore original network namespace used to be before connection has + been created. */ + successfully_connected = + restore_original_network_namespace() | successfully_connected; + } +#endif + + if (successfully_connected) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "slave_transmit thread%s: connected to master '%s@%s:%d'", + mi->get_for_channel_str(), mi->get_user(), mi->host, mi->port); + } else { + snprintf( + innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "slave_transmit thread%s: failed connecting to master '%s@%s:%d'", + mi->get_for_channel_str(), mi->get_user(), mi->host, mi->port); + goto err; + } + + connected: + fn_format(tmp_filename, SNAPSHOT_FILENAME, mysql_real_data_home_ptr, + ".incomplete", + MY_UNPACK_FILENAME | MY_REPLACE_EXT | MY_REPLACE_DIR); + fn_format(filename, SNAPSHOT_FILENAME, mysql_real_data_home_ptr, "", + MY_UNPACK_FILENAME | MY_REPLACE_DIR); + + while (!mi->transmit_abort) { + if (check_while_sleep(mi)) { + /* mi->transmit_abort is true while sleep. */ + break; + } + + error = false; + if (simple_command(mysql, COM_BP_TRANSMIT, 0, 0, 1)) { + /* Try to reconnect. */ + if (!safe_reconnect(thd, mysql, mi, 1)) { + goto connected; + } + + /* Failed to connect. */ + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Error on %s: %d %s", + Command_names::str_global(COM_BP_TRANSMIT).c_str(), + mysql_errno(mysql), mysql_error(mysql)); + sql_print_error("Error on %s: %d %s", + Command_names::str_global(COM_BP_TRANSMIT).c_str(), + mysql_errno(mysql), mysql_error(mysql)); + + goto err; + } + + FILE *f = fopen(tmp_filename, "w"); + if (f == NULL) { + /* Error occurs in open table. */ + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Cannot open '%s' for writing in slave transmit: %s", + tmp_filename, strerror(errno)); + continue; + } + + /* Reading packets from net and write it to file. */ + get_current_timestamp(start_time); + do { + ulong data_len = my_net_read(&mysql->net); + if (data_len == packet_error) { + /* Error occurs in event reading, igonre it and transmit + ib_bp_info next time. */ + error = true; + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Error on read_event in slave transmit: %d %s", + mysql_errno(mysql), mysql_error(mysql)); + + break; + } else if (data_len == BP_END_FLAG_LEN) { + error = true; + break; + } + + const char *data_buf = (const char *)mysql->net.read_pos; + if (uint3korr(data_buf + data_len - BP_END_FLAG_LEN) == BP_END_FLAG) { + end_flag = true; + data_len -= BP_END_FLAG_LEN; + } else + end_flag = false; + + if (fwrite(data_buf, sizeof(char), data_len, f) != data_len) { + /* Error occcurs in writing file, igonre it and write ib_bp_info + next time. */ + error = true; + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Cannot write %s in slave transmit: %s", tmp_filename, + strerror(errno)); + break; + } + } while (!end_flag); + + error |= fclose(f); + if (!error) { + ret = unlink(filename); + if (ret != 0 && errno != ENOENT) { + /* leave tmp_filename to exist */ + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Cannot delete '%s': %s", filename, strerror(errno)); + } + + ret = rename(tmp_filename, filename); + if (ret != 0) { + /* leave tmp_filename to exist */ + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Cannot rename '%s' to '%s': %s", tmp_filename, filename, + strerror(errno)); + } else { + get_current_timestamp(end_time); + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Buffer pool(s) transmit started at %s, completed at %s on " + "slave side", + start_time, end_time); + innodb_buffer_pool_transmit_finished = true; + mysql_mutex_lock(&LOCK_transmit_client_access); + global_transmit_client.clear(); + mysql_mutex_unlock(&LOCK_transmit_client_access); + } + } + + if (cli_safe_read_with_ok(mysql, 1, NULL) == packet_error) { + /* Receive the result of current command. */ + error = true; + break; + } + } + + err: + if (mysql) { + thd->clear_active_vio(); + mysql_close(mysql); + } + + thd->get_protocol_classic()->end_net(); + + thd->release_resources(); + THD_CHECK_SENTRY(thd); + mi->transmit_running = false; + mi->transmit_abort = false; + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "slave_transmit thread exited"); + + delete thd; + } + my_thread_end(); +#if OPENSSL_VERSION_NUMBER < 0x10100000L + ERR_remove_thread_state(0); +#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + my_thread_exit(nullptr); + return (nullptr); // Avoid compiler warnings +} diff --git a/sql/rpl_replica.h b/sql/rpl_replica.h index ee4add3..fbe4aee 100644 --- a/sql/rpl_replica.h +++ b/sql/rpl_replica.h @@ -54,7 +54,8 @@ typedef enum { SLAVE_THD_IO, SLAVE_THD_SQL, SLAVE_THD_WORKER, - SLAVE_THD_MONITOR + SLAVE_THD_MONITOR, + SLAVE_THD_TRANSMIT } SLAVE_THD_TYPE; /** @@ -602,6 +603,7 @@ int heartbeat_queue_event(bool is_valid, Master_info *&mi, extern "C" void *handle_slave_io(void *arg); extern "C" void *handle_slave_sql(void *arg); +extern "C" void *handle_slave_transmit(void *arg); /* SYNPOSIS @@ -667,6 +669,7 @@ bool is_network_error(uint errorno); int init_replica_thread(THD *thd, SLAVE_THD_TYPE thd_type); +void get_current_timestamp(char *buf); /** @} (end of group Replication) */ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 64f26eb..a53befa 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -178,6 +178,8 @@ #include "template_utils.h" #include "thr_lock.h" #include "violite.h" +#include "bp_sync.h" +#include #ifdef WITH_LOCK_ORDER #include "sql/debug_lock_order.h" @@ -249,6 +251,7 @@ const std::string Command_names::m_names[] = { "Reset Connection", "clone", "Group Replication Data Stream subscription", + "Bufferpool Transmit", "Error" // Last command number }; @@ -2280,6 +2283,96 @@ bool dispatch_command(THD *thd, const COM_DATA *com_data, thd, (char *)thd->get_protocol_classic()->get_raw_packet(), thd->get_protocol_classic()->get_packet_length()); break; + case COM_BP_TRANSMIT: + { + char filename[FN_REFLEN] = ""; + char *send_buf = nullptr; + + char peer_ip[NI_MAXHOST] = {0}; + bool has_sent = false; + + if (vio_peer_addr(thd->get_net()->vio, peer_ip, &thd->peer_port, NI_MAXHOST)) + sql_print_error("vio_peer_addr get client ip error"); + else { + mysql_mutex_lock(&LOCK_transmit_client_access); + if (global_transmit_client.find(peer_ip) != + global_transmit_client.end() && + global_transmit_client[peer_ip].find(thd->peer_port) != + global_transmit_client[peer_ip].end()) + has_sent = true; + mysql_mutex_unlock(&LOCK_transmit_client_access); + } + + fn_format(filename, SNAPSHOT_FILENAME, mysql_real_data_home_ptr, "", + MY_UNPACK_FILENAME | MY_REPLACE_DIR); + + FILE *f = fopen(filename, "r"); + if (f == nullptr || has_sent) { + uint end_flag = BP_END_FLAG; + thd->get_protocol_classic()->write( + pointer_cast(&end_flag), BP_END_FLAG_LEN); + thd->get_protocol_classic()->flush(); + if (f) { + fclose(f); + } + my_ok(thd); + break; + } + + char start_time[32] = ""; + char end_time[32] = ""; + uint size = 0; + + get_current_timestamp(start_time); + send_buf = (char *)malloc(BP_SEND_BUFFER_SIZE + 4); + bool io_err = false; + do { + size = fread(send_buf, sizeof(char), BP_SEND_BUFFER_SIZE, f); + if (size != BP_SEND_BUFFER_SIZE && !feof(f)) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Error occurs in fread:%s", SNAPSHOT_FILENAME); + io_err = true; + break; + } + + /* Add end mark. */ + if (feof(f)) { + int3store(send_buf + size, BP_END_FLAG); + size += BP_END_FLAG_LEN; + } + + if (thd->get_protocol_classic()->write( + pointer_cast(send_buf), size)) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Error occurs in net write:%s", SNAPSHOT_FILENAME); + io_err = true; + break; + } + + if (thd->get_protocol_classic()->flush()) { + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Error occurs in net flush:%s", SNAPSHOT_FILENAME); + io_err = true; + break; + } + } while (!feof(f)); + + if (!io_err) { + get_current_timestamp(end_time); + snprintf(innodb_buffer_pool_sync_transmit_status, TRANSMIT_STATUS_LEN, + "Buffer pool(s) transmit started at %s, completed at %s on " + "master side", + start_time, end_time); + mysql_mutex_lock(&LOCK_transmit_client_access); + global_transmit_client[peer_ip].insert(thd->peer_port); + mysql_mutex_unlock(&LOCK_transmit_client_access); + } + + fclose(f); + free(send_buf); + my_ok(thd); + break; + } case COM_REFRESH: { MYSQL_NOTIFY_STATEMENT_QUERY_ATTRIBUTES(thd->m_statement_psi, false); int not_used; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 75f2e7a..7122d73 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -7694,3 +7694,17 @@ static Sys_var_enum Sys_explain_format( SESSION_VAR(explain_format), CMD_LINE(OPT_ARG), explain_format_names, DEFAULT(static_cast(Explain_format_type::TRADITIONAL)), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(nullptr), ON_UPDATE(nullptr)); + +static Sys_var_bool Sys_innodb_buffer_pool_sync_transmit_enabled( + "innodb_buffer_pool_sync_transmit_enabled", + "Enabled ib_bp_info transmit from master to slave", + GLOBAL_VAR(innodb_buffer_pool_sync_transmit_enabled), CMD_LINE(OPT_ARG), + DEFAULT(false), NO_MUTEX_GUARD, NOT_IN_BINLOG, + ON_CHECK(nullptr), ON_UPDATE(nullptr)); + +static Sys_var_ulonglong Sys_innodb_buffer_pool_sync_transmit_interval( + "innodb_buffer_pool_sync_transmit_interval", + "Interval to transmit ib_bp_info from master to slave", + GLOBAL_VAR(innodb_buffer_pool_sync_transmit_interval), + CMD_LINE(REQUIRED_ARG), VALID_RANGE(1, (ulonglong) ~(intptr)0), DEFAULT(10), + BLOCK_SIZE(1), ON_CHECK(0)); diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index c197143..5bddbd2 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -86,6 +86,7 @@ SET(INNOBASE_SOURCES buf/buf0buf.cc buf/buf0dblwr.cc buf/buf0dump.cc + buf/buf0snapshot.cc buf/buf0flu.cc btr/btr0load.cc buf/buf0lru.cc diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index 2e86ae4..7a461bb 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -4644,7 +4644,9 @@ const buf_block_t *buf_page_try_get(const page_id_t &page_id, buf_page_mutex_enter(block); rw_lock_s_unlock(hash_lock); - ut_ad(!block->page.was_stale()); + /* block->page.was_stale() is used to check here. We remove + this check for the reason that buf_snapshot may get access to some + freed pages, we add this check in upper level. */ #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); @@ -4681,8 +4683,10 @@ const buf_block_t *buf_page_try_get(const page_id_t &page_id, ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ + /* block->page.file_page_was_freed is used to check here. We remove + this check for the reason that buf_snapshot may get access to some + freed pages, we add this check in upper level. */ ut_d(buf_page_mutex_enter(block)); - ut_d(ut_a(!block->page.file_page_was_freed)); ut_d(buf_page_mutex_exit(block)); buf_block_dbg_add_level(block, SYNC_NO_ORDER_CHECK); @@ -4794,7 +4798,8 @@ static void buf_page_init(buf_pool_t *buf_pool, const page_id_t &page_id, } buf_page_t *buf_page_init_for_read(ulint mode, const page_id_t &page_id, - const page_size_t &page_size, bool unzip) { + const page_size_t &page_size, bool unzip, + bool old) { buf_block_t *block; rw_lock_t *hash_lock; mtr_t mtr; @@ -4890,8 +4895,8 @@ buf_page_t *buf_page_init_for_read(ulint mode, const page_id_t &page_id, buf_page_set_io_fix(bpage, BUF_IO_READ); - /* The block must be put to the LRU list, to the old blocks */ - buf_LRU_add_block(bpage, true /* to old blocks */); + /* The block must be put to the LRU list. */ + buf_LRU_add_block(bpage, old /* to old blocks */); if (page_size.is_compressed()) { block->page.zip.data = (page_zip_t *)data; @@ -4972,9 +4977,9 @@ buf_page_t *buf_page_init_for_read(ulint mode, const page_id_t &page_id, rw_lock_x_unlock(hash_lock); - /* The block must be put to the LRU list, to the old blocks. + /* The block must be put to the LRU list. The zip size is already set into the page zip */ - buf_LRU_add_block(bpage, true /* to old blocks */); + buf_LRU_add_block(bpage, old); #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG buf_LRU_insert_zip_clean(bpage); #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ diff --git a/storage/innobase/buf/buf0dump.cc b/storage/innobase/buf/buf0dump.cc index 2d5436d..2584e43 100644 --- a/storage/innobase/buf/buf0dump.cc +++ b/storage/innobase/buf/buf0dump.cc @@ -53,8 +53,6 @@ this program; if not, write to the Free Software Foundation, Inc., #include "univ.i" #include "ut0byte.h" -enum status_severity { STATUS_VERBOSE, STATUS_INFO, STATUS_ERR }; - static inline bool SHUTTING_DOWN() { return srv_shutdown_state.load() >= SRV_SHUTDOWN_CLEANUP; } @@ -66,22 +64,6 @@ static bool buf_load_should_start = false; static bool buf_load_abort_flag = false; -/* Used to temporary store dump info in order to avoid IO while holding -buffer pool LRU list mutex during dump and also to sort the contents of the -dump before reading the pages from disk during load. -We store the space id in the high 32 bits and page no in low 32 bits. */ -typedef uint64_t buf_dump_t; - -/* Aux macros to create buf_dump_t and to extract space and page from it */ -inline uint64_t BUF_DUMP_CREATE(space_id_t space, page_no_t page) { - return ut_ull_create(space, page); -} -constexpr space_id_t BUF_DUMP_SPACE(uint64_t a) { - return static_cast((a) >> 32); -} -constexpr page_no_t BUF_DUMP_PAGE(uint64_t a) { - return static_cast((a)&0xFFFFFFFFUL); -} /** Wakes up the buffer pool dump/load thread and instructs it to start a dump. This function is called by MySQL code via buffer_pool_dump_now() and it should return immediately because the whole MySQL is frozen during @@ -189,14 +171,15 @@ static const char *get_buf_dump_dir() { return (dump_dir); } -/** Generate the path to the buffer pool dump/load file. -@param[out] path generated path -@param[in] path_size size of 'path', used as in snprintf(3). */ -void buf_dump_generate_path(char *path, size_t path_size) { +/** Generate the path to the buffer pool dump/load/snapshot/recover file. +@param[out] path generated path +@param[in] path_size size of 'path', used as in snprintf(3). +@param[in] filename real filename without directory. */ +void buf_generate_path(char *path, size_t path_size, const char* filename) { char buf[FN_REFLEN]; snprintf(buf, sizeof(buf), "%s%c%s", get_buf_dump_dir(), OS_PATH_SEPARATOR, - srv_buf_dump_filename); + filename); /* Use this file if it exists. */ if (os_file_exists(buf)) { @@ -207,7 +190,7 @@ void buf_dump_generate_path(char *path, size_t path_size) { my_realpath(path, buf, 0); } else { /* If it does not exist, then resolve only srv_data_home - and append srv_buf_dump_filename to it. */ + and append filename to it. */ char srv_data_home_full[FN_REFLEN]; my_realpath(srv_data_home_full, get_buf_dump_dir(), 0); @@ -215,10 +198,10 @@ void buf_dump_generate_path(char *path, size_t path_size) { if (srv_data_home_full[strlen(srv_data_home_full) - 1] == OS_PATH_SEPARATOR) { snprintf(path, path_size, "%s%s", srv_data_home_full, - srv_buf_dump_filename); + filename); } else { snprintf(path, path_size, "%s%c%s", srv_data_home_full, OS_PATH_SEPARATOR, - srv_buf_dump_filename); + filename); } } } @@ -239,7 +222,8 @@ static void buf_dump(bool obey_shutdown) { ulint i; int ret; - buf_dump_generate_path(full_filename, sizeof(full_filename)); + buf_generate_path(full_filename, sizeof(full_filename), + srv_buf_dump_filename); snprintf(tmp_filename, sizeof(tmp_filename), "%s.incomplete", full_filename); @@ -446,7 +430,7 @@ static void buf_load() { /* Ignore any leftovers from before */ buf_load_abort_flag = false; - buf_dump_generate_path(full_filename, sizeof(full_filename)); + buf_generate_path(full_filename, sizeof(full_filename), srv_buf_dump_filename); buf_load_status(STATUS_INFO, "Loading buffer pool(s) from %s", full_filename); diff --git a/storage/innobase/buf/buf0rea.cc b/storage/innobase/buf/buf0rea.cc index f12ffbe..099a057 100644 --- a/storage/innobase/buf/buf0rea.cc +++ b/storage/innobase/buf/buf0rea.cc @@ -64,7 +64,7 @@ static constexpr uint32_t BUF_READ_AHEAD_PEND_LIMIT = 2; ulint buf_read_page_low(dberr_t *err, bool sync, ulint type, ulint mode, const page_id_t &page_id, const page_size_t &page_size, - bool unzip) { + bool unzip, bool old) { buf_page_t *bpage; *err = DB_SUCCESS; @@ -91,7 +91,7 @@ ulint buf_read_page_low(dberr_t *err, bool sync, ulint type, ulint mode, or is being dropped; if we succeed in initing the page in the buffer pool for read, then DISCARD cannot proceed until the read has completed */ - bpage = buf_page_init_for_read(mode, page_id, page_size, unzip); + bpage = buf_page_init_for_read(mode, page_id, page_size, unzip, old); ut_a(bpage == nullptr || bpage->get_space()->id == page_id.space()); @@ -305,13 +305,14 @@ bool buf_read_page(const page_id_t &page_id, const page_size_t &page_size) { } bool buf_read_page_background(const page_id_t &page_id, - const page_size_t &page_size, bool sync) { + const page_size_t &page_size, bool sync, + bool old) { ulint count; dberr_t err; - count = buf_read_page_low(&err, sync, - IORequest::DO_NOT_WAKE | IORequest::IGNORE_MISSING, - BUF_READ_ANY_PAGE, page_id, page_size, false); + count = buf_read_page_low( + &err, sync, IORequest::DO_NOT_WAKE | IORequest::IGNORE_MISSING, + BUF_READ_ANY_PAGE, page_id, page_size, false, old); srv_stats.buf_pool_reads.add(count); diff --git a/storage/innobase/buf/buf0snapshot.cc b/storage/innobase/buf/buf0snapshot.cc new file mode 100644 index 0000000..050c929 --- /dev/null +++ b/storage/innobase/buf/buf0snapshot.cc @@ -0,0 +1,888 @@ +/***************************************************************************** + +Copyright (c) 2011, 2023, Oracle and/or its affiliates. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License, version 2.0, as published by the +Free Software Foundation. + +This program is also distributed with certain software (including but not +limited to OpenSSL) that is licensed under separate terms, as designated in a +particular file or component or in included license documentation. The authors +of MySQL hereby grant you an additional permission to link the program and +your derivative works with the separately licensed software that they have +included with MySQL. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License, version 2.0, +for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*****************************************************************************/ + +/** @file buf/buf0snapshot.cc + Implements a buffer pool snapshot/recover. + + Created June 27, 2023 Songwei Chen + *******************************************************/ + +#include +#include +#include +#include "bp_sync.h" +#include "btr0btr.h" +#include "btr0pcur.h" +#include "dict0dd.h" + +static bool buf_recover_abort_flag = false; + +#define SNAPSHOT_LENGTH_FORMAT "%lu,%lu,%lu,%lu,%lu,%lu," +const rec_t MAGIC_NUM = 0xFF; +const uint MAGIC_LEN = 1; + +/* Flages that tell the bufferpool snapshot/recover thread whitch action should +it take after being waked up. */ +static bool buf_snapshot_should_start = false; +static bool buf_recover_should_start = false; + +/** Wakes up the buffer pool snapshot/recover thread and instructs it to start +a dump. This function is called by MySQL code via +buffer_pool_sync_snapshot_now() and it should return immediately because the +whole MySQL is frozen during its execution. */ +void buf_snapshot_start() { + buf_snapshot_should_start = true; + os_event_set(srv_buf_synchronize_event); +} + +/** Aborts a currently running buffer pool recover. This function is called by +MySQL code via buffer_pool_sync_recover_abort() and it should return +immediately because the whole MySQL is frozen during its execution. */ +void buf_recover_start() { + buf_recover_should_start = true; + os_event_set(srv_buf_synchronize_event); +} + +static inline bool SHUTTING_DOWN() { + return srv_shutdown_state.load() >= SRV_SHUTDOWN_CLEANUP; +} + +/** Sets the global variable that feeds MySQL's +innodb_buffer_pool_sync_snapshot_status to the specified string. The format and +the following parameters are the same as the ones used for printf(3). The value +of this variable can be retrieved by: SELECT variable_value FROM +information_schema.global_status WHERE variable_name = +'INNODB_buffer_pool_sync_snapshot_status'; or by: SHOW STATUS LIKE +'innodb_buffer_pool_sync_snapshot_status'; */ +static MY_ATTRIBUTE((format(printf, 2, 3))) void buf_snapshot_status( + enum status_severity severity, /*!< in: status severity */ + const char *fmt, /*!< in: format */ + ...) /*!< in: extra parameters according + to fmt */ +{ + va_list ap; + + va_start(ap, fmt); + + ut_vsnprintf(export_vars.innodb_buffer_pool_sync_snapshot_status, + sizeof(export_vars.innodb_buffer_pool_sync_snapshot_status), fmt, + ap); + + switch (severity) { + case STATUS_INFO: + ib::info(ER_INNODB_buffer_pool_sync_snapshot_status_INFO) + << export_vars.innodb_buffer_pool_sync_snapshot_status; + break; + + case STATUS_ERR: + ib::error(ER_INNODB_buffer_pool_sync_snapshot_status_ERR) + << export_vars.innodb_buffer_pool_sync_snapshot_status; + break; + + case STATUS_VERBOSE: + break; + } + + va_end(ap); +} + +/** Sets the global variable that feeds MySQL's +innodb_buffer_pool_sync_recover_status to the specified string. The format and +the following parameters are the same as the ones used for printf(3). The value +of this variable can be retrieved by: SELECT variable_value FROM +information_schema.global_status WHERE variable_name = +'INNODB_buffer_pool_sync_recover_status'; or by: SHOW STATUS LIKE +'innodb_buffer_pool_sync_recover_status'; */ +static MY_ATTRIBUTE((format(printf, 2, 3))) void buf_recover_status( + enum status_severity severity, /*!< in: status severity */ + const char *fmt, /*!< in: format */ + ...) /*!< in: extra parameters according to fmt */ +{ + va_list ap; + + va_start(ap, fmt); + + ut_vsnprintf(export_vars.innodb_buffer_pool_sync_recover_status, + sizeof(export_vars.innodb_buffer_pool_sync_recover_status), fmt, + ap); + + switch (severity) { + case STATUS_INFO: + ib::info(ER_INNODB_buffer_pool_sync_recover_status_INFO) + << export_vars.innodb_buffer_pool_sync_recover_status; + break; + + case STATUS_ERR: + ib::error(ER_INNODB_buffer_pool_sync_recover_status_ERR) + << export_vars.innodb_buffer_pool_sync_recover_status; + break; + + case STATUS_VERBOSE: + break; + } + + va_end(ap); +} + +/** Normal record consists of two parts: "extra" + "data", +The record pointer is pointed to the begining of "data" usually. +"rec" below points to different place in buffer pool snapshot/recover. + +Snapshot: To convey record from master to slave, "rec" points to the +begining of "extra". + +Recover: To loacate a record to btree leaf page, "rec" points to the +begining of "data". */ +struct record_t { + rec_t *rec; + ulint extra_len; + ulint data_len; + + record_t() : rec(nullptr), extra_len(0), data_len(0) {} +}; + +/** one value range in an index. */ +struct range_t { + std::string table_name; /*!< Table name. */ + std::string index_name; /*!< Index name. */ + record_t left; /*!< Left-most record of current range. */ + record_t right; /*!< Right-most record of current range. */ +}; + +/** Link adjacent pages in bufferpool and get left most record and right +most record from pages list. +@param[in] space target space id +@param[in] page_set all pages in target space +@param[in,out] multi_ranges value ranges in target space +@param[in] heap mem heap to create range_t */ +void link_page(uint space, boost::unordered_set &page_set, + std::vector &multi_ranges, mem_heap_t *heap) { + boost::unordered_set::iterator iter; + buf_block_t *block = nullptr; + buf_block_t *left_block = nullptr; + buf_block_t *right_block = nullptr; + dict_index_t *index = nullptr; + page_no_t next_left_page_no = 0; + page_no_t next_right_page_no = 0; + ulint *offsets = nullptr; + rec_t *rec = nullptr; + range_t range; + mtr_t mtr; + page_id_t left_page_id(0, 0); + page_id_t right_page_id(0, 0); + space_index_t index_id = 0; + + while (page_set.size() > 0) { + iter = page_set.begin(); + mtr_start(&mtr); + block = (buf_block_t *)buf_page_try_get(page_id_t(space, *iter), + UT_LOCATION_HERE, &mtr); + page_set.erase(*iter); + + /* We only care about btree leaf page. */ + if (block == nullptr || +#ifdef UNIV_DEBUG + /* Check inside buf_page_try_get was moved here. */ + block->page.file_page_was_freed || block->page.was_stale() || +#endif + fil_page_get_type(block->frame) != FIL_PAGE_INDEX || + btr_page_get_level(block->frame) != 0) { + mtr_commit(&mtr); + continue; + } + + /* Save index id. */ + index_id = btr_page_get_index_id(block->frame); + index_id_t page_index_id(block->page.id.space(), index_id); + + /* Set an original value to left_page_id and right_page_id. */ + left_page_id.reset(block->page.id.space(), block->page.id.page_no()); + right_page_id.reset(block->page.id.space(), block->page.id.page_no()); + + next_left_page_no = btr_page_get_prev(block->frame, &mtr); + next_right_page_no = btr_page_get_next(block->frame, &mtr); + mtr_commit(&mtr); + + /* Search the left side. */ + while (page_set.find(next_left_page_no) != page_set.end()) { + mtr_start(&mtr); + block = (buf_block_t *)buf_page_try_get( + page_id_t(space, next_left_page_no), UT_LOCATION_HERE, &mtr); + page_set.erase(next_left_page_no); + + /* If the page is not in BP now, we won`t count it. */ + if (block == nullptr +#ifdef UNIV_DEBUG + /* Check inside buf_page_try_get was moved here. */ + || block->page.file_page_was_freed || block->page.was_stale() +#endif + ) { + mtr_commit(&mtr); + break; + } + + /* Update left_page_id. */ + left_page_id.reset(block->page.id.space(), block->page.id.page_no()); + next_left_page_no = btr_page_get_prev(block->frame, &mtr); + + mtr_commit(&mtr); + } + + /* Search the right side. */ + while (page_set.find(next_right_page_no) != page_set.end()) { + mtr_start(&mtr); + block = (buf_block_t *)buf_page_try_get( + page_id_t(space, next_right_page_no), UT_LOCATION_HERE, &mtr); + page_set.erase(next_right_page_no); + + /* If the page is not in BP now, we won`t count it. */ + if (block == nullptr +#ifdef UNIV_DEBUG + /* Check inside buf_page_try_get was moved here. */ + || block->page.file_page_was_freed || block->page.was_stale() +#endif + ) { + mtr_commit(&mtr); + break; + } + + /* Update right_page_id. */ + right_page_id.reset(block->page.id.space(), block->page.id.page_no()); + next_right_page_no = btr_page_get_next(block->frame, &mtr); + + mtr_commit(&mtr); + } + + mutex_enter(&dict_sys->mutex); + index = const_cast(dict_index_find(page_index_id)); + + /* We skip the following three types of indexes: + 1. Not in cache + 2. Ibuf index + 3. Space of index != space of page. This may occur in + "innodb_temporary" space. */ + if (index == nullptr || dict_index_is_ibuf(index) || + index->table->space != space) { + mutex_exit(&dict_sys->mutex); + continue; + } + + range.table_name = index->table_name; + range.index_name = (const char *)index->name; + + mtr_start(&mtr); + left_block = + (buf_block_t *)buf_page_try_get(left_page_id, UT_LOCATION_HERE, &mtr); + + /* If there is no user record in current page list. ignore it. */ + if (left_block == nullptr || +#ifdef UNIV_DEBUG + left_block->page.file_page_was_freed || left_block->page.was_stale() || +#endif + index_id != btr_page_get_index_id(left_block->frame) || + 0 == page_header_get_field(left_block->frame, PAGE_N_RECS)) { + mtr_commit(&mtr); + mutex_exit(&dict_sys->mutex); + continue; + } + + /* Get first user record from left most leaf page. */ + rec = page_rec_get_next(page_get_infimum_rec(left_block->frame)); + offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, + UT_LOCATION_HERE, &heap); + range.left.rec = rec_key_fields_copy( + heap, rec, offsets, index, range.left.extra_len, range.left.data_len); + mtr_commit(&mtr); + + mtr_start(&mtr); + right_block = + (buf_block_t *)buf_page_try_get(right_page_id, UT_LOCATION_HERE, &mtr); + + /* If there is no user record in current page list. ignore it. */ + if (right_block == nullptr || +#ifdef UNIV_DEBUG + right_block->page.file_page_was_freed || + right_block->page.was_stale() || +#endif + index_id != btr_page_get_index_id(right_block->frame) || + 0 == page_header_get_field(right_block->frame, PAGE_N_RECS)) { + mtr_commit(&mtr); + mutex_exit(&dict_sys->mutex); + continue; + } + + /* Get last user record from right most leaf page. */ + rec = page_rec_get_prev(page_get_supremum_rec(right_block->frame)); + offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, + UT_LOCATION_HERE, &heap); + range.right.rec = rec_key_fields_copy( + heap, rec, offsets, index, range.right.extra_len, range.right.data_len); + mtr_commit(&mtr); + + mutex_exit(&dict_sys->mutex); + multi_ranges.push_back(range); + } +} + +/** Dump multi-ranges info to local file. +DATA FORMAT: num1,num2,num3,num4,num5,num6,table+index+left+right +num1: length of table name +num2: length of index name +num3: extra_len of left record +num4: data_len of left record +mum5: extra_len of right record +num6: data_len of right record +table: table name +index: index name +left: left-most record in a range +right: right-most record in a range + +@param[in] multi_ranges the collection of range_t +@param[in] f the file handler +@return false succeed, true failed */ +bool dump_multi_ranges(std::vector &multi_ranges, FILE *f) { + ulint size = 0; + + for (uint i = 0; i < multi_ranges.size(); i++) { + range_t &range = multi_ranges[i]; + /* fprintf() returns a negative value if an output error occurs. */ + if (fprintf(f, SNAPSHOT_LENGTH_FORMAT "%s%s", range.table_name.size(), + range.index_name.size(), range.left.extra_len, + range.left.data_len, range.right.extra_len, + range.right.data_len, range.table_name.c_str(), + range.index_name.c_str()) < 0) { + return (true); + } + + /* fwrite() returns the number of members successfully written, + if the return value is not equeal to the input number, + an output error occurs. */ + /* Write left-most record. */ + size = range.left.extra_len + range.left.data_len; + if (fwrite(range.left.rec, sizeof(rec_t), size, f) != size) { + return (true); + } + + /* Write right-most record. */ + size = range.right.extra_len + range.right.data_len; + if (fwrite(range.right.rec, sizeof(rec_t), size, f) != size) { + return (true); + } + + /* Write a magic number to each range end. */ + if (fwrite(&MAGIC_NUM, sizeof(rec_t), MAGIC_LEN, f) != MAGIC_LEN) { + return (true); + } + } + + /* fflush() returns zero to indicates success. */ + if (fflush(f)) { + return (true); + } + + return (false); +} + +/** Perform a buffer pool snapshot into the file specified by +SNAPSHOT_FILENAME. If any errors occur then the value of +innodb_buffer_pool_sync_snapshot_status will be set accordingly, +see buf_snapshot_status(). +@param[in] obey_shutdown quit if we are in a shutting down state */ +static void buf_snapshot(bool obey_shutdown) { +#define SHOULD_QUIT() (SHUTTING_DOWN() && obey_shutdown) + + char full_filename[OS_FILE_MAX_PATH]; + char tmp_filename[OS_FILE_MAX_PATH * 2]; + char start_time[32]; + char end_time[32]; + FILE *f; + ulint i; + int ret; + + ut_sprintf_timestamp(start_time); + + buf_generate_path(full_filename, sizeof(full_filename), SNAPSHOT_FILENAME); + + snprintf(tmp_filename, sizeof(tmp_filename), "%s.incomplete", full_filename); + + buf_snapshot_status(STATUS_INFO, "Start snapshotting buffer pool(s) to %s", + full_filename); + + f = fopen(tmp_filename, "w"); + if (f == nullptr) { + buf_snapshot_status(STATUS_ERR, "Cannot open '%s' for writing: %s", + tmp_filename, strerror(errno)); + return; + } + /* else */ + + /* Raw page info. */ + std::map> lru_maps; + + /* Step 1: walk through each buffer pool. All pages are classified + by spaceid. */ + for (i = 0; i < srv_buf_pool_instances && !SHOULD_QUIT(); i++) { + buf_pool_t *buf_pool; + const buf_page_t *bpage; + buf_dump_t *dump; + ulint n_pages; + ulint j; + + buf_pool = buf_pool_from_array(i); + + /* obtain buf_pool mutex before allocate, since + UT_LIST_GET_LEN(buf_pool->LRU) could change */ + mutex_enter(&buf_pool->LRU_list_mutex); + + n_pages = UT_LIST_GET_LEN(buf_pool->LRU); + + /* Skip empty buffer pools */ + if (n_pages == 0) { + mutex_exit(&buf_pool->LRU_list_mutex); + continue; + } + + if (srv_buffer_pool_sync_snapshot_pct != 100) { + ut_ad(srv_buffer_pool_sync_snapshot_pct < 100); + + n_pages = n_pages * srv_buffer_pool_sync_snapshot_pct / 100; + + if (n_pages == 0) { + n_pages = 1; + } + } + + dump = static_cast( + ut::malloc_withkey(UT_NEW_THIS_FILE_PSI_KEY, n_pages * sizeof(*dump))); + + if (dump == nullptr) { + mutex_exit(&buf_pool->LRU_list_mutex); + fclose(f); + buf_snapshot_status(STATUS_ERR, "Cannot allocate " ULINTPF " bytes: %s", + (ulint)(n_pages * sizeof(*dump)), strerror(errno)); + return; + } + + for (bpage = UT_LIST_GET_FIRST(buf_pool->LRU), j = 0; + bpage != nullptr && j < n_pages; + bpage = UT_LIST_GET_NEXT(LRU, bpage), j++) { + ut_a(buf_page_in_file(bpage)); + + dump[j] = BUF_DUMP_CREATE(bpage->id.space(), bpage->id.page_no()); + } + + ut_a(j == n_pages); + + mutex_exit(&buf_pool->LRU_list_mutex); + + for (j = 0; j < n_pages; j++) { + boost::unordered_set &hash_set = lru_maps[BUF_DUMP_SPACE(dump[j])]; + hash_set.insert(BUF_DUMP_PAGE(dump[j])); + } + + ut::free(dump); + } + + buf_snapshot_status(STATUS_INFO, + "LRU list snapshot saved, Start dumping space by space."); + + mem_heap_t *heap = mem_heap_create(UNIV_PAGE_SIZE, UT_LOCATION_HERE); + std::map>::iterator iter; + iter = lru_maps.begin(); + + while (iter != lru_maps.end()) { + /* Step 2: Concatenate pages through a doubly linked list + spaceid by spaceid. */ + uint space = iter->first; + std::vector multi_ranges; + link_page(space, lru_maps[space], multi_ranges, heap); + + /* Step 3: Dump each value range spaceid by spaceid. */ + ret = dump_multi_ranges(multi_ranges, f); + if (ret) { + fclose(f); + mem_heap_free(heap); + buf_snapshot_status(STATUS_ERR, "Cannot write to '%s': %s", tmp_filename, + strerror(errno)); + return; + } + + iter++; + } + + mem_heap_free(heap); + ret = fclose(f); + if (ret != 0) { + buf_snapshot_status(STATUS_ERR, "Cannot close '%s': %s", tmp_filename, + strerror(errno)); + return; + } + /* else */ + + ret = unlink(full_filename); + if (ret != 0 && errno != ENOENT) { + buf_snapshot_status(STATUS_ERR, "Cannot delete '%s': %s", full_filename, + strerror(errno)); + /* leave tmp_filename to exist */ + return; + } + /* else */ + + ret = rename(tmp_filename, full_filename); + if (ret != 0) { + buf_snapshot_status(STATUS_ERR, "Cannot rename '%s' to '%s': %s", + tmp_filename, full_filename, strerror(errno)); + /* leave tmp_filename to exist */ + return; + } + /* else */ + + /* success */ + + ut_sprintf_timestamp(end_time); + buf_snapshot_status(STATUS_INFO, + "Buffer pool(s) snapshot started at %s, completed at %s", + start_time, end_time); + mysql_mutex_lock(&LOCK_transmit_client_access); + global_transmit_client.clear(); + mysql_mutex_unlock(&LOCK_transmit_client_access); +} + +void insert_page_id(boost::unordered_set &pages_set, + page_id_t page_id) { + ulonglong page_id_num = page_id.space(); + page_id_num = (page_id_num << 32) + page_id.page_no(); + pages_set.insert(page_id_num); +} + +/** Perform a buffer pool recover from the file specified by +SNAPSHOT_FILENAME. If any errors occur then the value of +innodb_buffer_pool_sync_recover_status will be set accordingly. */ +static void buf_recover() { + char full_filename[OS_FILE_MAX_PATH]; + char start_time[32]; + char end_time[32]; + FILE *f = nullptr; + int fscanf_ret = 0; + lint file_len = 0; + lint cur_pos = 0; + boost::unordered_set pages_set; + ulint pages_limit = (srv_buf_pool_size * srv_buffer_pool_sync_recover_pct) / + (UNIV_PAGE_SIZE * 100); + THD *thd = create_thd(false, true, true, 0, 0); + + if (thd == nullptr) { + buf_recover_status(STATUS_ERR, "THD create failed"); + return; + } + + ut_sprintf_timestamp(start_time); + + /* Ignore any leftovers from before */ + buf_recover_abort_flag = false; + + buf_generate_path(full_filename, sizeof(full_filename), SNAPSHOT_FILENAME); + + buf_recover_status(STATUS_INFO, "Recovering buffer pool(s) from %s", + full_filename); + + f = fopen(full_filename, "r"); + if (f == nullptr) { + buf_recover_status(STATUS_ERR, "Cannot open '%s' for reading: %s", + full_filename, strerror(errno)); + return; + } + + if (fseek(f, 0L, SEEK_END) || (file_len = ftell(f)) < 0 || + fseek(f, 0L, SEEK_SET)) { + buf_recover_status(STATUS_ERR, "Cannot get '%s' size", full_filename); + fclose(f); + return; + } + + /* Variables for parsing range. */ + record_t left, right; + ulint table_len = 0; + ulint index_len = 0; + char table_name[NAME_LEN + 1] = ""; + char index_name[NAME_LEN + 1] = ""; + dict_table_t *table = nullptr; + dict_index_t *index = nullptr; + buf_block_t *left_block = nullptr; + buf_block_t *right_block = nullptr; + std::map index_map; + + /* Variables for locating record to btree leaf page and loading pages. */ + mtr_t mtr; + btr_pcur_t pcur; + page_id_t left_page_id(0, 0); + page_id_t right_page_id(0, 0); + page_id_t next_page_id(0, 0); + uint next_page_no = 0; + dtuple_t *tuple = nullptr; + void *buf = nullptr; + MDL_ticket *mdl = nullptr; + mem_heap_t *heap = mem_heap_create(UNIV_PAGE_SIZE, UT_LOCATION_HERE); + + if (!heap) { + buf_recover_status(STATUS_ERR, "Cannot create mem_heap in buf_reocver"); + goto free_resource; + } + + do { + fscanf_ret = fscanf(f, SNAPSHOT_LENGTH_FORMAT, &table_len, &index_len, + &left.extra_len, &left.data_len, &right.extra_len, + &right.data_len); + + if (fscanf_ret != 6 || table_len > NAME_LEN || index_len > NAME_LEN) { + if (feof(f)) { + /* Normal end. */ + ut_sprintf_timestamp(end_time); + buf_recover_status( + STATUS_INFO, + "Buffer pool(s) recover started at %s, completed at %s", start_time, + end_time); + break; + } + /* else */ + buf_recover_status(STATUS_ERR, + "Error parsing '%s', unable to get data length " + "or table/index name length not right", + full_filename); + goto free_resource; + } + + uint total_len = table_len + index_len + left.extra_len + left.data_len + + right.extra_len + right.data_len; + buf = mem_heap_alloc(heap, total_len); + + if (fread(buf, sizeof(rec_t), total_len, f) != total_len) { + buf_recover_status(STATUS_ERR, "Error parsing '%s', unable to get data", + full_filename); + goto free_resource; + } + + rec_t magic = 0; + if (fread(&magic, sizeof(rec_t), MAGIC_LEN, f) != MAGIC_LEN || + magic != MAGIC_NUM) { + buf_recover_status(STATUS_ERR, + "Error parsing '%s', unable to get magic number " + "or magic number not right", + full_filename); + goto free_resource; + } + + /* Parse data. */ + memcpy(table_name, (char *)buf, table_len); + table_name[table_len] = '\0'; + memcpy(index_name, (char *)buf + table_len, index_len); + index_name[index_len] = '\0'; + + left.rec = (rec_t *)buf + table_len + index_len + left.extra_len; + right.rec = (rec_t *)buf + table_len + index_len + left.extra_len + + left.data_len + right.extra_len; + + /* Get new table if needed. */ + if (table == nullptr || 0 != strcmp(table->name.m_name, table_name)) { + /* Close old table. */ + if (table) dd_table_close(table, thd, &mdl, false); + + /* Open new table. */ + table = dd_table_open_on_name(thd, &mdl, table_name, false, + DICT_ERR_IGNORE_NONE); + + if (table == nullptr || table->to_be_dropped) { + buf_recover_status(STATUS_INFO, + "Failed loading table:%s, ignore it and continue", + table_name); + continue; + } + + index_map.clear(); + for (index = table->first_index(); index != nullptr; + index = index->next()) { + index_map[(const char *)index->name] = index; + } + } + + if (index_map.find(index_name) == index_map.end()) { + buf_recover_status( + STATUS_INFO, + "Failed loading index:%s in table:%s, ignore it and continue", + index_name, table_name); + continue; + } + + index = index_map[index_name]; + + /* Locate left record to btree leaf page. */ + tuple = dict_index_build_node_ptr(index, left.rec, 0, heap, 0); + + mtr_start(&mtr); + pcur.open_on_user_rec(index, tuple, PAGE_CUR_GE, BTR_SEARCH_LEAF, &mtr, + UT_LOCATION_HERE); + + left_block = pcur.m_btr_cur.page_cur.block; + pcur.close(); + + /* TODO: Error handling when record does not exist. */ + ut_ad(left_block); + + /* Save left page id to prevent page id change after mtr commit. */ + left_page_id.reset(left_block->page.id.space(), + left_block->page.id.page_no()); + insert_page_id(pages_set, left_page_id); + next_page_no = btr_page_get_next(left_block->frame, &mtr); + /* Left record and right record may in the same page. to avoid latching + the same block, we commit mtr here. */ + mtr_commit(&mtr); + + /* Locate right record to btree leaf page. */ + tuple = dict_index_build_node_ptr(index, right.rec, 0, heap, 0); + + mtr_start(&mtr); + pcur.open_on_user_rec(index, tuple, PAGE_CUR_GE, BTR_SEARCH_LEAF, &mtr, + UT_LOCATION_HERE); + right_block = pcur.m_btr_cur.page_cur.block; + pcur.close(); + + /* TODO: Error handling when record does not exist. */ + ut_ad(right_block); + + /* Save the right_page_id for the page_id comparison. */ + right_page_id.reset(right_block->page.id.space(), + right_block->page.id.page_no()); + insert_page_id(pages_set, right_page_id); + + /* Release right_block to avoid dead-lock. */ + mtr_commit(&mtr); + + /* Check if we reach pages limit. */ + if (pages_set.size() >= pages_limit) { + buf_recover_status(STATUS_INFO, + "Buffer pool(s) recover " + "aborted because it reached the pages limit"); + goto free_resource; + } + + if (left_page_id == right_page_id) { + /* Left record and right record are in the same pace. + Finished recovering this round.*/ + continue; + } + + /* Load pages between left block and right block. */ + page_id_t page_id(left_page_id.space(), 0); + page_size_t page_size(right_block->page.size.physical(), + right_block->page.size.logical(), + right_block->page.size.is_compressed()); + + while (FIL_NULL != next_page_no && + next_page_no != right_page_id.page_no()) { + page_id.set_page_no(next_page_no); + /* Load page to the start of LRU. */ + mtr_start(&mtr); + buf_read_page_background(page_id, page_size, true, false); + buf_block_t *block = btr_block_get(page_id, page_size, RW_S_LATCH, + UT_LOCATION_HERE, nullptr, &mtr); + /* Abort loading pages when errors occur. */ + if (block == nullptr) { + mtr_commit(&mtr); + break; + } + + next_page_no = btr_page_get_next(block->frame, &mtr); + mtr_commit(&mtr); + + /* Check if we reach pages limit. */ + insert_page_id(pages_set, page_id); + if (pages_set.size() >= pages_limit) { + buf_recover_status( + STATUS_INFO, + "Buffer pool(s) recover " + "aborted because it reached the pages limit, %f%% finished", + (float)(cur_pos * 100) / (float)file_len); + goto free_resource; + } + } + + if ((cur_pos = ftell(f)) < 0) { + buf_recover_status(STATUS_ERR, "Cannot get current position of '%s'", + full_filename); + goto free_resource; + } + + buf_recover_status(STATUS_VERBOSE, "Buffer pool(s) recover Finished %f%%", + (float)(cur_pos * 100) / (float)file_len); + + /* Terminate if needed. */ + if (buf_recover_abort_flag) { + buf_recover_abort_flag = false; + buf_recover_status( + STATUS_INFO, + "Buffer pool(s) recover aborted on request, %f%% finished", + (float)(cur_pos * 100) / (float)file_len); + goto free_resource; + } + } while (true); + +free_resource: + if (table) dd_table_close(table, thd, &mdl, false); + if (heap) mem_heap_free(heap); + if (f) fclose(f); + if (thd) destroy_thd(thd); +} + +/** Aborts a currently running buffer pool recover. This function is called by +MySQL code via buffer_pool_sync_recover_abort() and it should return immediately +because the whole MySQL is frozen during its execution. */ +void buf_recover_abort() { buf_recover_abort_flag = true; } + +/** This is the main thread for buffer pool snapshot/recover. It waits for an +event and when waked up either performs a snapshot/recover and sleeps +again. */ +void buf_synchronize_thread() { + ut_ad(!srv_read_only_mode); + + buf_snapshot_status(STATUS_VERBOSE, "Snapshoting of buffer pool not started"); + buf_recover_status(STATUS_VERBOSE, "Recovering of buffer pool not started"); + + while (!SHUTTING_DOWN()) { + os_event_wait(srv_buf_synchronize_event); + + if (buf_snapshot_should_start) { + buf_snapshot_should_start = false; + buf_snapshot(true /* quit on shutdown */); + } + + if (buf_recover_should_start) { + buf_recover_should_start = false; + buf_recover(); + } + + os_event_reset(srv_buf_synchronize_event); + } +} \ No newline at end of file diff --git a/storage/innobase/clone/clone0apply.cc b/storage/innobase/clone/clone0apply.cc index e41a2e3..5c71f1a 100644 --- a/storage/innobase/clone/clone0apply.cc +++ b/storage/innobase/clone/clone0apply.cc @@ -129,7 +129,7 @@ int Clone_Snapshot::update_sys_file_name(bool replace, ut_ad(0 == strcmp(file_name.c_str(), SRV_BUF_DUMP_FILENAME_DEFAULT)); char path[OS_FILE_MAX_PATH]; - buf_dump_generate_path(path, sizeof(path)); + buf_generate_path(path, sizeof(path), srv_buf_dump_filename); file_name.assign(path); return (0); diff --git a/storage/innobase/clone/clone0copy.cc b/storage/innobase/clone/clone0copy.cc index cba929d..a58c9c2 100644 --- a/storage/innobase/clone/clone0copy.cc +++ b/storage/innobase/clone/clone0copy.cc @@ -89,7 +89,7 @@ static int add_page_callback(void *context, byte *buff, uint num_pages) { int Clone_Snapshot::add_buf_pool_file() { char path[OS_FILE_MAX_PATH]; /* Generate the file name. */ - buf_dump_generate_path(path, sizeof(path)); + buf_generate_path(path, sizeof(path), srv_buf_dump_filename); /* Add if the file is found. */ int err = 0; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index c759693..de151d2 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -88,6 +88,7 @@ this program; if not, write to the Free Software Foundation, Inc., #include "btr0sea.h" #include "buf0dblwr.h" #include "buf0dump.h" +#include "buf0snapshot.h" #include "buf0flu.h" #include "buf0lru.h" #include "buf0stats.h" @@ -877,7 +878,9 @@ static PSI_thread_info all_innodb_threads[] = { PSI_THREAD_KEY(parallel_rseg_init_thread, "ib_par_rseg", 0, 0, PSI_DOCUMENT_ME), PSI_THREAD_KEY(meb::redo_log_archive_consumer_thread, "ib_meb_rl", - PSI_FLAG_SINGLETON, 0, PSI_DOCUMENT_ME)}; + PSI_FLAG_SINGLETON, 0, PSI_DOCUMENT_ME), + PSI_THREAD_KEY(buf_synchronize_thread, "ib_bp_sync", 0, 0, + PSI_DOCUMENT_ME)}; #endif /* UNIV_PFS_THREAD */ #ifdef UNIV_PFS_IO @@ -1305,6 +1308,12 @@ static SHOW_VAR innodb_status_variables[] = { {"ahi_drop_lookups", (char *)&export_vars.innodb_ahi_drop_lookups, SHOW_LONG, SHOW_SCOPE_GLOBAL}, #endif /* UNIV_DEBUG */ + {"buffer_pool_sync_snapshot_status", + (char*)&export_vars.innodb_buffer_pool_sync_snapshot_status, SHOW_CHAR, + SHOW_SCOPE_GLOBAL}, + {"buffer_pool_sync_recover_status", + (char*) &export_vars.innodb_buffer_pool_sync_recover_status, SHOW_CHAR, + SHOW_SCOPE_GLOBAL}, {NullS, NullS, SHOW_LONG, SHOW_SCOPE_GLOBAL}}; /** Handling the shared INNOBASE_SHARE structure that is needed to provide table @@ -23110,6 +23119,102 @@ char **thd_innodb_interpreter(THD *thd) { } #endif /* UNIV_DEBUG */ +/** Trigger a snapshot of the buffer pool if +innodb_buffer_pool_sync_snapshot_now is set to ON. This function is registered +as a callback with MySQL. +@param[in] thd thread handle +@param[in] var pointer to system variable +@param[out] var_ptr where the formal string goes +@param[in] save immediate result from check function */ +static void buffer_pool_sync_snapshot_now(THD* thd MY_ATTRIBUTE((unused)), + struct SYS_VAR* + var MY_ATTRIBUTE((unused)), + void* var_ptr MY_ATTRIBUTE((unused)), + const void* save) { + if (*(bool*) save && !srv_read_only_mode) { + buf_snapshot_start(); + } +} + +/** Trigger a recover of the buffer pool if innodb_buffer_pool_sync_recover_now +is set to ON. This function is registered as a callback with MySQL. +@param[in] thd thread handle +@param[in] var pointer to system variable +@param[out] var_ptr where the formal string goes +@param[in] save immediate result from check function */ +static void buffer_pool_sync_recover_now(THD* thd MY_ATTRIBUTE((unused)), + struct SYS_VAR* + var MY_ATTRIBUTE((unused)), + void* var_ptr MY_ATTRIBUTE((unused)), + const void* save) { + if (*(bool*) save) { + buf_recover_start(); + } +} + +/** Abort a recover of the buffer pool if innodb_buffer_pool_sync_recover_abort +is set to ON. This function is registered as a callback with MySQL. +@param[in] thd thread handle +@param[in] var pointer to system variable +@param[out] var_ptr where the formal string goes +@param[in] save immediate result from check function */ +static void buffer_pool_sync_recover_abort(THD* thd MY_ATTRIBUTE((unused)), + struct SYS_VAR* + var MY_ATTRIBUTE((unused)), + void* var_ptr MY_ATTRIBUTE((unused)), + const void* save) { + if (*(bool*) save) { + buf_recover_abort(); + } +} + +static MYSQL_SYSVAR_ULONG( + buffer_pool_sync_snapshot_interval, srv_buffer_pool_sync_snapshot_interval, + PLUGIN_VAR_RQCMDARG, + "Time interval to trigger a bufferpool snapshot, unit second", NULL, NULL, + 0, 0, 86400, 0); + +static MYSQL_SYSVAR_ULONG( + buffer_pool_sync_snapshot_threshold, srv_buffer_pool_sync_snapshot_threshold, + PLUGIN_VAR_RQCMDARG, + "Bufferpool change percentage threshold to trigger a bufferpool snapshot", + NULL, NULL, 0, 0, 50, 0); + +static MYSQL_SYSVAR_BOOL(buffer_pool_sync_snapshot_now, + srv_buffer_pool_sync_snapshot_now, PLUGIN_VAR_RQCMDARG, + "Trigger an immediate bufferpool snapshot", NULL, + buffer_pool_sync_snapshot_now, false); + +static MYSQL_SYSVAR_ULONG(buffer_pool_sync_snapshot_pct, + srv_buffer_pool_sync_snapshot_pct, + PLUGIN_VAR_RQCMDARG, + "Snapshot only the hottest N% of each buffer pool", + NULL, NULL, 60, 1, 100, 0); + +static MYSQL_SYSVAR_BOOL( + buffer_pool_sync_recover_now, srv_buffer_pool_sync_recover_now, + PLUGIN_VAR_RQCMDARG, + "Trigger an immediate bufferpool recovery out of ib_bp_info", NULL, + buffer_pool_sync_recover_now, false); + +static MYSQL_SYSVAR_BOOL( + buffer_pool_sync_recover_after_transmit, + srv_buffer_pool_sync_recover_after_transmit, PLUGIN_VAR_RQCMDARG, + "Trigger an immediate bufferpool recovery right after receiving ib_bp_info", + NULL, NULL, false); + +static MYSQL_SYSVAR_BOOL(buffer_pool_sync_recover_abort, + srv_buffer_pool_sync_recover_abort, + PLUGIN_VAR_RQCMDARG, + "Abort a current running recovery of bufferpool", NULL, + buffer_pool_sync_recover_abort, false); + +static MYSQL_SYSVAR_ULONG( + buffer_pool_sync_recover_pct, srv_buffer_pool_sync_recover_pct, + PLUGIN_VAR_RQCMDARG, + "Recover this % of each buffer pool at most during BP recover", NULL, NULL, + 60, 1, 100, 0); + static SYS_VAR *innobase_system_variables[] = { MYSQL_SYSVAR(api_trx_level), MYSQL_SYSVAR(api_bk_commit_interval), @@ -23330,6 +23435,14 @@ static SYS_VAR *innobase_system_variables[] = { #endif /* UNIV_DEBUG */ MYSQL_SYSVAR(parallel_read_threads), MYSQL_SYSVAR(segment_reserve_factor), + MYSQL_SYSVAR(buffer_pool_sync_snapshot_now), + MYSQL_SYSVAR(buffer_pool_sync_snapshot_interval), + MYSQL_SYSVAR(buffer_pool_sync_snapshot_threshold), + MYSQL_SYSVAR(buffer_pool_sync_snapshot_pct), + MYSQL_SYSVAR(buffer_pool_sync_recover_now), + MYSQL_SYSVAR(buffer_pool_sync_recover_abort), + MYSQL_SYSVAR(buffer_pool_sync_recover_after_transmit), + MYSQL_SYSVAR(buffer_pool_sync_recover_pct), nullptr}; mysql_declare_plugin(innobase){ diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h index 6251597..d98a40d 100644 --- a/storage/innobase/include/buf0buf.h +++ b/storage/innobase/include/buf0buf.h @@ -882,9 +882,14 @@ and the lock released later. @param[in] page_id page id @param[in] page_size page size @param[in] unzip true=request uncompressed page +@param[in] old true=old blocks which should be put +to midpoint of LRU list; false=new blocks which should be put to the start. +If the LRU list is very short, the block is put to the start regardless of +this parameter. @return pointer to the block or NULL */ buf_page_t *buf_page_init_for_read(ulint mode, const page_id_t &page_id, - const page_size_t &page_size, bool unzip); + const page_size_t &page_size, bool unzip, + bool old = true); /** Completes an asynchronous read or write request of a file page to or from the buffer pool. @@ -2651,4 +2656,17 @@ inline void buf_block_reset_page_type_on_mismatch(buf_block_t &block, } #include "buf0buf.ic" +/** Generate the path to the buffer pool dump/load/snapshot/recover file. +@param[out] path generated path +@param[in] path_size size of 'path', used as in snprintf(3). +@param[in] filename real filename without directory. */ +void buf_generate_path(char *path, size_t path_size, const char* filename); + +enum status_severity { STATUS_VERBOSE, STATUS_INFO, STATUS_ERR }; + +/* Aux macros to create buf_dump_t and to extract space and page from it */ +inline uint64_t BUF_DUMP_CREATE(space_id_t space, page_no_t page); +constexpr space_id_t BUF_DUMP_SPACE(uint64_t a); +constexpr page_no_t BUF_DUMP_PAGE(uint64_t a); + #endif /* !buf0buf_h */ diff --git a/storage/innobase/include/buf0buf.ic b/storage/innobase/include/buf0buf.ic index c4ced91..6cf31e6 100644 --- a/storage/innobase/include/buf0buf.ic +++ b/storage/innobase/include/buf0buf.ic @@ -1129,4 +1129,21 @@ static inline ulint buf_get_withdraw_depth(buf_pool_t *buf_pool) { : 0); } +/* Used to temporary store dump info in order to avoid IO while holding +buffer pool LRU list mutex during dump and also to sort the contents of the +dump before reading the pages from disk during load. +We store the space id in the high 32 bits and page no in low 32 bits. */ +typedef uint64_t buf_dump_t; + +/* Aux macros to create buf_dump_t and to extract space and page from it */ +inline uint64_t BUF_DUMP_CREATE(space_id_t space, page_no_t page) { + return ut_ull_create(space, page); +} +constexpr space_id_t BUF_DUMP_SPACE(uint64_t a) { + return static_cast((a) >> 32); +} +constexpr page_no_t BUF_DUMP_PAGE(uint64_t a) { + return static_cast((a)&0xFFFFFFFFUL); +} + #endif /* !UNIV_HOTBACKUP */ diff --git a/storage/innobase/include/buf0dump.h b/storage/innobase/include/buf0dump.h index bf9da25..9f381f9 100644 --- a/storage/innobase/include/buf0dump.h +++ b/storage/innobase/include/buf0dump.h @@ -58,8 +58,9 @@ again. */ void buf_dump_thread(); /** Generate the path to the buffer pool dump/load file. -@param[out] path generated path -@param[in] path_size size of 'path', used as in snprintf(3). */ -void buf_dump_generate_path(char *path, size_t path_size); +@param[out] path generated path +@param[in] path_size size of 'path', used as in snprintf(3). +@param[in] filename real filename without directory. */ +void buf_generate_path(char *path, size_t path_size, const char* filename); #endif /* buf0dump_h */ diff --git a/storage/innobase/include/buf0rea.h b/storage/innobase/include/buf0rea.h index 9673ad9..782dc6b 100644 --- a/storage/innobase/include/buf0rea.h +++ b/storage/innobase/include/buf0rea.h @@ -50,13 +50,17 @@ flag is cleared and the x-lock released by an i/o-handler thread. @param[in] page_id page id @param[in] page_size page size @param[in] unzip true=request uncompressed page +@param[in] old true=old blocks which should be put +to midpoint of LRU list; false=new blocks which should be put to the start. +If the LRU list is very short, the block is put to the start regardless of +this parameter. @return 1 if a read request was queued, 0 if the page already resided in buf_pool, or if the page is in the doublewrite buffer blocks in which case it is never read into the pool, or if the tablespace does not exist or is being dropped */ ulint buf_read_page_low(dberr_t *err, bool sync, ulint type, ulint mode, const page_id_t &page_id, const page_size_t &page_size, - bool unzip); + bool unzip, bool old = true); /** High-level function which reads a page asynchronously from a file to the buffer buf_pool if it is not already there. Sets the io_fix flag and sets @@ -74,9 +78,13 @@ released by the i/o-handler thread. @param[in] page_id page id @param[in] page_size page size @param[in] sync true if synchronous aio is desired -@return true if page has been read in, false in case of failure */ +@param[in] old true=old blocks which should be put +to midpoint of LRU list; false=new blocks which should be put to the start. +If the LRU list is very short, the block is put to the start regardless of +this parameter. */ bool buf_read_page_background(const page_id_t &page_id, - const page_size_t &page_size, bool sync); + const page_size_t &page_size, bool sync, + bool old = true); /** Applies a random read-ahead in buf_pool if there are at least a threshold value of accessed pages from the random read-ahead area. Does not read any diff --git a/storage/innobase/include/buf0snapshot.h b/storage/innobase/include/buf0snapshot.h new file mode 100644 index 0000000..99be38b --- /dev/null +++ b/storage/innobase/include/buf0snapshot.h @@ -0,0 +1,60 @@ +/***************************************************************************** + +Copyright (c) 2011, 2023, Oracle and/or its affiliates. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License, version 2.0, as published by the +Free Software Foundation. + +This program is also distributed with certain software (including but not +limited to OpenSSL) that is licensed under separate terms, as designated in a +particular file or component or in included license documentation. The authors +of MySQL hereby grant you an additional permission to link the program and +your derivative works with the separately licensed software that they have +included with MySQL. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License, version 2.0, +for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*****************************************************************************/ + +/** @file include/buf0snpashot.h + Implements a buffer pool snapshot/recover. + + Created June 27, 2023 Songwei Chen + *******************************************************/ + +#ifndef buf0snapshot_h +#define buf0snapshot_h + +#include "univ.i" + +/** Wakes up the buffer pool snapshot/recover thread and instructs it to start +a dump. This function is called by MySQL code via +buffer_pool_sync_snapshot_now() and it should return immediately because the +whole MySQL is frozen during its execution. */ +void buf_snapshot_start(); + +/** Wakes up the buffer pool snapshot/recover thread and instructs it to start +a load. This function is called by MySQL code via buffer_pool_sync_recover_now() +and it should return immediately because the whole MySQL is frozen during +its execution. */ +void buf_recover_start(); + +/** Aborts a currently running buffer pool recover. This function is called by +MySQL code via buffer_pool_sync_recover_abort() and it should return +immediately because the whole MySQL is frozen during its execution. */ +void buf_recover_abort(); + +/** This is the main thread for buffer pool snapshot/recover. It waits for an +event and when waked up either performs a snapshot/recover and sleeps +again. */ +void buf_synchronize_thread(); + +#endif /* buf0snapshot_h */ diff --git a/storage/innobase/include/rem0rec.h b/storage/innobase/include/rem0rec.h index b27be97..3582b1f 100644 --- a/storage/innobase/include/rem0rec.h +++ b/storage/innobase/include/rem0rec.h @@ -399,6 +399,19 @@ start to record origin in bytes. static inline rec_t *rec_copy(void *buf, const rec_t *rec, const ulint *offsets); +/** Copy a physical record key fields to a mem_heap buffer. +@param[in] heap mem_heap to create buffer +@param[in] rec physical record +@param[in] offsets array returned by rec_get_offsets() +@param[in] index which the record belong to +@param[out] extra_len total size of record minus data size of record +@param[out] data_len key fields length +@return pointer to the origin of the copy */ +static inline rec_t *rec_key_fields_copy(mem_heap_t *heap, const rec_t *rec, + const ulint *offsets, + dict_index_t *index, ulint &extra_len, + ulint &data_len); + #ifndef UNIV_HOTBACKUP /** Determines the size of a data tuple prefix in a temporary file. @param[in] index record descriptor diff --git a/storage/innobase/include/rem0rec.ic b/storage/innobase/include/rem0rec.ic index b403877..6c0c80d 100644 --- a/storage/innobase/include/rem0rec.ic +++ b/storage/innobase/include/rem0rec.ic @@ -727,6 +727,33 @@ static inline rec_t *rec_copy(void *buf, const rec_t *rec, return ((byte *)buf + extra_len); } +/** Copy a physical record key fields to a mem_heap buffer. +@param[in] heap mem_heap to create buffer +@param[in] rec physical record +@param[in] offsets array returned by rec_get_offsets() +@param[in] index which the record belong to +@param[out] extra_len total size of record minus data size of record +@param[out] data_len key fields length +@return pointer to the origin of the copy */ +static inline rec_t *rec_key_fields_copy(mem_heap_t *heap, const rec_t *rec, + const ulint *offsets, + dict_index_t *index, ulint &extra_len, + ulint &data_len) { + ut_ad(rec != nullptr); + ut_ad(rec_offs_validate(rec, nullptr, offsets)); + ut_ad(rec_validate(rec, offsets)); + + extra_len = rec_offs_extra_size(offsets); + data_len = + rec_offs_base(offsets)[dict_index_get_n_unique_in_tree_nonleaf(index)] & + REC_OFFS_MASK; + + void *buf = mem_heap_alloc(heap, extra_len + data_len); + ut_memcpy(buf, rec - extra_len, extra_len + data_len); + + return ((byte *)buf); +} + /** Returns the extra size of an old-style physical record if we know its data size and number of fields. */ static inline ulint rec_get_converted_extra_size(ulint data_size, diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h index b3a853b..9bbe90f 100644 --- a/storage/innobase/include/srv0srv.h +++ b/storage/innobase/include/srv0srv.h @@ -262,6 +262,9 @@ struct Srv_threads { next phase (SRV_SHUTDOWN_PURGE) in which master thread is not allowed to use system transactions or touch DD objects. */ os_event_t m_master_ready_for_dd_shutdown; + + /** Thread for buffer pool snapshot/recover. */ + IB_thread m_buf_synchronize; }; /** Check if given thread is still active. */ @@ -782,6 +785,20 @@ extern struct export_var_t export_vars; /** Global counters */ extern srv_stats_t srv_stats; +/** These variables are used for buffer pool synchronization between +master and replicas. */ +extern ulint srv_buffer_pool_sync_snapshot_interval; +extern ulint srv_buffer_pool_sync_snapshot_threshold; +extern bool srv_buffer_pool_sync_snapshot_now; +extern bool srv_buffer_pool_sync_recover_now; +extern bool srv_buffer_pool_sync_recover_abort; +extern bool srv_buffer_pool_sync_recover_after_transmit; +extern ulong srv_buffer_pool_sync_snapshot_pct; +extern ulong srv_buffer_pool_sync_recover_pct; + +/** Event to signal the buffer pool snapshot/recover thread */ +extern os_event_t srv_buf_synchronize_event; + /* Keys to register InnoDB threads with performance schema */ #ifdef UNIV_PFS_THREAD @@ -818,6 +835,7 @@ extern mysql_pfs_key_t trx_recovery_rollback_thread_key; extern mysql_pfs_key_t srv_ts_alter_encrypt_thread_key; extern mysql_pfs_key_t parallel_read_thread_key; extern mysql_pfs_key_t parallel_rseg_init_thread_key; +extern mysql_pfs_key_t buf_synchronize_thread_key; #endif /* UNIV_PFS_THREAD */ #endif /* !UNIV_HOTBACKUP */ @@ -1218,6 +1236,10 @@ struct export_var_t { index lookups when freeing file pages */ #endif /* UNIV_DEBUG */ + char innodb_buffer_pool_sync_snapshot_status + [OS_FILE_MAX_PATH + 128]; /*!< Buf pool snapshot status */ + char innodb_buffer_pool_sync_recover_status + [OS_FILE_MAX_PATH + 128]; /*!< Buf pool recover status */ }; #ifndef UNIV_HOTBACKUP diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc index 3c06f56..9bbd8dc 100644 --- a/storage/innobase/lock/lock0lock.cc +++ b/storage/innobase/lock/lock0lock.cc @@ -4577,6 +4577,9 @@ static void lock_rec_print(FILE *file, /*!< in: file where to print */ fprintf(file, "Record lock, heap no %lu", (ulong)i); if (block) { + /* Check inside buf_page_try_get was moved here. */ + ut_ad(!block->page.was_stale()); + const rec_t *rec; rec = page_find_rec_with_heap_no(buf_block_get_frame(block), i); diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index 3184176..f71b57f 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -94,6 +94,7 @@ this program; if not, write to the Free Software Foundation, Inc., #include "ut0crc32.h" #endif /* !UNIV_HOTBACKUP */ #include "ut0mem.h" +#include "buf0snapshot.h" #ifdef UNIV_HOTBACKUP #include "page0size.h" @@ -651,6 +652,71 @@ static ulint srv_log_writes_and_flush = 0; #endif /* !UNIV_HOTBACKUP */ +/* These variables are used for buffer pool synchronization between +master and slave. + +To snapshot a bufferpool, call the statement below at master side: + SET GLOBAL innodb_buffer_pool_sync_snapshot_now=ON; + +Two triggers are introduced to snapshot bufferpool: + SET GLOBAL innodb_buffer_pool_sync_snapshot_interval=120; + SET GLOBAL innodb_buffer_pool_sync_snapshot_threashold=10; +Set variables above to 0 to disable them. + +Replicas can take the initiative to copy ib_bp_info file from master node, +call the statement below to configure it: + SET GLOBAL innodb_buffer_pool_sync_transmit_enabled=ON; + Stop replica if needed; + Start replica; + SET GLOBAL innodb_buffer_pool_sync_transmit_interval=120; + +To snapshot only the hottest N% pages of each buffer pool for recovering, +call the statement below at master side: + set global innodb_buffer_pool_sync_snapshot_pct=N; + +To recover a bufferpool, call the statement below at slave side: + SET GLOBAL innodb_buffer_pool_sync_recover_now=ON; + +One trigger is introduced to recover bufferpool, If the variable below set, +bufferpool recovery will be executed after each transmition: + SET GLOBAL innodb_buffer_pool_sync_recover_after_transmit=ON; + +To Abort a current running recovery of bufferpool, call the statement +below at slave side: + SET GLOBAL innodb_buffer_pool_sync_recover_abort=ON; + +To recover N% pages of each buffer pool at most during BP recover, +call the statement below at slave side: + set global srv_buffer_pool_sync_recover_pct=N; + +All variables above are read by MySQL and displayed to the user when queried: + SELECT @@innodb_buffer_pool_sync_snapshot_now; + SELECT @@innodb_buffer_pool_sync_snapshot_interval; + SELECT @@innodb_buffer_pool_sync_snapshot_threashold; + SELECT @@innodb_buffer_pool_sync_transmit_enabled; + SELECT @@innodb_buffer_pool_sync_transmit_interval; + SELECT @@innodb_buffer_pool_sync_recover_now; + SELECT @@innodb_buffer_pool_sync_recover_after_transmit; + SELECT @@innodb_buffer_pool_sync_recover_abort; + SELECT @@innodb_buffer_pool_sync_snapshot_pct; + SELECT @@innodb_buffer_pool_sync_recover_pct; + +Attention: the following variales are implemented at sql/sys_vars.cc + innodb_buffer_pool_sync_transmit_enabled + innodb_buffer_pool_sync_transmit_interval*/ + +ulint srv_buffer_pool_sync_snapshot_interval = 0; +ulint srv_buffer_pool_sync_snapshot_threshold = 0; +bool srv_buffer_pool_sync_recover_now = false; +bool srv_buffer_pool_sync_recover_abort = false; +bool srv_buffer_pool_sync_recover_after_transmit = false; +bool srv_buffer_pool_sync_snapshot_now = false; + +/** Snapshot this % of each buffer pool during BP snapshot */ +ulong srv_buffer_pool_sync_snapshot_pct; +/** Recover this % of each buffer pool at most during BP recover */ +ulong srv_buffer_pool_sync_recover_pct; + /* Interval in seconds at which various tasks are performed by the master thread when server is active. In order to balance the workload, we should try to keep intervals such that they are not multiple of @@ -782,6 +848,9 @@ os_event_t srv_error_event; /** Event to signal the buffer pool dump/load thread */ os_event_t srv_buf_dump_event; +/** Event to signal the buffer pool snapshot/recover thread */ +os_event_t srv_buf_synchronize_event; + /** Event to signal the buffer pool resize thread */ os_event_t srv_buf_resize_event; @@ -961,6 +1030,29 @@ static srv_slot_t *srv_reserve_slot( return (slot); } +/** Check if need to snapshot bufferpool. +@param[in] last_data_read The value of srv_stats.data_read last time +@param[out] last_time The last time srv_check_if_need_snapshot + was called +@return true if we have to snapshot bufferpool right now. */ +bool srv_check_if_need_snapshot( + ulint *last_data_read, std::chrono::system_clock::time_point *last_time) { + auto cur_time = std::chrono::system_clock::now(); + std::chrono::seconds snapshot_interval{ + srv_buffer_pool_sync_snapshot_interval}; + + if ((srv_buffer_pool_sync_snapshot_threshold != 0 && + srv_stats.data_read - *last_data_read > + srv_buf_pool_size * srv_buffer_pool_sync_snapshot_threshold / 100) || + (srv_buffer_pool_sync_snapshot_interval != 0 && + std::chrono::system_clock::now() - *last_time > snapshot_interval)) { + *last_time = cur_time; + *last_data_read = srv_stats.data_read; + return (true); + } + return (false); +} + /** Suspends the calling thread to wait for the event in its thread slot. @return the current signal count of the event. */ static int64_t srv_suspend_thread_low( @@ -1177,6 +1269,8 @@ static void srv_init(void) { buf_flush_tick_event = os_event_create(); + srv_buf_synchronize_event = os_event_create(); + UT_LIST_INIT(srv_sys->tasks); } @@ -1226,6 +1320,7 @@ void srv_free(void) { os_event_destroy(srv_buf_dump_event); os_event_destroy(buf_flush_event); os_event_destroy(buf_flush_tick_event); + os_event_destroy(srv_buf_synchronize_event); } os_event_destroy(srv_buf_resize_event); @@ -2681,6 +2776,8 @@ static void srv_master_main_loop(srv_slot_t *slot) { } ulint old_activity_count = srv_get_activity_count(); + ulint last_data_read = srv_stats.data_read; + auto last_snapshot_time = std::chrono::system_clock::now(); while (srv_shutdown_state.load() < SRV_SHUTDOWN_PRE_DD_AND_SYSTEM_TRANSACTIONS) { @@ -2694,6 +2791,16 @@ static void srv_master_main_loop(srv_slot_t *slot) { srv_main_thread_op_info = "checking free log space"; log_free_check(); + if (srv_check_if_need_snapshot(&last_data_read, &last_snapshot_time)) { + buf_snapshot_start(); + } + + if (srv_buffer_pool_sync_recover_after_transmit && + innodb_buffer_pool_transmit_finished) { + innodb_buffer_pool_transmit_finished = false; + buf_recover_start(); + } + if (srv_check_activity(old_activity_count)) { old_activity_count = srv_get_activity_count(); srv_master_do_active_tasks(); diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index 8ede221..c082840 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -57,6 +57,7 @@ this program; if not, write to the Free Software Foundation, Inc., #include "btr0cur.h" #include "buf0buf.h" #include "buf0dump.h" +#include "buf0snapshot.h" #include "current_thd.h" #include "data0data.h" #include "data0type.h" @@ -188,6 +189,7 @@ mysql_pfs_key_t srv_worker_thread_key; mysql_pfs_key_t trx_recovery_rollback_thread_key; mysql_pfs_key_t srv_ts_alter_encrypt_thread_key; mysql_pfs_key_t parallel_rseg_init_thread_key; +mysql_pfs_key_t buf_synchronize_thread_key; #endif /* UNIV_PFS_THREAD */ #ifdef HAVE_PSI_STAGE_INTERFACE @@ -1355,7 +1357,10 @@ static const Thread_to_stop threads_to_stop[]{ []() { os_event_set(srv_buf_resize_event); }, SRV_SHUTDOWN_CLEANUP}, {"master", srv_threads.m_master, srv_wake_master_thread, - SRV_SHUTDOWN_MASTER_STOP}}; + SRV_SHUTDOWN_MASTER_STOP}, + + {"buf_synchronize", srv_threads.m_buf_synchronize, + []() { os_event_set(srv_buf_synchronize_event); }, SRV_SHUTDOWN_CLEANUP}}; void srv_shutdown_exit_threads() { srv_shutdown_state.store(SRV_SHUTDOWN_EXIT_THREADS); @@ -2551,6 +2556,12 @@ void srv_start_threads_after_ddl_recovery() { srv_threads.m_buf_dump.start(); + /* Starts the buffer pool snapshot/recover/scp threads. */ + srv_threads.m_buf_synchronize = + os_thread_create(buf_synchronize_thread_key, 0, buf_synchronize_thread); + + srv_threads.m_buf_synchronize.start(); + /* Resume unfinished (un)encryption process in background thread. */ if (!ts_encrypt_ddl_records.empty()) { srv_threads.m_ts_alter_encrypt = diff --git a/storage/innobase/trx/trx0i_s.cc b/storage/innobase/trx/trx0i_s.cc index 3571d46..9251b4d 100644 --- a/storage/innobase/trx/trx0i_s.cc +++ b/storage/innobase/trx/trx0i_s.cc @@ -621,6 +621,9 @@ void p_s_fill_lock_data(const char **lock_data, const lock_t *lock, return; } + /* Check inside buf_page_try_get was moved here. */ + ut_ad(!block->page.was_stale()); + page = reinterpret_cast(buf_block_get_frame(block)); rec = page_find_rec_with_heap_no(page, heap_no); -- 1.8.3.1