1. 程式人生 > >MYSQL binlog簡述及簡單操作

MYSQL binlog簡述及簡單操作

binlog主要兩大作用

  1. 高可用
  2. 資料恢復。

如何開啟binlog

在my.cnf中配置:log-bin =/home/data/mysql/binlog/mysql-bin

檢查是否開啟

關閉binlog

my.cnf登出#log-bin =/home/data/mysql/binlog/mysql-bin
需要restart資料庫

線上開啟binlog

SET sql_log_bin=1|0 (1為開啟,0為關閉)
ps:重啟資料庫失效

切換binlog命令

在mysql中執行flush logs;

修改二進位制日誌檔案(binlog)大小

my.cnf中配置max_binlog_size

binlog 清理

主從模式下需要關閉主從

設定有效天數清理binlog

my.cnf設定expire_logs_days=10;意思是保留10天的binlog滾動清理。

手動清除binlog檔案

根據日誌檔名:PURGE MASTER LOGS TO ′MySQL-bin.010′;
根據日誌時間: PURGE MASTER LOGS BEFORE '2015-03-02 13:00:00';
根據日誌天數: PURGE MASTER LOGS BEFORE DATE_SUB(NOW(), INTERVAL 1 DAY);
清除binlog時,注意slave保持一致,不能清除正在複製的日誌。

使用mysqlbinlog 進行二進位制解析

執行mysqlbinlog可能會遇到的錯誤
ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log’, data_len: 77, event_type: 19Could not read entry at offset 306709:Error in log format or read error,將最新安裝的mysql bin目錄放到環境變數中就可以了。或使用全路徑: /usr/local/mysql/bin/mysqlbinlog

解析出來的格式(隔離級別rc模式):read-commit

statement -> sql語句
mixed -> dml(記錄所有行的變更)  ddl(sql語句)
row  ->記錄所有行的變更

rr模式不受此限制

使用binlog恢復資料

恢復條件:

  1. 舊錶:全備份sql檔案 + binlog日誌
  2. 新表:binlog日誌(在此binlog錄入期間create)

binlog恢復命令

/usr/local/mysql/bin/mysqlbinlog  --no-defaults --base64-output=decode-rows -v mysql-bin.000030 | /usr/local/mysql/bin/mysql -uroot -p

管道符的作用是先執行前面的語句,然後通過後面的語句匯入資料庫

定點恢復

--start-position 開始點 --stop-position 結束點
--start-date 開始時間 --stop-date  結束時間
eg:
/usr/local/mysql/bin/mysqlbinlog --start-datetime="2015-02-26 20:05:00" --stop-datetime="2015-02-26 20:07:00" mysql-bin.000067 | /usr/local/mysql/bin/mysql -uroot -p

實戰手記

在測試之前,需要保證my.cnf中幾個關鍵配置是關閉的,因為如果我開啟指定忽略和指定寫入binlog的配置,測試表將無法寫入binlog,也有一種情況是寫入了。但是無法將資料恢復到表中。

#不寫入binlog二進位制日誌中的資料庫
#binlog-ignore-db
#寫入binlog二進位制日誌中資料庫
#binlog-do-db
#指定只複製哪個庫的資料
#replicate-do-db

舊錶:全備份sql檔案 + binlog日誌

1.以前錄入的表資料:

create table test(id int,name varchar(20)) engine=innodb charset=utf8;
insert into test(id,name)values(1,'a');
insert into test(id,name)values(233,'bbbb');

2.全備份

/usr/local/mysql/bin/mysqldump -uroot -p --opt --default-character-set=utf8 --extended-insert=false --triggers -R --hex-blob --all-databases --flush-logs   > /tmp/alldb.sql

3.建表
– 錄入資料
insert into test(id,name)values(3,'c');
//新開一個binlog日誌,現在會生成一個新的binlog日誌,下面的操作會記錄在新的binlog日誌中

mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
|    3 | c    |
|    1 | a    |
|  233 | bbbb |
|    3 | c    |
+------+------+
6 rows in set (0.00 sec)

4.切換日誌
以便將完整的操作儲存到單獨的binlog中
flush logs;

