大家好,51開源已經將關於mysql的各種重要日誌檔案的技術文件都發表出來了,並建成了mysql日誌專題,本文51開源介紹在mysql中非常重要地日誌檔案,那就是二進位制日誌,也就是你常聽的bin-log。在5.1的mysql版本中已經沒有了更新日誌,二進位制日誌完成可以代替並更好。 二進位制日誌記錄了所有的DDL和DML,但不包括各種查詢。透過二進位制日誌,可以實現什麼效果呢?二進位制日誌檔案可以實現災難資料恢復,另外可以應用到mysql複製資料同步。二進位制日誌包含了所有更新了資料或者已經潛在更新了資料(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式儲存,它描述了資料更改。執行伺服器時若啟用二進位制日誌則效能大約慢1%。但是,二進位制日誌的好處,即用於恢復並允許設定複製超過了這個小小的效能損失。 --mysql二進位制日誌的配置 --log-bin=[file-name]用來指定錯誤日誌存放的位置。 如果沒有指定[file-name],預設為主機名後面跟-bin做為檔名,預設存放在DATADIR目錄中。 也可以將log-bin配置到my.cnf檔案中,這樣就省去了每次在啟動mysqld時都手工指定--log-bin. #vi /etc/my.cnf log-bin=[/usr/local/mysql/var/mysql-bin] //啟用二進位制日誌功能 binlog-do-db[=資料庫名] //指定記錄二進位制日誌的資料庫 binlog-ingore-db[=資料庫名] //指定不記錄二進位制日誌的資料庫 --檢視二進位制日誌檔案 由於binlog以是binary方式存取,不能直接檢視,需要用mysql提供的mysqlbinlog工具檢視。 mysqlbinlog命令 格式:mysqlbinlog [選項] 日誌檔案 選項: -d 資料庫名 列出指定資料庫的二進位制日誌 -h 伺服器地址 指定資料庫伺服器地址 -u 使用者名稱 指定連線伺服器的使用者名稱 -p 口令 指定使用者口令 -P 數字 指定伺服器埠號 -R 讀取二進位制日誌 --start-datetime=datetime 指定開始時間 --stop-datetime=datetime 指定結束時間 --start-position=數字 指定開始位置 --stop-position=數字 指定結束位置 例項:-檢視本機mysql伺服器的binlog.001二進位制日誌檔案內容 #mysqlbinlog binlog.001 --刪除二進位制日誌檔案 (1).用reset master命令刪除所有日誌,新日誌重新從000001開始編號 (2).用purge master logs to 'mysq-bin.******' 命令可以刪除指定編號前的所有日誌 (3).用purge master logs to before 'YYYY-MM-DD HH24:MI:SS'命令可以刪除'YYYY-MM-DD HH24:MI:SS'之前的產生的所有日誌 (4).可以在my.cnf中指定--expire_logs_days=#,此引數設定了binlog日誌的過期天數 --mysql二進位制日誌演示 [mysql@51osos]$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 18 to server version: 5.0.26-standard-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use test; Database changed mysql> select * from pet; +----------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +----------+--------+---------+------+------------+------------+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Fang | Benny | dog | m | 1990-08-27 | NULL | | Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 | | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | +----------+--------+---------+------+------------+------------+ 8 rows in set (0.06 sec) mysql> insert into pet values('hunter','yxyup','cat','f','1996-04-29',null); Query OK, 1 row affected (0.03 sec) mysql> select * from pet; +----------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +----------+--------+---------+------+------------+------------+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Fang | Benny | dog | m | 1990-08-27 | NULL | | Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 | | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | | hunter | yxyup | cat | f | 1996-04-29 | NULL | +----------+--------+---------+------+------------+------------+ 9 rows in set (0.00 sec) mysql> update pet set sex='m' where name='hunter'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> delete from pet where name='hunter'; Query OK, 1 row affected (0.00 sec) [mysql@51osos]$ mysqlbinlog log-bin.000002 /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; # at 4 #080313 7:52:47 server id 1 end_log_pos 98 Start: binlog v 4, server v 5.0.26-standard-log created 080313 7:52:47 # Warning: this binlog was not closed properly. Most probably mysqld crashed writing it. # at 98 #080313 10:06:26 server id 1 end_log_pos 229 Query thread_id=18 exec_time=0 error_code=0 use test; SET TIMESTAMP=1205373986; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1; SET @@session.sql_mode=0; /*!\C latin1 */; SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8; insert into pet values('hunter','yxyup','cat','f','1996-04-29',null); # at 229 #080313 10:07:13 server id 1 end_log_pos 334 Query thread_id=18 exec_time=0 error_code=0 SET TIMESTAMP=1205374033; update pet set sex='m' where name='hunter'; # at 334 #080313 10:07:38 server id 1 end_log_pos 432 Query thread_id=18 exec_time=0 error_code=0 SET TIMESTAMP=1205374058; delete from pet where name='hunter'; # at 432 #080313 10:14:13 server id 1 end_log_pos 532 Query thread_id=18 exec_time=0 error_code=0 SET TIMESTAMP=1205374453; create table t1(id int,name char(10)); # at 532 #080313 10:14:41 server id 1 end_log_pos 625 Query thread_id=18 exec_time=0 error_code=0 SET TIMESTAMP=1205374481; alter table t1 add sex char(2); # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; [mysql@test2]$ 可以看出,三條DML操作和兩條DDL都記錄到了binlog中了,而select並沒有記錄。 --mysql二進位制日誌災難恢復 利用二進位制日誌實現的資料恢復可以實現基於時間點的恢復和基於位置的恢復: -將資料庫恢復到2010-10-20 19:54:44時的狀態 #mysqlbinlog --stop-datetime="2010-10-20 19:54:44" binlog.001|mysql –uroot -p -將資料庫恢復到526位置 #mysqlbinlog --stop-position=526 binlog.001|mysql –uroot –p 上面演示內容中紅色標記的就是時間,藍色標記的就是,at後面的數字 其實bin-log沒有那麼難,但是真的很重要,尤其對於DBA。 51開源版權所有,歡迎轉載,轉載時請註明作者和本文連結。 |
mysql二進位制日誌詳解
轉載地址:
mysql二進位制日誌詳解
時間:2010-10-21 12:53來源:51開源原創 作者:夜的飛翔 點選: 次
大家好, 51 開源已經將關於 mysql 的各種重要日誌檔案的技術文件都發表出來了,並建成了 mysql 日誌專題,本文 51 開源介紹在 mysql 中非常重要地日誌檔案,那就是二進位制日誌,也就是你常聽的 bin-log 。在 5.1 的 mysql 版本中已經沒有了更新日誌,二進位制
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-775952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 二進位制日誌總結MySql
- MySQL 壓縮二進位制日誌MySql
- mysql二進位制日誌是什麼MySql
- 使用canal偷取MySQL的二進位制日誌MySql
- mysql二進位制日誌的引數介紹MySql
- mysqlbinlog命令詳解 Part 7 備份二進位制日誌檔案MySql
- MySQL什麼時候輪換二進位制日誌MySql
- 如何在MySQL中檢視binlog二進位制日誌?MySql
- 進位制詳解:二進位制、八進位制和十六進位制
- mysql關於二進位制日誌binary log的總結MySql
- 遠端備份MySQL二進位制日誌--read-from-remote-serverMySqlREMServer
- MySQL二進位制日誌的三種格式優缺點比較MySql
- 【MySQL解惑筆記】Mysql5.7.x無法開啟二進位制日誌MySql筆記
- mysql關於ib_logfile事務日誌和binary log二進位制日誌的區別MySql
- Web 前端開發日誌(二):JavaScript 的二進位制操作Web前端JavaScript
- mysqlbinlog 處理二進位制日誌檔案的工具MySql
- mysqldump全量備份+mysqlbinlog二進位制日誌增量備份MySql
- MySQL二進位制檔案(binlog)MySql
- 二進位制原碼、反碼、補碼詳解
- MySQL二進位制日誌Mixed格式轉化為row格式的六種情況總結MySql
- 二進位制與二進位制運算
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 【Linux合集】二進位制安裝mysqlLinuxMySql
- mysql檢視binlog日誌詳解MySql
- mysql的日誌檔案詳解MySql
- 二進位制
- (二進位制)
- 如何將日誌檔案和二進位制檔案快速匯入HDFS?
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- GTID中MySQL啟動時間慢?二進位制日誌檔案大小可能是問題MySql
- Ubuntu 24.04 二進位制安裝 MySQL 8.0.20UbuntuMySql
- centos 7 二進位制安裝mysql 5.7.25CentOSMySql
- RHEL 7.2 安裝二進位制MySQL 5.7.18MySql
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機