today,i'll using the open source tool named "binlog2sql" which is release by danfengchao to do some flashback test.
    here's the github address:https://github.com/danfengcao/binlog2sql
    according to the readme.md doc,using "git" command to download it at the beginning:

 ns-notepc399+jujun@ns-notepc399 MINGW64 /d/vagrant
$ git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
Cloning into 'binlog2sql'...
remote: Counting objects: , done.
remote: Total (delta ), reused (delta ), pack-reused
Receiving objects: % (/), 142.05 KiB | 108.00 KiB/s, done.
Resolving deltas: % (/), done.
ns-notepc399+jujun@ns-notepc399 MINGW64 /d/vagrant/binlog2sql (master)
    secondly,"pip" command need to be installed,which can be downloaded on the official
    the latest version is 10.0.1 now,i choose the tar package to download.
 
 [root@zlm3 :: /vagrant/pip-10.0.]
#pwd
/vagrant/pip-10.0. [root@zlm3 :: /vagrant/pip-10.0.]
#ls -l
total
-rwxrwxrwx vagrant vagrant Jun : AUTHORS.txt
drwxrwxrwx vagrant vagrant Jun : build
drwxrwxrwx vagrant vagrant Jun : dist
drwxrwxrwx vagrant vagrant Apr : docs
-rwxrwxrwx vagrant vagrant Jun : LICENSE.txt
-rwxrwxrwx vagrant vagrant Jun : MANIFEST.in
-rwxrwxrwx vagrant vagrant Jun : NEWS.rst
-rwxrwxrwx vagrant vagrant Jun : PKG-INFO
-rwxrwxrwx vagrant vagrant Jun : pyproject.toml
-rwxrwxrwx vagrant vagrant Jun : README.rst
-rwxrwxrwx vagrant vagrant Jun : setup.cfg
-rwxrwxrwx vagrant vagrant Jun : setup.py
drwxrwxrwx vagrant vagrant Apr : src [root@zlm3 :: /vagrant/pip-10.0.]
#python install setup.py
python: can't open file 'install': [Errno 2] No such file or directory [root@zlm3 :: /vagrant/pip-10.0.]
#python setup.py install
/usr/lib64/python2./distutils/dist.py:: UserWarning: Unknown distribution option: 'python_requires'
warnings.warn(msg)
running install
running bdist_egg
running egg_info
writing requirements to src/pip.egg-info/requires.txt
writing src/pip.egg-info/PKG-INFO
writing top-level names to src/pip.egg-info/top_level.txt
writing dependency_links to src/pip.egg-info/dependency_links.txt
writing entry points to src/pip.egg-info/entry_points.txt
reading manifest file 'src/pip.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
... -- Here,i omitted the output 'cause too many rows.
    then,use the "pip" command to install necessary python package below:
 
 [root@zlm3 :: /root/binlog2sql]
