MYSQL binlog簡述及簡單操作
binlog主要兩大作用
- 高可用
- 資料恢復。
如何開啟binlog
在my.cnf中配置:log-bin =/home/data/mysql/binlog/mysql-bin
檢查是否開啟
mysql> show variables like '%log_bin%';
+---------------------------------+-----------------------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------------------+
| log_bin | ON |
| log_bin_basename | /home/data/mysql/binlog/mysql-bin |
| log_bin_index | /home/data/mysql/binlog/mysql-bin.index |
| sql_log_bin | ON |
+---------------------------------+-----------------------------------------+
關閉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恢復資料
恢復條件:
- 舊錶:全備份sql檔案 + binlog日誌
- 新表: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