# 二進制日志常用命令
>[success]MySQL Binary Log也就是常說的bin-log, ,是mysql執行改動產生的二進制日志文>件,其主要作用有兩個:
>* 數據回復
>* 主從數據庫。用于slave端執行增刪改,保持與master同步。
## 1. 開啟binary log功能
需要修改mysql的配置文件`my.ini`,添加一句log_bin = mysql_bin即可
~~~
[mysqld]
......
log_bin = mysql_bin
......
~~~
如圖:

>log_bin是生成的bin-log的文件名,后綴則是6位數字的編碼,從000001開始,按照上面的配置,生成的文件則為:
mysql_bin.000001
mysql_bin.000002
配置保存以后重啟mysql的服務器。
## 2. 查看bin-log是否開啟,
~~~
msyql > show variables like '%bin%'
~~~
如圖:

## 3. 查看bin日志文件
~~~
# 查看當前日志文件
msyql > show master status;
# 查看所有日志文件
msyql > show master logs;
# 查看所有日志文件
msyql > show binary logs;
~~~
如圖:

## 4. 啟用新的日志文件,一般備份完數據庫后執行
~~~
msyql > flush logs
~~~

## 5. 清空現有的所用bin-log
~~~
msyql > reset master
~~~

## 6. 查看產生的binary log
~~~
msyql > show binlog events in 'mysql_bin.000001'
# 為了排序美觀,可以使用如下命令
msyql > show binlog events in 'mysql_bin.000001'\G
~~~


## 7. 刪除bin-log
~~~
## 刪除指定文件之前的日志文件
msyql > purge binary logs to 'mysql_bin.000001';
~~~

## 8. mysqlbinlog 工具的使用
>[danger]該工具可以導出日志文件對應的sql腳本,也可以使用它來直接恢復數據。同時,也可以使用它他查看指定時間段或者位置的日志記錄,便于分析日志。
常用命令:
~~~
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/var/mysql-bin.000012 --database=[數據庫名] --start-datetime='2018-07-20 00:00:01' --stop-datetime='2018-07-24 23:59:59' > sql.sql
~~~
>[danger]該命令也可以不導出到文件,直接查看內容。一般用于篩選分的日志從而找出有用的數據。
### 擴展-mysqlbinlog 更多用法
#### 1、直接進行恢復
~~~
mysqlbinlog /usr/local/mysql/data/mysql_bin.000001 | mysql -u root -p
~~~
#### 2、按位置進行恢復 主要參數[–stop-position –start-position]
~~~
mysqlbinlog –stop-position=368312 –start-position=368315 /usr/local/mysql/data/mysql_bin.000001 | mysql -u root -p
~~~
這里的位置可以通過讀取binlog文件進行查看,不過這個也必須自己知道進行了那些操作。后面說如果看到的文件都是亂碼或者看不到真正sql的問題
#### 3、按時間點進行恢復 主要參數 [–stop-datetime –start-datetime]
~~~
mysqlbinlog –stop-datetime=”2005-04-20 9:59:59” –start-datetime=”2005-04-20 10:01:00” /usr/local/mysql/data/mysql_bin.000001 | mysql -u root -p
~~~
時間點恢復跟位置恢復道理一樣,也必須知道具體操作的時間和要恢復到什么時間
#### 4、不同的方式進行恢復
1、如果是登錄到了mysql并且binlog也是在一臺服務器上,一般binlog的目錄會在mysql安裝目錄下data文件下那么就可以直接進行恢復
這種情況可以直接在mysql下執行命令
2、如果是只拿到了binlog文件,并且是線下的服務器需要先嘗試數據正確后再導入生產的
這種情況可以先把binlog文件輸出到你制定的sql文件如:
~~~
mysqlbinlog /usr/local/mysql/data/mysql_bin.000001 > /tmp/mysql.sql
~~~
這樣的輸出有可能是看不到任何有價值的sql如果想看到標準的sql可以使用
~~~
mysqlbinlog –base64-output=DECODE-ROWS -v /usr/local/mysql/data/mysql_bin.000001 > /tmp/mysql.sql
~~~
- 前言
- PHP獲取服務器信息
- PHP中的常用函數-新手必備知識
- 日期時間相關的函數
- 時區設置
- time函數
- strtotime 時間戳
- date函數
- mktime函數
- 聯合使用 date() 和 mktime()
- PHP數據類型相關的函數
- PHP數組相關的函數
- array函數
- 數組的排序
- sort()和rsort()函數
- asort()和arsort()函數
- ksort()和krsort()函數
- array_multisort()函數
- array_reverse函數
- 數組的遍歷
- 數組中新增和刪除元素
- 數組頭部插入和刪除元素
- 數組尾部插入和刪除元素
- 刪除數組中重復的元素
- 刪除數組中指定的元素
- 數組的合并
- 隨機/打亂已知數組
- range函數
- 數組去除重復
- PHP常用功能函數
- URL地址處理函數
- post/get請求
- PHP字符串相關的函數
- PHP文件系統
- PHP正則表達式
- 正則表達式語法規則
- POSIX擴展的正則表達式函數
- 查找字串函數
- 替換字符串函數
- Perl兼容的正則表達式函數
- PHP中類的應用
- 中文編碼
- 關于stdClass
- 變量相關函數
- unset
- PHP數值相關的函數
- 數值取整
- 開發工具與開發環境使用技巧
- sublime
- 常用插件
- Atom
- 常用插件
- 常見問題
- Visual Studio Code
- vscode常用插件
- 編程推薦字體
- MAC下開發常識
- MAC下的常用設置
- MAC下的常用開發工具
- MAC下XAMMP的常見問題
- Apache配置基礎
- PhpStrom
- php中的常見問題
- 文件上傳相關問題
- API接口中常見問題
- 關于緩沖區問題
- PHP中注意事項
- 條件判斷
- PHP文件管理模塊
- 文件管理源碼
- 文件管理的常用函數
- 文件管理中文亂碼處理
- 自定義功能函數
- 文件下載
- PHP常用頭信息定義匯總
- 常見PHP網頁木馬
- 加密算法
- 1. Base58可逆加密
- 2. AES加密/解密
- mysql數據庫操作
- 命令行操作Mysql常用令行-查詢
- 命令行操作Mysql常用令行-操作
- Mysql使用中的技巧
- 在線數據庫管理中常用命令
- sql show命令
- mysql數據庫的備份與恢復
- 二進制日志介紹
- 二進制日志常用命令
- ThinkPHP
- 數據遷移
- 常見問題
- 驗證碼問題
- API接口中的異常處理
- API接口安全
- 解決跨域問題
- 自定義實用功能函數