#pwd
/vagrant/binlog2sql [root@zlm3 :: /root/binlog2sql]
#ls -l
total
drwxrwxrwx root root Jun : binlog2sql
drwxrwxrwx root root Jun : example
-rwxrwxrwx root root Jun : LICENSE
-rwxrwxrwx root root Jun : README.md
-rwxrwxrwx root root Jun : requirements.txt
drwxrwxrwx root root Jun : tests [root@zlm3 :: /root/binlog2sql]
#cat requirements.txt
PyMySQL==0.7.
wheel==0.29.
mysql-replication==0.13 [root@zlm3 :: /root/binlog2sql]
#pip install -r requirements.txt
Collecting PyMySQL==0.7. (from -r requirements.txt (line ))
Downloading https://files.pythonhosted.org/packages/c6/42/c54c280d8418039bd2f61284f99cb6d9e0eae80383fc72ceb6eac67855fe/PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)
% |?..?..?..?..?..?..?..?..?..?..?..?..?..?..?..?..| 81kB 145kB/s
Collecting wheel==0.29. (from -r requirements.txt (line ))
Downloading https://files.pythonhosted.org/packages/8a/e9/8468cd68b582b06ef554be0b96b59f59779627131aad48f8a5bce4b13450/wheel-0.29.0-py2.py3-none-any.whl (66kB)
% |?..?..?..?..?..?..?..?..?..?..?..?..?..?..?..?..| 71kB 356kB/s
Collecting mysql-replication==0.13 (from -r requirements.txt (line ))
Downloading https://files.pythonhosted.org/packages/dd/23/384047702e694139e9fe75a8ba7ad007e8942fd119ebadabc32ce19f70f2/mysql-replication-0.13.tar.gz
Installing collected packages: PyMySQL, wheel, mysql-replication
Running setup.py install for mysql-replication ... done
Successfully installed PyMySQL-0.7. mysql-replication-0.13 wheel-0.29. [root@zlm3 :: /root/binlog2sql]
#
  the binlog2sql tool has been installed,let's begin the test now:
 
 (root@localhost mysql3306.sock)[zlm]::>create table flash_test(
-> id int unsigned not null auto_increment,
-> code bigint unsigned not null default '',
-> primary key(id)
-> ) engine=innodb charset utf8mb4;
Query OK, rows affected (0.02 sec) (root@localhost mysql3306.sock)[zlm]::>delimiter $$
(root@localhost mysql3306.sock)[zlm]::>create procedure pro_insert (count int)
-> begin
-> declare i int unsigned default ;
-> start transaction;
-> while i < count do
-> insert into flash_test(code) values(i);
-> set i=i+;
-> end while;
-> commit;
-> end;
-> $$
Query OK, rows affected (0.00 sec) (root@localhost mysql3306.sock)[zlm]::>delimiter ;
(root@localhost mysql3306.sock)[zlm]::>call pro_insert();
Query OK, rows affected (0.33 sec) (root@localhost mysql3306.sock)[zlm]::>select count(*) from flash_test;
+----------+
| count(*) |
+----------+
| |
+----------+
row in set (0.01 sec) (root@localhost mysql3306.sock)[zlm]::>select * from flash_test limit ;
+----+------+
| id | code |
+----+------+
| | |
| | |
| | |
| | |
| | |
+----+------+
rows in set (0.00 sec) (root@localhost mysql3306.sock)[zlm]::>
  then,pretend to delete all the records in the table "flash_table" by accidentally:
 
 (root@localhost mysql3306.sock)[zlm]::>show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin. | |
