一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL中Binary Log二進制日志文件的基本操作命令小結

MySQL中Binary Log二進制日志文件的基本操作命令小結

2020-05-25 15:47OrangeHolic Mysql

這篇文章主要介紹了MySQL中Binary Log二進制日志文件的基本操作小結,包括利用二進制日志恢復數據的方法,需要的朋友可以參考下

MySQL Binary Log也就是常說的bin-log, ,是mysql執行改動產生的二進制日志文件,其主要作用有兩個:
* 數據回復
* 主從數據庫。用于slave端執行增刪改,保持與master同步。

1.開啟binary log功能

     需要修改mysql的配置文件,本篇的實驗環境是win7,配置文件為mysql安裝目錄\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可 

?
1
2
3
4
5
6
7
8
9
eg:
[mysqld]
  ......
  log_bin = mysql_bin
  ......
log_bin是生成的bin-log的文件名,后綴則是6位數字的編碼,從000001開始,按照上面的配置,生成的文件則為:
  mysql_bin.000001
  mysql_bin.000002
  ......

  
    配置保存以后重啟mysql的服務器,用show variables like  '%bin%'查看bin-log是否開啟,如圖: 

MySQL中Binary Log二進制日志文件的基本操作命令小結

2.查看產生的binary log

   bin-log因為是二進制文件,不能通過記事本等編輯器直接打開查看,mysql提供兩種方式查看方式,在介紹之前,我們先對數據庫進行一下增刪改的操作,否則log里邊數據有點空。 

?
1
create table bin( id int(10) primary key auto_increment,name varchar(255));

(測試前我已經建表) 

?
1
insert into bin(name) values ('orange');

     1.在客戶端中使用  show binlog events in 'mysql_bin.000001'  語句進行查看,為了排序美觀,可以在結尾加\G使結果橫變縱,此時結尾無需加;語句結束符。
      eg:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> show binlog events in 'mysql_bin.000001'\G
...............省略...............
*************************** 3. row ***************************
 Log_name: mysql_bin.000001
  Pos: 174
Event_type: Intvar
 Server_id: 1
End_log_pos: 202
  Info: INSERT_ID=2
*************************** 4. row ***************************
 Log_name: mysql_bin.000001
  Pos: 202
Event_type: Query
 Server_id: 1
End_log_pos: 304
  Info: use `test`; insert into bin(name) values ('orange')
*************************** 5. row ***************************
...............省略...............
  • Log_name:此條log存在那個文件中,從上面可以看出這2條log皆存在與mysql_bin.000001文件中。
  • Pos:log在bin-log中的開始位置
  • Event_type:log的類型信息
  • Server_id:可以查看配置中的server_id,表示log是那個服務器產生
  • End_log_pos:log在bin-log中的結束位置
  • Info:log的一些備注信息,可以直觀的看出進行了什么操作

2.用mysql自帶的工具mysqlbinlog,這是我們就需要知道bin-log存在硬盤的什么位置,win7默認存在C:\ProgramData\MySQL\MySQL Server 5.1\data文件夾下面,如果沒有此文件夾,那我們可以通過配置文件中的  datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/" 定位,如果還沒有,那我就會說“各個系統的搜索功能都做的不錯!”。這種查看方式就沒那個美觀了,如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
C:\ProgramData\MySQL\MySQL Server 5.1\data>mysqlbinlog mysql_bin.000001
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#121015 16:35:56 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.51-community-log created 121015 16:35:56 at startup
ROLLBACK/*!*/;
BINLOG '
7Mp7UA8BAAAAZgAAAGoAAAAAAAQANS4xLjUxLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADsyntQEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
'/*!*/;
# at 106
#121015 16:36:51 server id 1 end_log_pos 174 Query thread_id=2  exec_time=0  error_code=0
SET TIMESTAMP=1350290211/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1344274432/*!*/;
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/*!*/;
BEGIN
/*!*/;
# at 174
#121015 16:36:51 server id 1 end_log_pos 202 Intvar
SET INSERT_ID=3/*!*/;
# at 202
#121015 16:36:51 server id 1 end_log_pos 309 Query thread_id=2  exec_time=0  error_code=0
use test/*!*/;
SET TIMESTAMP=1350290211/*!*/;
insert into bin(name) values('xishizhaohua')
/*!*/;
# at 309
#121015 16:36:51 server id 1 end_log_pos 336 Xid = 28
COMMIT/*!*/;
# at 336
#121015 16:37:25 server id 1 end_log_pos 379 Rotate to mysql_bin.000002 pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

雖然排版有點亂,但從圖中我們可以得到更多信息,如時間戳,自增的偏移,是否自動提交事務等信息。如下圖為從中提取的一部分。

