欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中Binary Log二進(jìn)制日志文件的基本操作命令小結(jié)

 更新時(shí)間:2015年12月08日 09:42:52   作者:OrangeHolic  
這篇文章主要介紹了MySQL中Binary Log二進(jìn)制日志文件的基本操作小結(jié),包括利用二進(jìn)制日志恢復(fù)數(shù)據(jù)的方法,需要的朋友可以參考下

MySQL Binary Log也就是常說(shuō)的bin-log, ,是mysql執(zhí)行改動(dòng)產(chǎn)生的二進(jìn)制日志文件,其主要作用有兩個(gè):
* 數(shù)據(jù)回復(fù)
* 主從數(shù)據(jù)庫(kù)。用于slave端執(zhí)行增刪改,保持與master同步。

1.開(kāi)啟binary log功能

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

  eg: 
  [mysqld] 
    ...... 
    log_bin = mysql_bin 
    ...... 
  log_bin是生成的bin-log的文件名,后綴則是6位數(shù)字的編碼,從000001開(kāi)始,按照上面的配置,生成的文件則為: 
    mysql_bin.000001 
    mysql_bin.000002 
    ...... 

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

201512893640786.png (536×205)

2.查看產(chǎn)生的binary log

   bin-log因?yàn)槭嵌M(jìn)制文件,不能通過(guò)記事本等編輯器直接打開(kāi)查看,mysql提供兩種方式查看方式,在介紹之前,我們先對(duì)數(shù)據(jù)庫(kù)進(jìn)行一下增刪改的操作,否則log里邊數(shù)據(jù)有點(diǎn)空。 

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

(測(cè)試前我已經(jīng)建表) 

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

     1.在客戶端中使用  show binlog events in 'mysql_bin.000001'  語(yǔ)句進(jìn)行查看,為了排序美觀,可以在結(jié)尾加\G使結(jié)果橫變縱,此時(shí)結(jié)尾無(wú)需加;語(yǔ)句結(jié)束符。
      eg:

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存在那個(gè)文件中,從上面可以看出這2條log皆存在與mysql_bin.000001文件中。
  • Pos:log在bin-log中的開(kāi)始位置
  • Event_type:log的類型信息
  • Server_id:可以查看配置中的server_id,表示log是那個(gè)服務(wù)器產(chǎn)生
  • End_log_pos:log在bin-log中的結(jié)束位置
  • Info:log的一些備注信息,可以直觀的看出進(jìn)行了什么操作

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

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*/; 

雖然排版有點(diǎn)亂,但從圖中我們可以得到更多信息,如時(shí)間戳,自增的偏移,是否自動(dòng)提交事務(wù)等信息。如下圖為從中提取的一部分。

201512893921181.png (921×129)

3.利用bin_log恢復(fù)數(shù)據(jù)

    (1).最長(zhǎng)用的就是回復(fù)指定數(shù)據(jù)端的數(shù)據(jù)了,可以直接恢復(fù)到數(shù)據(jù)庫(kù)中: 

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

      亦可導(dǎo)出為sql文件,再導(dǎo)入至數(shù)據(jù)庫(kù)中: 

  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).指定開(kāi)始\結(jié)束位置,從上面的查看產(chǎn)生的binary log我們可以知道某個(gè)log的開(kāi)始到結(jié)束的位置,我們可以在恢復(fù)的過(guò)程中指定回復(fù)從A位置到B位置的log.需要用下面兩個(gè)參數(shù)來(lái)指定: 

 --start-positon="50" //指定從50位置開(kāi)始 
 --stop-postion="100"http://指定到100位置結(jié)束 

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

201512894032929.png (527×86)

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

201512894049040.png (553×262)

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

2015128101149336.png (544×256)

4.binary log相關(guān)變量和參數(shù)

命令行參數(shù)

  --log-bin [=file_name]

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

  --log-bin-index[=file]

  設(shè)置此參數(shù)是指定二進(jìn)制索引文件的路徑與名稱。

  --max_binlog_size

 Binlog最大值,最大和默認(rèn)值是1GB,該設(shè)置并不能嚴(yán)格控制Binlog的大小,尤其是Binlog比較靠近最大值而又遇到一個(gè)比較大事務(wù)時(shí),

為了保證事務(wù)的完整性,不可能做切換日志的動(dòng)作,只能將該事務(wù)的所有SQL都記錄進(jìn)當(dāng)前日志,直到事務(wù)結(jié)束。

  --binlog-do-db=db_name

  此參數(shù)表示只記錄指定數(shù)據(jù)庫(kù)的二進(jìn)制日志

  --binlog-ignore-db=db_name

  此參數(shù)表示不記錄指定的數(shù)據(jù)庫(kù)的二進(jìn)制日志