| mysql-bin. | |
| mysql-bin. | |
+------------------+-----------+
rows in set (0.00 sec) (root@localhost mysql3306.sock)[zlm]::>flush logs;
Query OK, rows affected (0.02 sec) (root@localhost mysql3306.sock)[zlm]::>delete from flash_test;
Query OK, rows affected (0.05 sec) (root@localhost mysql3306.sock)[zlm]::>select count(*) from flash_test;
+----------+
| count(*) |
+----------+
| |
+----------+
row in set (0.00 sec) (root@localhost mysql3306.sock)[zlm]::>show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin. | |
| mysql-bin. | |
| mysql-bin. | |
| mysql-bin. | |
+------------------+-----------+
rows in set (0.00 sec) (root@localhost mysql3306.sock)[zlm]::>
   it's the right time using the binlog2sql to flashback the missing data:
 
 [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000004'
Traceback (most recent call last):
File "binlog2sql.py", line , in <module>
back_interval=args.back_interval, only_dml=args.only_dml, sql_type=args.sql_type)
File "binlog2sql.py", line , in __init__
self.connection = pymysql.connect(**self.conn_setting)
File "/usr/lib/python2.7/site-packages/pymysql/__init__.py", line , in Connect
return Connection(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in __init__
self.connect()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in connect
self._request_authentication()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in _request_authentication
auth_packet = self._read_packet()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in _read_packet
packet.check_error()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in check_error
err.raise_mysql_exception(self._data)
File "/usr/lib/python2.7/site-packages/pymysql/err.py", line , in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.OperationalError: (, u"Access denied for user 'root'@'zlm3' (using password: YES)") --It seems the connection failure. [root@zlm3 :: ~/binlog2sql/binlog2sql]
#mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5.7.-log MySQL Community Server (GPL) Copyright (c) , , Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. (root@localhost mysql3306.sock)[(none)]::>alter user 'root'@'192.168.1.102' identified by 'Passw0rd';
ERROR (HY000): Operation ALTER USER failed for 'root'@'192.168.1.102'
(root@localhost mysql3306.sock)[(none)]::>create user 'root'@'192.168.1.102' identified by 'Passw0rd';
Query OK, rows affected (0.00 sec) (root@localhost mysql3306.sock)[(none)]::>exit
Bye [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000004'
Traceback (most recent call last):
File "binlog2sql.py", line , in <module>
back_interval=args.back_interval, only_dml=args.only_dml, sql_type=args.sql_type)
File "binlog2sql.py", line , in __init__
cursor.execute("SHOW MASTER STATUS")
File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line , in execute
result = self._query(query)
File "/usr/lib/python2.7/site-packages/pymysql/cursors.py", line , in _query
conn.query(q)
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in _read_query_result
result.read()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in read
first_packet = self.connection._read_packet()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in _read_packet
packet.check_error()
File "/usr/lib/python2.7/site-packages/pymysql/connections.py", line , in check_error
err.raise_mysql_exception(self._data)
File "/usr/lib/python2.7/site-packages/pymysql/err.py", line , in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.InternalError: (, u'Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation') --The user 'root'@'192.168.1.102' is short of imperative privileges. [root@zlm3 :: ~/binlog2sql/binlog2sql]
#mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5.7.-log MySQL Community Server (GPL) Copyright (c) , , Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. (root@localhost mysql3306.sock)[(none)]::>grant select,replication slave,replication client on *.* to 'root'@'192.168.1.102';
Query OK, rows affected (0.00 sec) (root@localhost mysql3306.sock)[(none)]::>exit
Bye [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000004'
CREATE USER 'root'@'192.168.1.102' IDENTIFIED WITH 'mysql_native_password' AS '*DDFB542AA0BD1D251995D81AEBEB96DEEAD1132F';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'192.168.1.102'; [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000003'
CREATE USER 'repl'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*872ECE72A7EBAC6A183C90D7043D5F359BD85A9E';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
USE zlm;
create table flash_test(
id int unsigned not null auto_increment,
code bigint unsigned not null default '',
primary key(id)
) engine=innodb charset utf8mb4;
USE zlm;
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_insert`(count int)
begin
declare i int unsigned default ;
start transaction;
while i < count do
insert into flash_test(code) values(i);
set i=i+;
end while;
commit;
end; [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000004' --only-dml --sql-typedelete --stop-never > flashback.sql
usage: binlog2sql.py [-h HOST] [-u USER] [-p PASSWORD] [-P PORT]
[--start-file START_FILE] [--start-position START_POS]
[--stop-file END_FILE] [--stop-position END_POS]
[--start-datetime START_TIME] [--stop-datetime STOP_TIME]
[--stop-never] [--help] [-d [DATABASES [DATABASES ...]]]
[-t [TABLES [TABLES ...]]] [--only-dml]
[--sql-type [SQL_TYPE [SQL_TYPE ...]]] [-K] [-B]
[--back-interval BACK_INTERVAL]
binlog2sql.py: error: unrecognized arguments: --sql-typedelete [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000004' --only-dml --sql-type delete --stop-never > flashback.sql [root@zlm3 :: ~/binlog2sql/binlog2sql]
#cat flashback.sql [root@zlm3 :: ~/binlog2sql/binlog2sql]
#ls -l
total
-rwxrwxrwx root root Jun : binlog2sql.py
-rwxrwxrwx root root Jun : binlog2sql_util.py
-rw-r--r-- root root Jun : binlog2sql_util.pyc
-rw-r--r-- root root Jun : flashback.sql
-rwxrwxrwx root root Jun : __init__.py [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='mysql-bin.000003' --only-dml --sql-type delete --stop-never > flashback.sql [root@zlm3 :: ~/binlog2sql/binlog2sql]
#cat flashback.sql [root@zlm3 :: ~/binlog2sql/binlog2sql]
#
    what's amazing is that there're no delete operation found in the existent binlog files at all,how can that happen?let's use the original tool of MySQL itself's to see the details:
 
 [root@zlm3 :: ~/binlog2sql/binlog2sql]
#mysqlbinlog -vv --base64-output=decode-rows /data/mysql/mysql3306/logs/mysql-bin. > flashback1.sql [root@zlm3 :: ~/binlog2sql/binlog2sql]
#ls -l
total
-rwxrwxrwx root root Jun : binlog2sql.py
-rwxrwxrwx root root Jun : binlog2sql_util.py
-rw-r--r-- root root Jun : binlog2sql_util.pyc
-rw-r--r-- root root Jun : flashback1.sql
-rw-r--r-- root root Jun : flashback.sql
-rwxrwxrwx root root Jun : __init__.py [root@zlm3 :: ~/binlog2sql/binlog2sql]
#cat flashback1.sql | sed -n '1,100p'
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at
# :: server id end_log_pos CRC32 0xea71a6c0 Start: binlog v , server v 5.7.-log created ::
# Warning: this binlog is either in use or was not closed properly.
# at
# :: server id end_log_pos CRC32 0x7fe5f98f Previous-GTIDs
# 5c77c31b-4add-11e8-81e2-080027de0e0e:-
# at
# :: server id end_log_pos CRC32 0x7792ab23 GTID last_committed= sequence_number= rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= '5c77c31b-4add-11e8-81e2-080027de0e0e:13'/*!*/;
# at
# :: server id end_log_pos CRC32 0x3eb43079 Query thread_id= exec_time= error_code=
SET TIMESTAMP=/*!*/;
SET @@session.pseudo_thread_id=/*!*/;
SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=/*!*/;
SET @@session.sql_mode=/*!*/;
SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
SET @@session.lc_time_names=/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at
# :: server id end_log_pos CRC32 0x31c37710 Table_map: `zlm`.`flash_test` mapped to number
# at
# :: server id end_log_pos CRC32 0xd8a33ccb Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x1105fcdc Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x4702cdba Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0xf49afbfa Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x8fc2a48e Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x947c8ca2 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x4d1b4f53 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x76275b27 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x99c0b33c Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x132f757d Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x047a5f63 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0xf5026c08 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0xd58c93f3 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x8a7ea487 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0xe0450750 Delete_rows: table id
# at
# :: server id end_log_pos CRC32 0x336c7539 Delete_rows: table id flags: STMT_END_F
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */
### DELETE FROM `zlm`.`flash_test`
### WHERE
### @= /* INT meta=0 nullable=0 is_null=0 */
### @= /* LONGINT meta=0 nullable=0 is_null=0 */ -- This is the deletion of record no. in the original table "flash_table". [root@zlm3 :: ~/binlog2sql/binlog2sql]
#
    throught the evidence above,i'm afaid the binlog2sql tool didn't recognize the right path of the binlog files and  cast an exception at all.Am i right?
 
 [root@zlm3 :: ~/binlog2sql/binlog2sql]
#python binlog2sql.py -h192.168.1. -P3306 -uroot -pPassw0rd -dzlm -tflash_table --start-file='/data/mysql/mysql3306/logs/mysql-bin.000004' --only-dml --sql-type delete --stop-never > flashback3.sql
Traceback (most recent call last):
File "binlog2sql.py", line , in <module>
back_interval=args.back_interval, only_dml=args.only_dml, sql_type=args.sql_type)
File "binlog2sql.py", line , in __init__
raise ValueError('parameter error: start_file %s not in mysql server' % self.start_file)
ValueError: parameter error: start_file /data/mysql/mysql3306/logs/mysql-bin. not in mysql server [root@zlm3 :: ~/binlog2sql/binlog2sql]
#ls -l /data/mysql/mysql3306/logs/mysql-bin.
-rw-r----- mysql mysql Jun : /data/mysql/mysql3306/logs/mysql-bin. --The binlog file is right there,it shows that it's no need to specify the absolute path in parameter "--start-file" [root@zlm3 :: ~/binlog2sql/binlog2sql]
#
    unfortunately it still doesn't work,i'm confused and have no idea now,maybe i'll test it again text time.Let's see then.
 
Summury:
  • binlog2sql is coded by python,in order to use it you need to install python and relevant packages.
  • some parameter such as "binlog_format=row","binlog_row_image=full" etc. in MySQL Server should be satisfied with.
  • some privileges such as "super"/"replication client","replication slave" etc. in MySQL Server should be satisfied with too.
  • it seems more inconvenient rather than the MyFlash tool does.
 
 

利用binlog2sql闪回丢失数据的更多相关文章

  1. 利用mysqlbinlog_flashback闪回丢失数据

            today,i'll have a test with the open source tool mysqlbinlog_flashback which is released by ...

  2. 利用MyFlash闪回丢失数据(续)

          last night,i've tested flashback by MyFlash tool,but failed,now let's do some other test with ...

  3. 利用MyFlash闪回丢失数据

          MyFlash is an open source tool released by Meituan-Dianping which can be used to flashback MyS ...

  4. binlog2sql闪回恢复数据

    用途: .数据快速回滚 .从binlog生成标准sql 使用限制: .必须设置binlog_format=ROW .binlog_row_image=full,该参数默认为FULL .恢复用户拥有的最 ...

  5. oracle_利用闪回功能恢复数据

    方便起见一般:执行如下即可不用往下看: ① 启用行移动功能 alter table tbl_a enable row movement; ② 闪回表数据到某个时间点 flashback table t ...

  6. MySQL的binlog2sql闪回

    从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途=========== * 数据快速回滚(闪回)* 主从切换后新m ...

  7. MYSQL工具之binlog2sql闪回操作

    文档结构: 在生产环境中如果遇到误删,改错数据的情况,利用mysql闪回工具binlog2sql,可以实现数据的快速回滚,从binlog中提取SQL,并能生成回滚SQL语句.Binlog以event作 ...

  8. Oracle 闪回 找回数据的实现方法

    Oracle 闪回 找回数据的实现方法 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复.这篇文章主要介绍了Oracle 闪回 找回 ...

  9. binlog2sql闪回工具的使用

    binlog2sql闪回工具的使用 一.下载安装依赖的python yum install openssl-devel bzip2-devel expat-devel gdbm-devel readl ...

随机推荐

  1. Windows 64位下安装Redis教程

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型. Key-Value数据库,并提供多种语言的API. 一.下载 地址:Download redis-latest ...

  2. Android 快速切换到主线程更新UI的几种方法

    此最近看了网上,在子线程更新UI的方法,说法很多,但都不是很全面.在此我争取做到总结的全面一些,希望以后对自己,对大家都有一些帮助. 方法一: view.post(Runnable action) 假 ...

  3. Visual Studio Code调试electron主进程

    Visual Studio Code调试electron主进程 作者: jekkay 分类: electron 发布时间: 2017-06-11 14:56  一·概述 此文原出自[水滴石]: htt ...

  4. 给Docker武士们的正式邀请,赶紧收哦!

    亲爱的Docker武士,Docker大师们喊你来参加Docker的定期聚啦~收好时间.地点,快来相见.切磋Docker吧!5月17日,微软上海港汇办公室,我们与你不见不散! 点击阅读原文,或直接进入注 ...

  5. sql server 获取表结构和记录数

    表结构 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, ( then '√'else '' end) 标识, (case when ...

  6. [问题记录]cocos的lua绑定安装pyyaml报错

    描述:按照readme中的文档操作报错,提示python2.7没有安装,但是确实已经安装了,而且也设置环境变量成功了. 解决: 在D盘新建register.py的文件,内容如下: # # script ...

  7. QT控件大小的方法

    http://blog.csdn.net/liang19890820/article/details/51986284

  8. JavaScript检测数据类型

    JavaScript检测数据类型 标签(空格分隔): JavaScript function valType(value) { return Object.prototype.toString.cal ...

  9. PHP error_log 实际运用

    PHP的error_log()函数合理用起来还真方便呢,来看下这个函数: error_log(message,type,destination,headers); 参数 描述 message 必需.规 ...

  10. c++ 读取文本问题

    c++文本操作有以下三个方法 ifstream,ofstream,fstream 读取文本常用的方法如下 std::ifstream input; input.open(".log" ...