5.刪除資料

select * from test; #有資料
delete from test;
drop table test;

6.恢復資料
先檢視上一個binlog裡面的內容:

/usr/local/mysql/bin/mysqlbinlog --no-defaults  --base64-output=decode-rows -v  mysql-bin.000042 | more

7.檢視新的binlog裡面的內容

/usr/local/mysql/bin/mysqlbinlog --no-defaults  --base64-output=decode-rows -v  mysql-bin.000043 | more

8.先恢復全備份集合:
/usr/local/mysql/bin/mysql -uroot -p </tmp/alldb.sql
9.恢復資料

/usr/local/mysql/bin/mysqlbinlog  --no-defaults --base64-output=decode-rows -v mysql-bin.000042 | /usr/local/mysql/bin/mysql -uroot -p

10.查看錶中變化

新表新表:binlog日誌(在此binlog錄入期間create)

1.切換日誌
flush logs;
2.建立新表

create table test2(id int,name varchar(20)) engine=innodb charset=utf8;
insert into test2(id,name)values(1,'a');
insert into test2(id,name)values(2,'b');

3.切換日誌
flush logs;
4.之後drop表;
drop table test2;

5.然後利用二進位制日誌進行恢復

/usr/local/mysql/bin/mysqlbinlog  --no-defaults --base64-output=decode-rows -v mysql-bin.000044 | /usr/local/mysql/bin/mysql -uroot -p

定點恢復

定位:

--start-position #開始點 --stop-position #結束點
--start-date #開始時間 --stop-date  #結束時間

按照起始時間來恢復

/usr/local/mysql/bin/mysqlbinlog --start-datetime="2015-02-26 20:05:00" --stop-datetime="2015-02-26 20:07:00" mysql-bin.000067 | /usr/local/mysql/bin/mysql -uroot -p

按照起始位置來進行恢復

/usr/local/mysql/bin/mysqlbinlog --start-position="20" --stop-position="2000" mysql-bin.000067 | /usr/local/mysql/bin/mysql -uroot -p

相關推薦

MYSQL binlog簡述簡單操作

binlog主要兩大作用 高可用 資料恢復。 如何開啟binlog 在my.cnf中配置:log-bin =/home/data/mysql/binlog/mysql-bin 檢查是否開啟 mysql> show variable

Ubuntu下安裝MySQL簡單操作

base lms vsp pic splay mysql- != nbsp tar Ubuntu上安裝MySQL非常簡單只需要幾條命令就可以完成。 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-c

ubuntu安裝mysql可視化工具MySQL-workbench簡單操作

eba ron class 如果 -m article 連接 detail mar 一.使用命令行在ubuntu下安裝mysql可視化工具MySQL-workbench Step1:安裝MySQL-workbench 方案一:如果你已經裝好mysql的相關服務,那麽直接使用

MySQL】初識資料庫簡單操作

一、資料庫概述 1.1 什麼是資料(Data) 描述事物的符號記錄稱為資料,描述事物的符號既可以是數字,也可以是文字、圖片,影象、聲音、語言等,資料由多種表現形式,它們都可以經過數字化後存入計算機。 1.2 什麼是資料庫(DataBase,簡稱DB) 資料庫即存放資料的倉庫,只不過這個倉庫是在計算機儲

Java連線MySQL資料庫簡單操作程式碼

Java連線MySql需要下載JDBC驅動MySQL-connector-java-5.0.5.zip(舉例,現有新版本)。然後將其解壓縮到任一目錄。我是解壓到D盤,然後將其目錄下的MySQL-connector-java-5.0.5-bin.jar加到classpath裡,具體如下: “我的電腦”-&

C#連線mysql資料簡單操作

使用C#連線資料庫需要用到mysql官方提供的mysql-connector,下載地址如下 官網下載地址 直接執行 選擇Typical即可 預設安裝路徑在C:\Program Files (x86)\MySQL 新建C#的控制檯

mysql 5.7.20下載、安裝和配置方法簡單操作技巧(解壓版免安裝)

