Description:
Add some status variables to report the binlog activity, such as the following (binlog_total_bytes)
mysql> update t_item set col2=col2-1 where col1=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> show status like 'binlog%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 1 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Binlog_total_bytes | 191 |
+----------------------------+-------+
5 rows in set (0.00 sec)
mysql> update t_item set col2=col2-1 where col1=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> show status like 'binlog%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 2 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Binlog_total_bytes | 382 |
+----------------------------+-------+
5 rows in set (0.00 sec)
So we will be able to get the binlog generated during a time period.
The code for binlog dump and binlog relay is not finished.
How to repeat:
N/A
Suggested fix:
diff -rc --exclude='*.orig' --exclude=sql_yacc.h --exclude=sql_yacc.cc mysql-5.6.20/sql/binlog.cc mysql-5.6.20-patched/sql/binlog.cc
*** mysql-5.6.20/sql/binlog.cc 2014-07-18 23:48:39.000000000 +0800
--- mysql-5.6.20-patched/sql/binlog.cc 2014-08-27 19:03:02.000000000 +0800
***************
*** 38,43 ****
--- 38,45 ----
using std::string;
using std::list;
+ extern ulonglong binlog_total_bytes;
+
#define FLAGSTR(V,F) ((V)&(F)?#F" ":"")
/**
***************
*** 6931,6936 ****
--- 6933,6943 ----
flush_error= result.first;
}
+ if (total_bytes > 0)
+ {
+ binlog_total_bytes += total_bytes;
+ }
+
if (need_LOCK_log)
mysql_mutex_unlock(&LOCK_log);
diff -rc --exclude='*.orig' --exclude=sql_yacc.h --exclude=sql_yacc.cc mysql-5.6.20/sql/mysqld.cc mysql-5.6.20-patched/sql/mysqld.cc
*** mysql-5.6.20/sql/mysqld.cc 2014-07-18 23:48:39.000000000 +0800
--- mysql-5.6.20-patched/sql/mysqld.cc 2014-08-27 19:06:56.000000000 +0800
***************
*** 547,552 ****
--- 547,553 ----
bool thread_cache_size_specified= false;
bool host_cache_size_specified= false;
bool table_definition_cache_specified= false;
+ ulonglong binlog_total_bytes=0;
Error_log_throttle err_log_throttle(Log_throttle::LOG_THROTTLE_WINDOW_SIZE,
sql_print_error,
***************
*** 7887,7892 ****
--- 7888,7894 ----
{"Binlog_cache_use", (char*) &binlog_cache_use, SHOW_LONG},
{"Binlog_stmt_cache_disk_use",(char*) &binlog_stmt_cache_disk_use, SHOW_LONG},
{"Binlog_stmt_cache_use", (char*) &binlog_stmt_cache_use, SHOW_LONG},
+ {"Binlog_total_bytes", (char*) &binlog_total_bytes, SHOW_LONGLONG},
{"Bytes_received", (char*) offsetof(STATUS_VAR, bytes_received), SHOW_LONGLONG_STATUS},
{"Bytes_sent", (char*) offsetof(STATUS_VAR, bytes_sent), SHOW_LONGLONG_STATUS},
{"Com", (char*) com_status_vars, SHOW_ARRAY},
***************
*** 8195,8200 ****
--- 8197,8203 ----
delayed_insert_errors= thread_created= 0;
specialflag= 0;
binlog_cache_use= binlog_cache_disk_use= 0;
+ binlog_total_bytes= 0;
max_used_connections= slow_launch_threads = 0;
mysqld_user= mysqld_chroot= opt_init_file= opt_bin_logname = 0;
prepared_stmt_count= 0;
Description: Add some status variables to report the binlog activity, such as the following (binlog_total_bytes) mysql> update t_item set col2=col2-1 where col1=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> show status like 'binlog%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Binlog_cache_disk_use | 0 | | Binlog_cache_use | 1 | | Binlog_stmt_cache_disk_use | 0 | | Binlog_stmt_cache_use | 0 | | Binlog_total_bytes | 191 | +----------------------------+-------+ 5 rows in set (0.00 sec) mysql> update t_item set col2=col2-1 where col1=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> show status like 'binlog%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Binlog_cache_disk_use | 0 | | Binlog_cache_use | 2 | | Binlog_stmt_cache_disk_use | 0 | | Binlog_stmt_cache_use | 0 | | Binlog_total_bytes | 382 | +----------------------------+-------+ 5 rows in set (0.00 sec) So we will be able to get the binlog generated during a time period. The code for binlog dump and binlog relay is not finished. How to repeat: N/A Suggested fix: diff -rc --exclude='*.orig' --exclude=sql_yacc.h --exclude=sql_yacc.cc mysql-5.6.20/sql/binlog.cc mysql-5.6.20-patched/sql/binlog.cc *** mysql-5.6.20/sql/binlog.cc 2014-07-18 23:48:39.000000000 +0800 --- mysql-5.6.20-patched/sql/binlog.cc 2014-08-27 19:03:02.000000000 +0800 *************** *** 38,43 **** --- 38,45 ---- using std::string; using std::list; + extern ulonglong binlog_total_bytes; + #define FLAGSTR(V,F) ((V)&(F)?#F" ":"") /** *************** *** 6931,6936 **** --- 6933,6943 ---- flush_error= result.first; } + if (total_bytes > 0) + { + binlog_total_bytes += total_bytes; + } + if (need_LOCK_log) mysql_mutex_unlock(&LOCK_log); diff -rc --exclude='*.orig' --exclude=sql_yacc.h --exclude=sql_yacc.cc mysql-5.6.20/sql/mysqld.cc mysql-5.6.20-patched/sql/mysqld.cc *** mysql-5.6.20/sql/mysqld.cc 2014-07-18 23:48:39.000000000 +0800 --- mysql-5.6.20-patched/sql/mysqld.cc 2014-08-27 19:06:56.000000000 +0800 *************** *** 547,552 **** --- 547,553 ---- bool thread_cache_size_specified= false; bool host_cache_size_specified= false; bool table_definition_cache_specified= false; + ulonglong binlog_total_bytes=0; Error_log_throttle err_log_throttle(Log_throttle::LOG_THROTTLE_WINDOW_SIZE, sql_print_error, *************** *** 7887,7892 **** --- 7888,7894 ---- {"Binlog_cache_use", (char*) &binlog_cache_use, SHOW_LONG}, {"Binlog_stmt_cache_disk_use",(char*) &binlog_stmt_cache_disk_use, SHOW_LONG}, {"Binlog_stmt_cache_use", (char*) &binlog_stmt_cache_use, SHOW_LONG}, + {"Binlog_total_bytes", (char*) &binlog_total_bytes, SHOW_LONGLONG}, {"Bytes_received", (char*) offsetof(STATUS_VAR, bytes_received), SHOW_LONGLONG_STATUS}, {"Bytes_sent", (char*) offsetof(STATUS_VAR, bytes_sent), SHOW_LONGLONG_STATUS}, {"Com", (char*) com_status_vars, SHOW_ARRAY}, *************** *** 8195,8200 **** --- 8197,8203 ---- delayed_insert_errors= thread_created= 0; specialflag= 0; binlog_cache_use= binlog_cache_disk_use= 0; + binlog_total_bytes= 0; max_used_connections= slow_launch_threads = 0; mysqld_user= mysqld_chroot= opt_init_file= opt_bin_logname = 0; prepared_stmt_count= 0;