mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 531935992a
			
		
	
	
	531935992a
	
	
	
		
			
			* FreeBSD returns errno 31 (EMLINK, Too many links), not 40 (ELOOP, Too many levels of symbolic links) * (`mysqlbinlog|mysql`) was just crazy, why did it ever work? * socket_ipv6.inc check (that checked whether ipv6 is supported) only worked correctly when ipv6 was supported * perfschema.socket_summary_by_instance was changing global variables and then skip-ing the test (because on missing ipv6)
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # ==== Purpose ====
 | |
| #
 | |
| # Test verifies that continuous streaming of binary log content using the
 | |
| # "mysqlbinlog --stop-never" option and sourcing it to mysql client works
 | |
| # fine.
 | |
| #
 | |
| # ==== Implementation ====
 | |
| #
 | |
| # Steps:
 | |
| #    1 - Create a table on a server on which binary log is enabled and insert
 | |
| #        a row.
 | |
| #    2 - Disable the binary log on the server and drop the table.
 | |
| #    3 - Capture the binary log output using "mysqlbinlog --stop_never" option
 | |
| #        and source it to mysql client.
 | |
| #    4 - Query the PROCESSLIST table to ensure that the dump thread which is
 | |
| #        serving "stop_never" option has read entire binlog.
 | |
| #    5 - Verify that the table is populated on the server.
 | |
| #    6 - Cleanup.
 | |
| #
 | |
| # ==== References ====
 | |
| #
 | |
| # MDEV-11154: Write_on_release_cache(log_event.cc) function will not write
 | |
| #             "COMMIT", if use "mysqlbinlog ... | mysql ..."
 | |
| 
 | |
| --source include/not_windows.inc
 | |
| 
 | |
| # Test is not specific to any binlog format. Hence Running only for 'row'.
 | |
| --source include/have_binlog_format_row.inc
 | |
| 
 | |
| # binlog file name is needed in the test. To use master-bin.000001,
 | |
| # RESET MASTER is needed.
 | |
| RESET MASTER;
 | |
| # kill the dump threads if there any dump threads (may be from previous test)
 | |
| --source include/stop_dump_threads.inc
 | |
| 
 | |
| --echo # Step-1: Execute some dummy statements.
 | |
| CREATE TABLE t1(i int);
 | |
| INSERT INTO t1 values (1);
 | |
| 
 | |
| --echo # Step-2: Disable binary log temporarily and drop the table 't1'.
 | |
| set @@SESSION.SQL_LOG_BIN = 0;
 | |
| DROP TABLE t1;
 | |
| set @@SESSION.SQL_LOG_BIN = 1;
 | |
| 
 | |
| --echo # Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
 | |
| --exec ($MYSQL_BINLOG --read-from-remote-server --stop-never --user=root --host=127.0.0.1 --port=$MASTER_MYPORT  master-bin.000001 | $MYSQL --user=root --protocol=tcp --host=127.0.0.1 --port=$MASTER_MYPORT) < /dev/null > /dev/null 2>&1  &
 | |
| 
 | |
| --echo # Step-4: Wait till dump thread transfer is completed.
 | |
| let $wait_condition= SELECT id from information_schema.processlist where processlist.command like '%Binlog%' and state like '%Master has sent%';
 | |
| --source include/wait_condition.inc
 | |
| 
 | |
| --echo # Step-5: Check that the data is there.
 | |
| let $count= 1;
 | |
| let $table= test.t1;
 | |
| source include/wait_until_rows_count.inc;
 | |
| 
 | |
| --echo # Step-6: Cleanup
 | |
| --echo # kill the dump thread serving the mysqlbinlog --stop-never process
 | |
| --source include/stop_dump_threads.inc
 | |
| 
 | |
| DROP TABLE t1;
 |