国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL二進制日志使用操作流程

2024-07-24 12:35:29
字體:
來源:轉載
供稿:網友
  二進制日志非常的好用了,我們通常可以使用mysql二進制日志進行一些操作了,下面我們來深入理解MySQL二進制日志使用例子與說明.
 
  簡介:MySQL的二進制日志可以說或是MySQL最重要的日志了,它記錄了所有的DDL和DML(除了數據查詢語句)語句,以事件形式記錄,還包含語句所執行的消耗的時間,MySQL的二進制日志是失誤安全型的.
 
  MySQL的二進制日志的作用是顯而易見的,可以方便的備份這些日志以便做數據恢復,也可以作為主從復制的同步文件,然而二進制日志的大小可能會根據不同的需求而存在麻煩,所以讓日志回滾是必須的,當然MySQL已經為我們提供了二進制回滾的功能,那就是max_binlog_size參數.
 
  默認MySQL的二進制日志達到1G后就會自動回滾,如果我們想要更小的二進制日志,可以使用max_binlog_size參數來設置,測試使用max_binlog_size=200M,具體應用就是在配置文件里添加這個參數max_binlog_size=200M,官方文檔是這樣解釋的:
 
  mysqld在每個二進制日志名后面添加一個數字擴展名。每次你啟動服務器或刷新日志時該數字則增加。如果當前的日志大小達到 max_binlog_size,還會自動創建新的二進制日志。如果你正使用大的事務,二進制日志還會超過 max_binlog_size:事務全寫入一個二進制日志中,絕對不要寫入不同的二進制日志中。也就是說,在達到max_binlog_size的時候,如果正在處理一個大的事務,那么二進制日志會在處理完這個事務后才會回滾,所以該二進制日志可能會大于所設定的max_binlog_size。
 
  在主從復制的應用中,可能我們不希望二進制日志過大,因為日志過大可能會影響日志的執行效率,適當調整max_binlog_size的值還是非常有意義的,當然還要記得定期清理長時間不用的日志哦,要不然你的硬盤空間很快就會被用完的.
 
  開啟mysql二進制日志,編輯my.cnf,添加:log-bin=/var/log/mysql/mysql-bin.log
 
  開啟日志后需要myssqladmin flush logs才能生效.
 
  需要注意的是log-bin指定擴展名是無效的,當mysql創建二進制日志文件時,首先創建一個以“mysql_log_bin”為名稱,以“.index”為后綴的文件,再創建一個以“mysql_log_bin”為名稱,以 “.000001”為后綴的文件,當mysql服務重新啟動一次以“.000001”為后綴的文件會增加一個,并且后綴名加1遞增;如果日志長度超過了 max_binlog_size的上限(默認是1G)也會創建一個新的日志文件;使用flush logs(mysql命令符)或者執行mysqladmin –u –p flush-logs(windows命令提示符)也會創建一個新的日志文件.
 
  查看:由于日志是以二進制方式存儲的,不能直接讀取,需要使用mysql自帶的mysqlbinlog工具來進行查看.
 
  mysqlbinlog mysql-bin.000002 -d test
 
  mysqlbinlog有一些選項可以使用,簡單說明常用選項:
 
  -d,--database=name:指定數據庫名稱,只列出指定數據庫的操作.
 
  -D, --disable-log-bin:執行恢復的時候,禁止二進制日志.可以防止同一臺MySQL加上-t時進入死循環
 
  -o,--offset=n:忽略掉日志前n行命令
 
  -r,--result-file=name:將輸出日志到指定文件
 
  清理:
 
  刪除全部二進制日志:reset master
 
  刪除部分日志:
 
  PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE
 
  PURGE MASTER LOGS TO 'mysql-bin.******'命令,是將'******'編號之前的所有日志進行刪除.
 
  PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:mm:ss'命令,是將在'yyyy-mm-dd hh:mm:ss'時間之前的所有日志進行刪除
 
  設置日志過期時間,修改my.cnf:expire_log_day=5
 
  這里設置保存5天的日志,超過5天的日志會被自動刪除
 
  恢復,完全恢復:mysqlbinlog mysql-bin.00001|mysql -uroot -p
 
  基于時間點的恢復:如果誤刪了一張表,使用完全恢復是沒有用的,因為日志里同樣也保留著刪除的sql語句,所以我們需要恢復到誤操作前的狀態,然后跳過誤操作的語句.
 
  假如我在20:00誤刪了一張表,可以使用以下語句恢復:
 
  mysqlbinlog --stop-date='2012-06-05 19:59:59' /var/log/mysql-bin.000001 | mysql -uroot -p
 
  跳過誤刪除的時間點,再執行:
 
  mysqlbinlog --start-date='2012-06-05 20:01:00' /var/log/mysql-bin.000001 | mysql -uroot -p。
 
  

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇义县| 花垣县| 东乌珠穆沁旗| 修水县| 巴林右旗| 特克斯县| 三门县| 安西县| 东明县| 和硕县| 额济纳旗| 达孜县| 曲阳县| 望谟县| 昌宁县| 湄潭县| 民乐县| 喀喇| 嵊泗县| 和林格尔县| 曲阳县| 福州市| 巴中市| 库车县| 塔河县| 张家界市| 青铜峡市| 晋城| 伽师县| 巴塘县| 师宗县| 民勤县| 大城县| 龙江县| 内丘县| 盘锦市| 许昌市| 桂林市| 新疆| 蓬莱市| 黑水县|