系統(tǒng)變量

  log_bin

  binlog_cache_size

  此參數(shù)表示binlog使用的內(nèi)存大小,可以通過(guò)狀態(tài)變量binlog_cache_use和binlog_cache_disk_use來(lái)幫助測(cè)試。

  max_binlog_cache_size

  此參數(shù)表示binlog使用的內(nèi)存最大的尺寸

  binlog_cache_use

  使用二進(jìn)制日志緩存的事務(wù)數(shù)量

  binlog_cache_disk_use

  使用二進(jìn)制日志緩存但超過(guò)binlog_cache_size值并使用臨時(shí)文件來(lái)保存事務(wù)中的語(yǔ)句的事務(wù)數(shù)量。

  binlog_do_db

  binlog_ignore_db

  sync_binlog

  這個(gè)參數(shù)直接影響mysql的性能和完整性。

  sync_binlog=0:

  當(dāng)事務(wù)提交后,Mysql僅僅是將binlog_cache中的數(shù)據(jù)寫入binlog文件,但不執(zhí)行fsync之類的磁盤,同步指令通知文件系統(tǒng)將緩存刷新到磁盤,而讓Filesystem自行決定什么時(shí)候來(lái)做同步,這個(gè)是性能最好的。

  sync_binlog=0,在進(jìn)行n次事務(wù)提交以后,Mysql將執(zhí)行一次fsync之類的磁盤同步指令,通知文件系統(tǒng)將Binlog文件緩存刷新到磁盤。

  Mysql中默認(rèn)的設(shè)置是sync_binlog=0,即不做任何強(qiáng)制性的磁盤刷新指令,這時(shí)性能是最好的,但風(fēng)險(xiǎn)也是最大的。一旦系統(tǒng)Crash,在文件系統(tǒng)緩存中的所有Binlog信息都會(huì)丟失。

相關(guān)文章

  • mysql通過(guò)ssl的方式生成秘鑰具體生成步驟

    mysql通過(guò)ssl的方式生成秘鑰具體生成步驟

    在my.cnf末尾端設(shè)置ssl 參數(shù), 然后重新啟動(dòng)mysql服務(wù)即可,通過(guò)openssl生成證書(shū)的配置, 在mysql db server上生成秘鑰,具體步驟如下,感興趣的朋友可以參考下哈
    2013-06-06
  • 淺談MySQL中用什么數(shù)據(jù)類型存IP地址

    淺談MySQL中用什么數(shù)據(jù)類型存IP地址

    MySQL中用什么數(shù)據(jù)類型存IP地址?在MySQL中,當(dāng)存儲(chǔ)IPv4地址時(shí),應(yīng)該使用32位的無(wú)符號(hào)整數(shù)來(lái)存儲(chǔ)IP地址,而不是使用字符串,本文就介紹一下這幾種情況,感興趣的可以了解一下
    2023-08-08
  • 淺談MySQL timestamp(3)問(wèn)題

    淺談MySQL timestamp(3)問(wèn)題

    本文主要介紹了淺談MySQL timestamp(3)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 淺析mysql 共享表空間與獨(dú)享表空間以及他們之間的轉(zhuǎn)化

    淺析mysql 共享表空間與獨(dú)享表空間以及他們之間的轉(zhuǎn)化

    本篇文章是對(duì)mysql 共享表空間與獨(dú)享表空間以及他們之間的轉(zhuǎn)化進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 5招帶你輕松優(yōu)化MySQL count(*)查詢性能

    5招帶你輕松優(yōu)化MySQL count(*)查詢性能

    最近在公司優(yōu)化了幾個(gè)慢查詢接口的性能,總結(jié)了一些心得體會(huì)拿出來(lái)跟大家一起分享一下,文中的示例代碼講解詳細(xì),希望對(duì)大家會(huì)有所幫助
    2022-11-11
  • mysql now()函數(shù)調(diào)用系統(tǒng)時(shí)間不對(duì)的解決方法

    mysql now()函數(shù)調(diào)用系統(tǒng)時(shí)間不對(duì)的解決方法

    mysql的now()函數(shù)與實(shí)際時(shí)間不符,本文就詳細(xì)的介紹一下mysql now()函數(shù)調(diào)用系統(tǒng)時(shí)間不對(duì)的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2023-05-05
  • MySql報(bào)錯(cuò):Duplicate entry ‘10‘ for key ‘PRIMARY‘的解決方案

    MySql報(bào)錯(cuò):Duplicate entry ‘10‘ for key&nbs

    經(jīng)常遇到這個(gè)問(wèn)題,今天我把這個(gè)問(wèn)題記錄下來(lái),以后如果有其他人遇到相同的問(wèn)題,不至于困惑,在操作數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常會(huì)出現(xiàn)Duplicate entry ‘10’ for key 'PRIMARY’這樣的報(bào)錯(cuò),本文將給大家講講如何解決這個(gè)問(wèn)題,需要的朋友可以參考下
    2023-10-10
  • 通過(guò)yum方式安裝mySql數(shù)據(jù)庫(kù)的全過(guò)程

    通過(guò)yum方式安裝mySql數(shù)據(jù)庫(kù)的全過(guò)程

    當(dāng)工作需要部署mysql時(shí),通過(guò)手動(dòng)上傳安裝包以及依賴包的方式安裝mysql會(huì)比較麻煩,可以添加官方y(tǒng)um源,來(lái)實(shí)現(xiàn)自動(dòng)安裝依賴,方便快捷,下面這篇文章主要給大家介紹了關(guān)于通過(guò)yum方式安裝mySql數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • mysql 使用存儲(chǔ)過(guò)程實(shí)現(xiàn)樹(shù)節(jié)點(diǎn)的獲取方法

    mysql 使用存儲(chǔ)過(guò)程實(shí)現(xiàn)樹(shù)節(jié)點(diǎn)的獲取方法

    這篇文章主要介紹了mysql 使用存儲(chǔ)過(guò)程實(shí)現(xiàn)樹(shù)節(jié)點(diǎn)的獲取方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 一文帶你了解MySQL的左連接與右連接

    一文帶你了解MySQL的左連接與右連接

    在MySQL中,左查詢和右查詢是通過(guò)使用LEFT?JOIN和RIGHT?JOIN關(guān)鍵字來(lái)執(zhí)行的,本文通過(guò)詳細(xì)的代碼示例簡(jiǎn)單介紹這兩種查詢方法的語(yǔ)法,需要的朋友可以參考下
    2023-07-07

最新評(píng)論