mysql二进制日志和mysql备份工具介绍以及日志恢复

 mysql备份:

三种备份方式

冷备:数据库停机,在进行备份

热备:lock table锁表,read   数据库只可以读不能写,在备份

温备:备份时数据库正常运行

备份类型:完整备份:全部备份,部分备份也是完整备份的一个分支,一般用于单独备份某一个数据库而不是备份整个数据库。

                  差异备份:跟上一次完整备份以后的变化的数据

 

mysql的物理备份和逻辑备份

物理备份:cp   tar   rsync等是冷备,需要停机去备份

逻辑备份:mysqldump             mysql协议去mysql server查询数据,在通过mysql语句导出数据

 

完整备份需要备份哪些数据?

/var/lib/mysql    binlog     /etc/my.cnf     tomcat     重启脚本   二进制日志,innodb事务日志,用户账号,权限,程序代码

 

MyISAM不支持热备份,温备份

InnoDB都支持

 

一般备份的话需要备份什么?

数据,二进制日志,innodb事务日志,用户账号,权限,程序代码,服务器配置文件

 

备份工具:

cp   tar    rsync   lv等复制归档工具,这是物理备份工具,适用于所有的存储引擎,只支持冷备份,完全备份和部分备份

MyIASM适用于所有存储引擎,是温备份

InnoDB热备份,结合binlog增量备份

mysqlbackup热备份

 

 

二进制日志

概念:记录导致数据库数据改变的SQL语句,能恢复任何节点的数据

功能:通过重放,在另一个数据库生成数据副本,一般二进制日志和数据需要分开存放

二进制日志目录存放位置:/var/lib/mysql,看到有log-bin.00000这种格式就是二进制日志文件,如果需要打开查看,需要使用mysqlbinlog  +日志名

 

查看二进制日志是否开启:

mysql> show variables like %bin
    -> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
| sql_log_bin   | ON    |
+---------------+-------+
off就是没开启

 

 

如何开启二进制日志文件的方法,配置完重启服务,要关闭防火墙和SELINUX

 (1)修改配置文件/etc/my.cnf

log-bin=二进制日志文件名

server-id=1     #1开启二进制日志,0关闭二进制

 

 二进制日志记录的三种方式

格式1:statement              记录语句方式,日志量少

格式2:row                        以行的形式记录数据,日志量较大 ,更加安全

混合:mixed                      让系统自行判定使用哪个方式记录

 

二进制日志文件构成

1.日志文件log-bin.00000二进制格式

2.日志索引文件   log-bin.index

 

查看有几个binlog日志文件的两种方法:

(1)查看/var/lib/mysql

(2)show binary logs;

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| log-bin.000001 |       333 |
| log-bin.000002 |       154 |
+----------------+-----------+

 

 

查看当前正在使用的binlog文件:show master status;

mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| log-bin.000003 |      310 |              |                  |                   |
+----------------+----------+--------------+------------------+-------------------+

 

 

查看某一个pos点的binlog文件表结构:

mysql> show binlog events in log-bin.000003from 154\G;
*************************** 1. row ***************************
   Log_name: log-bin.000003
        Pos: 154
 Event_type: Anonymous_Gtid
  Server_id: 1
End_log_pos: 219
       Info: SET @@SESSION.GTID_NEXT= ANONYMOUS
*************************** 2. row ***************************
   Log_name: log-bin.000003
        Pos: 219
 Event_type: Query
  Server_id: 1
End_log_pos: 310
       Info: create database db2
2 rows in set (0.00 sec)

 

怎么生成新的二进制日志:

(1)刷新日志:flush logs

(2)重启mysql服务

 

怎么删除所有二进制日志文件:flush master;

 

查看二进制日志文件内容:格式:mysqlbinlog   二进制日志文件名

[root@server mysqlbin]# mysqlbinlog log-bin.000002   

 

删除某个日志之前的所有日志:

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| log-bin.000001 |       333 |
| log-bin.000002 |       199 |
| log-bin.000003 |       310 |
+----------------+-----------+
3 rows in set (0.00 sec)

mysql> purge binary logs to log-bin.000002;  #删除00002之前的日志,也就是删除0001的
Query OK, 0 rows affected (0.00 sec)

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| log-bin.000002 |       199 |
| log-bin.000003 |       310 |
+----------------+-----------+
2 rows in set (0.00 sec)

 

 

二进制日志文件怎么恢复:

两种恢复方式:

       (1)使用时间点恢复:通常在还原物理备份或者mysqldump备份后,用于还原至备份时的数据

      (2)使用事件SID恢复:一般用于还原误操作

要还原二进制日志必须知道当前正在使用的二进制日志文件名和当前事件的位置mysql  --logbin-path=master_local

 

mysql二进制日志和mysql备份工具介绍以及日志恢复

上一篇:【MySQL】自定义数据库连接池和开源数据库连接池的使用


下一篇:sqlmap 过waf模块