MySQL中Binary Log二進制日志文件的基本操作命令小結

3.利用bin_log恢復數據

    (1).最長用的就是回復指定數據端的數據了,可以直接恢復到數據庫中: 

?
1
mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 |mysql -uroot -p123456

      亦可導出為sql文件,再導入至數據庫中: 

?
1
2
mysqlbinlog --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 >d:\1.sql
source d:\1.sql

     (2).指定開始\結束位置,從上面的查看產生的binary log我們可以知道某個log的開始到結束的位置,我們可以在恢復的過程中指定回復從A位置到B位置的log.需要用下面兩個參數來指定: 

?
1
2
--start-positon="50" //指定從50位置開始
--stop-postion="100"//指定到100位置結束

   最后介紹幾個bin_log的操作:
   (1).產看最后一個bin日志文件是那個,現在位置

MySQL中Binary Log二進制日志文件的基本操作命令小結

    (2).啟用新的日志文件,一般備份完數據庫后執行

MySQL中Binary Log二進制日志文件的基本操作命令小結

    (3).清空現有的所用bin-log

MySQL中Binary Log二進制日志文件的基本操作命令小結

4.binary log相關變量和參數

命令行參數

  --log-bin [=file_name]

  設置此參數表示啟用binlog功能,并制定路徑名稱。

  --log-bin-index[=file]

  設置此參數是指定二進制索引文件的路徑與名稱。

  --max_binlog_size

 Binlog最大值,最大和默認值是1GB,該設置并不能嚴格控制Binlog的大小,尤其是Binlog比較靠近最大值而又遇到一個比較大事務時,

為了保證事務的完整性,不可能做切換日志的動作,只能將該事務的所有SQL都記錄進當前日志,直到事務結束。

  --binlog-do-db=db_name

  此參數表示只記錄指定數據庫的二進制日志

  --binlog-ignore-db=db_name

  此參數表示不記錄指定的數據庫的二進制日志

系統變量

  log_bin

  binlog_cache_size

  此參數表示binlog使用的內存大小,可以通過狀態變量binlog_cache_use和binlog_cache_disk_use來幫助測試。

  max_binlog_cache_size

  此參數表示binlog使用的內存最大的尺寸

  binlog_cache_use

  使用二進制日志緩存的事務數量

  binlog_cache_disk_use

  使用二進制日志緩存但超過binlog_cache_size值并使用臨時文件來保存事務中的語句的事務數量。

  binlog_do_db

  binlog_ignore_db

  sync_binlog

  這個參數直接影響mysql的性能和完整性。

  sync_binlog=0:

  當事務提交后,Mysql僅僅是將binlog_cache中的數據寫入binlog文件,但不執行fsync之類的磁盤,同步指令通知文件系統將緩存刷新到磁盤,而讓Filesystem自行決定什么時候來做同步,這個是性能最好的。

  sync_binlog=0,在進行n次事務提交以后,Mysql將執行一次fsync之類的磁盤同步指令,通知文件系統將Binlog文件緩存刷新到磁盤。

  Mysql中默認的設置是sync_binlog=0,即不做任何強制性的磁盤刷新指令,這時性能是最好的,但風險也是最大的。一旦系統Crash,在文件系統緩存中的所有Binlog信息都會丟失。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 啊啊啊好大在线观看 | 四虎影视永久在线 | 香蕉久久一区二区三区啪啪 | 我们中文在线观看免费完整版 | 欧美一级视频在线 | 成人影院在线观看视频 | 精品午夜寂寞影院在线观看 | 国产资源视频在线观看 | 2021小妲己永久回家地址 | 欧美vpswindowssex 欧美va在线高清 | 久久99热在线观看7 久久99精品涩AV毛片观看 | 1024人成网站色 | 天天躁天天碰天天看 | 精品在线观看一区 | 亚洲精品视频免费在线观看 | 91大神亚洲影视在线 | 99热国产这里只有精品 | 亚洲第成色999久久网站 | 亚洲国产精品网 | 欧美精品一国产成人性影视 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | 黄篇网站在线观看 | 国内自拍网红在综合图区 | 3d肉浦团在线观看 | 国产午夜免费秋霞影院 | 欧美日韩一区二区综合在线视频 | 欧美亚洲第一页 | 欧美日韩中文国产一区 | 色图18p | 91传媒制片厂果冻有限公司 | 好大好深视频 | 日韩在线第一区 | 日本无卡码一区二区三区 | 任我淫| 久久两性视频 | 天天综合网网欲色 | 免费稚嫩福利 | 国产精品毛片高清在线完整版 | 国产精品久久久久久影视 | 国产欧美精品专区一区二区 | 手机看片自拍自自拍日韩免费 |