安裝: 將下載的mysql壓縮包解壓後的整個目錄放在指定目錄 配置: 新建一個ini檔案,並命名為my.ini,放置到mysql安裝目錄中。檔案內容是: [mysql] # 設定mysql客戶端預設字符集 default-characte

Mysql binlog日誌binlog恢復數據庫操作

llb ase 一次 end 定時 列表 row head code 初識MySQL 日誌binlogMySQL重要log,二進制日誌文件,記錄所有DDL和DML語句(除select),事件形式記錄,包含語句所執行的消耗時間,事務安全型。DDL(數據庫定義語言),主要命

MySQL基本概念以及簡單操作

software 倉庫 必須 key 不能 即使 同時 databases ecif 一、MySQL   MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB

MySQL的安裝基本操作

mysql 數據庫 linux 楊書凡 MySQL是一個真正的多線程、多用戶的SQL數據庫服務,憑借其高性能、高可靠性和易於使用的特性,成為服務器領域中最受歡迎的開源數據庫系統。目前,由Oracle公司負責開發和維護MySQL的編譯安裝? ? 為了保證MySQL數據庫功能的完整性、可定制性,一

Saltstack 安裝配置 簡單操作示例

服務器 信任 accep 客戶服務 通過 角色 提高 cmd.run 範圍 Saltstack 介紹 通過部署 Saltstack環境,可以在成千上萬臺服務器上批量執行命令。對於不同的業務進行集中管理、分發文件、采集數據、軟件包管理等,有利於運維人員提高工作效率,規範業務配

MySQL 空間數據 簡單操作

size span val tex int font 一個 eight arc 在做的項目中需要,自己繪制區域圖形,並存儲起來,後面還有更新的需要,存文件不方面,想到現在數據庫都支持空間數據庫。 現在用的就是 MySQL ,就繼續用 MySQL 來存儲、管理空間數據。下面就

mysql編譯安裝常用操作

1.3 安裝相關包 1.3.1 cmake軟體 cd /home/oldboy/tools/ tar xf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./configure #CMake has bootstrapped.  Now run gmake. gmak

Cuckoo SandBox安裝筆記簡單操作

安裝可參考官方文件 vbox要下載後安裝,選擇最新的 /etc/init.d service apache2 start service mongodb start   find /  | grep agent.py /home/icedxu/cuck

PHP + MySQL 基本函式例項操作

連線 MySQL:mysqli_connet() //@mysqli_connect('localhost','root','985211',"zoo") or die("連線資料庫失敗"); //mysqli_connect("MySQL伺服器地址","使用者名稱","使用者密碼",

Eclipse安裝Git插件簡單操作

upd team 多人 前言 解決沖突 style stage 步驟 技術分享 0. 前言   說一件事,說起來也是好笑,工作三年半了,還沒接觸到團隊開發,都是一個人小打小鬧。因此連Git都沒有使用過。感覺好Low的,這一篇,簡單講一下,Eclipse配置Git插件,並提

mysql 首次安裝後 簡單操作與語句 新手入門

首先cd到安裝目錄中bin路徑:這是我的安裝路徑以管理員身份開啟cmd(防止許可權不足)cd E:\>cd E:\mysql\mysql-5.5.40-winx64\bin 首次安裝需要輸入 mysqld.exe -install 啟動mysqlE:\mysql\mysql-5.5.40-

SVN安裝簡單操作

服務端安裝 客戶端安裝 簡單應用 1. 服務端新增使用者 右鍵——新增使用者 3. 下載檔案到本地 右鍵——下載/更新——選擇倉庫地址和下載位置碟符 下載到本地倉庫的檔案,會在資料夾中自動生成一個.svn資料夾,這個資料夾絕對不能刪,否則

Ubuntu の MongoDB 安裝教程簡單操作

1 MongoDB 首先先來個什麼事MangoDB的簡單定義: MongoDB 是一個基於分散式檔案儲存的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。 MongoDB 是一個介於關係資料庫和非關係

BigDecimal轉String,int,double簡單操作運算、方法

BigDecimal b = new BigDecimal(12.10); //BigDecimal 轉換成 string資料型別 string c = b.toString(); //BigDeci