mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
6aa9a552c2
There are a few different cases to consider Logging of CREATE TABLE and CREATE TABLE ... LIKE - If REPLACE is used and there was an existing table, DDL log the drop of the table. - If discovery of table is to be done - DDL LOG create table else - DDL log create table (with engine type) - create the table - If table was created - Log entry to binary log with xid - Mark DDL log completed Crash recovery: - If query was in binary log do nothing and exit - If discoverted table - Delete the .frm file -else - Drop created table and frm file - If table was dropped, write a DROP TABLE statement in binary log CREATE TABLE ... SELECT required a little more work as when one is using statement logging the query is written to the binary log before commit is done. This was fixed by adding a DROP TABLE to the binary log during crash recovery if the ddl log entry was not closed. In this case the binary log will contain: CREATE TABLE xxx ... SELECT .... DROP TABLE xxx; Other things: - Added debug_crash_here() functionality to Aria to be able to test crash in create table between the creation of the .MAI and the .MAD files.
207 lines
7.1 KiB
Text
207 lines
7.1 KiB
Text
SET GLOBAL log_bin_compress=on;
|
|
SET GLOBAL log_bin_compress_min_len=10;
|
|
CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1));
|
|
CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1));
|
|
INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "");
|
|
INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL);
|
|
INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A");
|
|
INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A");
|
|
INSERT INTO t2 SELECT * FROM t1;
|
|
UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL;
|
|
DELETE FROM t1;
|
|
DELETE FROM t2;
|
|
FLUSH BINARY LOGS;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
# at 4
|
|
#<date> server id 1 end_log_pos 256 CRC32 XXX Start: xxx
|
|
ROLLBACK/*!*/;
|
|
# at 256
|
|
#<date> server id 1 end_log_pos 285 CRC32 XXX Gtid list []
|
|
# at 285
|
|
#<date> server id 1 end_log_pos 329 CRC32 XXX Binlog checkpoint master-bin.000001
|
|
# at 329
|
|
#<date> server id 1 end_log_pos 371 CRC32 XXX GTID 0-1-1 ddl
|
|
/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
|
|
/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
|
|
/*!100001 SET @@session.server_id=1*//*!*/;
|
|
/*!100001 SET @@session.gtid_seq_no=1*//*!*/;
|
|
# at 371
|
|
#<date> server id 1 end_log_pos 542 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
use `test`/*!*/;
|
|
SET TIMESTAMP=X/*!*/;
|
|
SET @@session.pseudo_thread_id=5/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0/*!*/;
|
|
SET @@session.sql_mode=#/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=#/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1))
|
|
/*!*/;
|
|
# at 542
|
|
#<date> server id 1 end_log_pos 584 CRC32 XXX GTID 0-1-2 ddl
|
|
/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
|
|
# at 584
|
|
#<date> server id 1 end_log_pos 745 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1))
|
|
/*!*/;
|
|
# at 745
|
|
#<date> server id 1 end_log_pos 787 CRC32 XXX GTID 0-1-3
|
|
/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 787
|
|
#<date> server id 1 end_log_pos 915 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
|
|
/*!*/;
|
|
# at 915
|
|
#<date> server id 1 end_log_pos 988 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 988
|
|
#<date> server id 1 end_log_pos 1030 CRC32 XXX GTID 0-1-4
|
|
/*!100001 SET @@session.gtid_seq_no=4*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 1030
|
|
#<date> server id 1 end_log_pos 1158 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
|
|
/*!*/;
|
|
# at 1158
|
|
#<date> server id 1 end_log_pos 1231 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 1231
|
|
#<date> server id 1 end_log_pos 1273 CRC32 XXX GTID 0-1-5
|
|
/*!100001 SET @@session.gtid_seq_no=5*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 1273
|
|
#<date> server id 1 end_log_pos 1403 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
|
|
/*!*/;
|
|
# at 1403
|
|
#<date> server id 1 end_log_pos 1476 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 1476
|
|
#<date> server id 1 end_log_pos 1518 CRC32 XXX GTID 0-1-6
|
|
/*!100001 SET @@session.gtid_seq_no=6*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 1518
|
|
#<date> server id 1 end_log_pos 1645 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
|
|
/*!*/;
|
|
# at 1645
|
|
#<date> server id 1 end_log_pos 1718 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 1718
|
|
#<date> server id 1 end_log_pos 1760 CRC32 XXX GTID 0-1-7
|
|
/*!100001 SET @@session.gtid_seq_no=7*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 1760
|
|
#<date> server id 1 end_log_pos 1868 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
INSERT INTO t2 SELECT * FROM t1
|
|
/*!*/;
|
|
# at 1868
|
|
#<date> server id 1 end_log_pos 1941 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 1941
|
|
#<date> server id 1 end_log_pos 1983 CRC32 XXX GTID 0-1-8
|
|
/*!100001 SET @@session.gtid_seq_no=8*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 1983
|
|
#<date> server id 1 end_log_pos 2100 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
|
|
/*!*/;
|
|
# at 2100
|
|
#<date> server id 1 end_log_pos 2173 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 2173
|
|
#<date> server id 1 end_log_pos 2215 CRC32 XXX GTID 0-1-9
|
|
/*!100001 SET @@session.gtid_seq_no=9*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 2215
|
|
#<date> server id 1 end_log_pos 2306 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
DELETE FROM t1
|
|
/*!*/;
|
|
# at 2306
|
|
#<date> server id 1 end_log_pos 2379 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 2379
|
|
#<date> server id 1 end_log_pos 2421 CRC32 XXX GTID 0-1-10
|
|
/*!100001 SET @@session.gtid_seq_no=10*//*!*/;
|
|
START TRANSACTION
|
|
/*!*/;
|
|
# at 2421
|
|
#<date> server id 1 end_log_pos 2512 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
DELETE FROM t2
|
|
/*!*/;
|
|
# at 2512
|
|
#<date> server id 1 end_log_pos 2585 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
|
SET TIMESTAMP=X/*!*/;
|
|
COMMIT
|
|
/*!*/;
|
|
# at 2585
|
|
#<date> server id 1 end_log_pos 2633 CRC32 XXX Rotate to master-bin.000002 pos: 4
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
|
|
|
|
Test mysqlbinlog | mysql type point-in-time recovery with compressed events.
|
|
|
|
FLUSH BINARY LOGS;
|
|
CREATE TABLE t3 (a INT PRIMARY KEY, b INT, c VARCHAR(100));
|
|
INSERT INTO t3 VALUES (0, 10, "hello");
|
|
BEGIN;
|
|
INSERT INTO t3 VALUES (1, 10, "cat"), (2, 10, "mouse"), (3, 10, "dog");
|
|
INSERT INTO t3 VALUES (4, 10, "goodbye");
|
|
COMMIT;
|
|
DELETE FROM t3 WHERE a=2;
|
|
SELECT * FROM t3 ORDER BY a;
|
|
a b c
|
|
0 10 hello
|
|
1 10 cat
|
|
3 10 dog
|
|
4 10 goodbye
|
|
FLUSH LOGS;
|
|
DROP TABLE t3;
|
|
SELECT * FROM t3 ORDER BY a;
|
|
a b c
|
|
0 10 hello
|
|
1 10 cat
|
|
3 10 dog
|
|
4 10 goodbye
|
|
DROP TABLE t1,t2,t3;
|
|
SET GLOBAL log_bin_compress=off;
|
|
SET GLOBAL log_bin_compress_min_len=256;
|