These files contain binlog events in ROW format representing the failed transaction. That means that the slave thread was not able to apply one of the transactions. For each of those file, a corresponding warning or error message is present in the mysql error log file. Those error can also be false positives like a bad DDL statement (dropping a table that doesn’t exists for example) and therefore nothing to worry about. However it’s always recommended to check these log to understand what’s is happening.
To be able to analyze these files binlog header needs to be added to the log file. To create the GRA_HEADER file you need an instance running with binlog_checksum set to NONE and extract first 120 bytes from the binlog file:
$ head -c 120 mysqld-bin.000001 > GRA_HEADER $ cat GRA_HEADER > /var/lib/mysql/GRA_1_2-bin.log $ cat /var/lib/mysql/GRA_1_2.log >> /var/lib/mysql/GRA_1_2-bin.log $ mysqlbinlog -vvv /var/lib/mysql/GRA_1_2-bin.log /*!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 #160805 9:35:35 server id 1 end_log_pos 120 Start: binlog v 4, server v 5.6.30-76.3-56-log created 160805 9:35:35 at startup # Warning: this binlog is either in use or was not closed properly. ROLLBACK/*!*/; BINLOG ' 512kVw8BAAAAdAAAAHgAAAABAAQANS42LjMwLTc2LjMtNTYtbG9nAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAADnXaRXEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAOfS sRE= '/*!*/; # at 120 #160805 9:33:37 server id 0 end_log_pos 79 Query thread_id=27 exec_time=0 error_code=0 use `world`/*!*/; SET TIMESTAMP=1470389617/*!*/; SET @@session.pseudo_thread_id=27/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=1073741824/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8 *//*!*/; SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; drop table test /*!*/; DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
This information can be used for checking the MySQL error log for the corresponding error message.
160805 9:33:37 8:52:21 [ERROR] Slave SQL: Error 'Unknown table 'test'' on query. Default database: 'test'. Query: 'drop table test', Error_code: 1051 160805 9:33:37 8:52:21 [Warning] WSREP: RBR event 1 Query apply warning: 1, 3
In this example DROP TABLE statement was executed on a table that doesn’t exist.
This file is used as a main writeset store. It’s implemented as a permanent ring-buffer file that is preallocated on disk when the node is initialized. File size can be controlled with the variable gcache.size. If this value is bigger, more writesets are cached and chances are better that the re-joining node will get IST instead of SST. Filename can be changed with the gcache.name variable.
This file contains the Galera state information.
Examples of this file look like this:
In case server node has this state when not running it means that that node crashed during the transaction processing.
# GALERA saved state version: 2.1 uuid: 1917033b-7081-11e2-0800-707f5d3b106b seqno: -1 cert_index:
In case server node has this state when not running it means that the node was gracefully shut down.
# GALERA saved state version: 2.1 uuid: 1917033b-7081-11e2-0800-707f5d3b106b seqno: 5192193423942 cert_index:
In case server node has this state when not running it means that the node crashed during the DDL.
# GALERA saved state version: 2.1 uuid: 00000000-0000-0000-0000-000000000000 seqno: -1 cert_index:
gvwstate.dat This file is used for Primary Component recovery feature. This file is created once primary component is formed or changed, so you can get the latest primary component this node was in. And this file is deleted when the node is shutdown gracefully.
First part contains the node UUID information. Second part contains the view information. View information is written between #vwbeg and #vwend. View information consists of:
view_id: [view_type] [view_uuid] [view_seq]. - view_type is always 3 which means primary view. view_uuid and view_seq identifies a unique view, which could be perceived as identifier of this primary component.
bootstrap: [bootstarp_or_not]. - It could be 0 or 1, but it does not affect primary component recovery process now.
member: [node’s uuid] [node’s segment]. - it represents all nodes in this primary component.
Example of this file looks like this:my_uuid: c5d5d990-30ee-11e4-aab1-46d0ed84b408 #vwbeg view_id: 3 bc85bd53-31ac-11e4-9895-1f2ce13f2542 2 bootstrap: 0 member: bc85bd53-31ac-11e4-9895-1f2ce13f2542 0 member: c5d5d990-30ee-11e4-aab1-46d0ed84b408 0 #vwend
For general inquiries, please send us your question and someone will contact you.