您的位置:首页 > 数据库 > MySQL

mysql命令之mysqldump详解

2018-02-08 16:14 841 查看
一,功能

mysqldump:用来解析binlog日志。

binlog日志:用来记录对数据库进行有更新(或潜在更新,如delete语句,删除0条记录)的事件,不记录select,show等查询语句

形如以下log-files:

mysql_bin.000001
mysql_bin.000002
mysql_bin.000003
mysql_bin.000004


二,用法

mysqlbinlog [options] log-files


[root@www data]# mysqlbinlog mysql_bin.000027
/*!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

#180208 14:39:15 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 180208 14:39:15
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
k/B7Wg8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
------------------------------------------------------------------

**这是最初的binlog日志,没有写入任何数据,以后对数据库的更新会从这里写入**

-------------------------------------------------------------------
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;


三, 常用options

为方便介绍,先创建数据库

登录:

[root@www data]# mysql -uroot -pgzn


创建数据库

mysql> create database abc;
Query OK, 1 row affected (0.00 sec)

mysql> create database xyz;
Query OK, 1 row affected (0.00 sec)


再次查看

mysqlbinlog [options] log-files


[root@www data]# mysqlbinlog mysql_bin.000027
/*!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
#180208 14:39:15 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 180208 14:39:15
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
k/B7Wg8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
——————————————————————————————————————————————————————————————————-
以上不用看,每个刚创建的binlog日志都有
《事件create database abc》
# at 107  (可以理解为create database abc在binlog文件中的起始位置)
#180208 14:49:16(时间:18年2月8号)
server id 1
end_log_pos 188 (可以理解为事件create database abc 在文件中的结束位置,同时也是下一事件的起始位置,
Query   thread_id=3     exec_time=0     error_code=0
SET TIMESTAMP=1518072556/*!*/;

*************************************************************************************************
关于mysql数据库的若干信息,有的可以在my.cnf中配置,是全局数据库的设置
SET @@session.pseudo_thread_id=3/*!*/;                                                          *
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0,                               *
@@session.unique_checks=1, @@session.autocommit=1/*!*/;                                         *
SET @@session.sql_mode=0/*!*/;                                                                  *
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=33/*!*/;                                                             *
SET @@session.lc_time_names=0/*!*/;                                                             *
SET @@session.collation_database=DEFAULT/*!*/;                                                  *
*************************************************************************************************

create database abc

/*!*/;
《事件create databade xyz》
# at 188
#180208 14:49:27 server id 1  end_log_pos 269   Query   thread_id=3     exec_time=0     error_code=0
SET TIMESTAMP=1518072567/*!*/;

create database xyz

/*!*/;
以下不用看
————————————————————————————————————————————————————————————————————
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;


-d db_name : 从binlog日志中提取和指定库相关的sql语句

[root@www data]# mysqlbinlog -d abc mysql_bin.000027
/*!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
#180208 14:39:15 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 180208 14:39:15
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
k/B7Wg8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# at 107
#180208 14:49:16 server id 1  end_log_pos 188   Query   thread_id=3     exec_time=0     error_code=0
SET TIMESTAMP=1518072556/*!*/;
SET @@session.pseudo_thread_id=3/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
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=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
————————————————————-----------------
create database abc     看这里
————————————————————------------------
/*!*/;
# at 188
————————————————————----------------
关于 数据库xyz的语句没有提取   和这里
——————————————————————---------------
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;


指定时间提取sql,

–start-datetime=’time’;

–stop-datatime=’time’ ;

time格式:2018-02-08 14:49:16

指定位置提取sql,

–start-position= pos ;

–stop-position= pos ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: