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. C++教程|菜鸟教程

    https://www.runoob.com/cplusplus/cpp-tutorial.html 在线编辑器 http://www.runoob.com/try/runcode.php?filen ...

  2. (转) 在PHP中使用全局变量

    简介 即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的.一些常见的全局数据有:程序设定类.数据库连接类.用户资料等等.有很多方法能够使这些数据 ...

  3. SSIS ->> 管理和维护SSISDB

    Comming soon!!! 参考文献: Setup and Performance Issues with the Integration Services (SSIS) 2012 Catalog ...

  4. tcp.cc

    ns2-tcp-tcp.cc /* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */ /* * Copyri ...

  5. 设计模式:备忘录(Memento)模式

    设计模式:备忘录(Memento)模式 一.前言   备忘录模式用于保存和恢复对象的状态,相信大家看过我前面的拙作就会想到原型模式也能保存一个对象在某一个时刻的状态,那么两者有何不同的呢?原型模式保存 ...

  6. Hibernate初探之单表映射

    http://www.imooc.com/video/7816 1.什么是ORM?为什么使用Hibernate? 对象关系映射:为了少写和底层数据库相关的sql语句,方便程序的维护.修改,提高跨平台性 ...

  7. 用poi-3.6-20091214.jar 实现java给excel资料加密

    用poi-3.6-20091214.jar 实现java给excel文件加密我用了网上的很多方法,但是都没有成功! HSSFWorkbook wb = new HSSFWorkbook(new Fil ...

  8. 【ACM】那些年,我们挖(WA)过的最短路

    不定时更新博客,该博客仅仅是一篇关于最短路的题集,题目顺序随机. 算法思想什么的,我就随便说(复)说(制)咯: Dijkstra算法:以起始点为中心向外层层扩展,直到扩展到终点为止.有贪心的意思. 大 ...

  9. Yii 日志组件

    详细的介绍查看官网的document:http://www.yiiframework.com/doc/guide/1.1/en/topics.logging 也可以看 Yii 1.1 Applicat ...

  10. UVa 1608 - Non-boring sequences

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...