亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL 自動清理binlog日志的方法

2024-07-24 13:10:58
字體:
來源:轉載
供稿:網友

說明:

開啟MySQL binlog日志的服務器,如果不設置自動清理日志,默認binlog日志一直保留著,時間一長,服務器磁盤空間被binlog日志占滿,導致MySQL數據庫出錯。

使用下面方法可以安全清理binlog日志

一、沒有主從同步的情況下清理日志

mysql -uroot -p123456 -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY)';

#mysql 定時清理5天前的binlog

mysql -u root -p  #進入mysql 控制臺

reset master;  #重置binlog

二、MySQL主從同步下安全清理binlog日志

1、mysql  -u root -p   #進入從服務器mysql控制臺
show slave status/G;   #檢查從服務器正在讀取哪個日志,有多個從服務器,選擇時間最早的一個做為目標日志。
2、進入主服務器mysql控制臺

show master log;   #獲得主服務器上的一系列日志
PURGE MASTER LOGS TO 'binlog.000058';   #刪除binlog.000005之前的,不包括binlog.000058
PURGE MASTER LOGS BEFORE '2016-06-22 13:00:00';  #清除2016-06-22 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  #清除3天前binlog日志

三、設置自動清理MySQL binlog日志

vi  /etc/my.cnf  #編輯配置

expire_logs_days = 15 #自動刪除15天前的日志。默認值為0,表示從不刪除。log-bin=mysql-bin #注釋掉之后,會關閉binlog日志binlog_format=mixed #注釋掉之后,會關閉binlog日志

:wq!  #保存退出

擴展閱讀:

mysql> help purge;

Name: 'PURGE BINARY LOGS'

Description:

Syntax:

PURGE { BINARY | MASTER } LOGS

{ TO 'log_name' | BEFORE datetime_expr }

The binary log is a set of files that contain information about data

modifications made by the MySQL server. The log consists of a set of

binary log files, plus an index file (see

http://dev.mysql.com/doc/refman/5.5/en/binary-log.html).

The PURGE BINARY LOGS statement deletes all the binary log files listed

in the log index file prior to the specified log file name or date.

BINARY and MASTER are synonyms. Deleted log files also are removed from

the list recorded in the index file, so that the given log file becomes

the first in the list.

This statement has no effect if the server was not started with the

--log-bin option to enable binary logging.

URL: http://dev.mysql.com/doc/refman/5.5/en/purge-binary-logs.html

Examples:

PURGE BINARY LOGS TO 'mysql-bin.010';

PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';

下面是其它網友給出的方法,大家可以參考一下

MYSQL主從復制(replication)采用 RBR 模式后,binlog的格式為"ROW",能解決很多原先出現的主鍵重復問題。
在一個繁忙的master db server上,binlog日志文件增長速度很快,如果不定時清除,硬盤空間很快就會被充滿。
設置自動清理mysql binlog日志,配置my.cnf:

expire_logs_days = 10

在運行時修改:

show binary logs;
show variables like '%log%';
set global expire_logs_days = 10;

清除之前可以采用相應的備份策略。

手動刪除10天前的MySQL binlog日志:

PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY);
show master logs;

MASTER和BINARY是同義詞。

一般情況下,推薦使用MIXED binlog的復制。http://dev.mysql.com/doc/refman/5.1/en/open-bugs-general.html中的說明:Replication uses query-level logging: The master writes the executed queries to the binary log. This is a very fast, compact, and efficient logging method that works perfectly in most cases.

附:關于MYSQL復制的幾種模式


從 MySQL 5.1.12 開始,可以用以下三種模式來實現:
– 基于SQL語句的復制(statement-based replication, SBR),
– 基于行的復制(row-based replication, RBR),
– 混合模式復制(mixed-based replication, MBR)。
相應地,binlog的格式也有三種:STATEMENT,ROW,MIXED。 MBR 模式中,SBR 模式是默認的。

在運行時可以動態改動 binlog的格式,除了以下幾種情況:
. 存儲流程或者觸發器中間
. 啟用了NDB
. 當前會話試用 RBR 模式,并且已打開了臨時表

如果binlog采用了 MIXED 模式,那么在以下幾種情況下會自動將binlog的模式由 SBR 模式改成 RBR 模式。
. 當DML語句更新一個NDB表時
. 當函數中包含 UUID() 時
. 2個及以上包含 AUTO_INCREMENT 字段的表被更新時
. 行任何 INSERT DELAYED 語句時
. 用 UDF 時
. 視圖中必須要求運用 RBR 時,例如建立視圖是運用了 UUID() 函數

設定主從復制模式:
log-bin=mysql-bin
#binlog_format="STATEMENT"
#binlog_format="ROW"
binlog_format="MIXED"

也可以在運行時動態修改binlog的格式。例如
mysql> SET SESSION binlog_format = 'STATEMENT';
mysql> SET SESSION binlog_format = 'ROW';
mysql> SET SESSION binlog_format = 'MIXED';
mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'MIXED';

兩種模式各自的優缺點:

SBR 的優點:
歷史悠久,技能成熟
binlog文件較小
binlog中包含了所有數據庫修改信息,可以據此來審核數據庫的安全等情況
binlog可以用于實時的還原,而不僅僅用于復制
主從版本可以不一樣,從服務器版本可以比主服務器版本高
SBR 的缺點:
不是所有的UPDATE語句都能被復制,尤其是包含不確定操作的時候。
調用具有不確定因素的 UDF 時復制也可能出疑問
運用以下函數的語句也不能被復制:
* LOAD_FILE()
* UUID()
* USER()
* FOUND_ROWS()
* SYSDATE() (除非啟動時啟用了 –sysdate-is-now 選項)
INSERT … SELECT 會產生比 RBR 更多的行級鎖
復制須要執行 全表掃描(WHERE 語句中沒有運用到索引)的 UPDATE 時,須要比 RBR 請求更多的行級鎖
對于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 語句會阻塞其他 INSERT 語句
對于一些復雜的語句,在從服務器上的耗資源情況會更嚴重,而 RBR 模式下,只會對那個發生變化的記錄產生影響
存儲函數(不是存儲流程 )在被調用的同時也會執行一次 NOW() 函數,這個可以說是壞事也可能是好事
確定了的 UDF 也須要在從服務器上執行
數據表必須幾乎和主服務器保持一致才行,否則可能會導致復制出錯
執行復雜語句如果出錯的話,會消耗更多資源

RBR 的優點:
任何情況都可以被復制,這對復制來說是最安全可靠的
和其他大多數數據庫系統的復制技能一樣
多數情況下,從服務器上的表如果有主鍵的話,復制就會快了很多
復制以下幾種語句時的行鎖更少:
* INSERT … SELECT
* 包含 AUTO_INCREMENT 字段的 INSERT
* 沒有附帶條件或者并沒有修改很多記錄的 UPDATE 或 DELETE 語句
執行 INSERT,UPDATE,DELETE 語句時鎖更少
從服務器上采用多線程來執行復制成為可能
RBR 的缺點:
binlog 大了很多
復雜的回滾時 binlog 中會包含大量的數據
主服務器上執行 UPDATE 語句時,所有發生變化的記錄都會寫到 binlog 中,而 SBR 只會寫一次,這會導致頻繁發生 binlog 的并發寫疑問
UDF 產生的大 BLOB 值會導致復制變慢
不能從 binlog 中看到都復制了寫什么語句(加密過的)
當在非事務表上執行一段堆積的SQL語句時,最好采用 SBR 模式,否則很容易導致主從服務器的數據不一致情況發生
另外,針對系統庫 mysql 里面的表發生變化時的處理準則如下:
如果是采用 INSERT,UPDATE,DELETE 直接操作表的情況,則日志格式根據 binlog_format 的設定而記錄
如果是采用 GRANT,REVOKE,SET PASSWORD 等管理語句來做的話,那么無論如何 都采用 SBR 模式記錄。
注:采用 RBR 模式后,能處理很多原先出現的主鍵重復問題。實例:
對于insert into db_allot_ids select * from db_allot_ids 這個語句:
在BINLOG_FORMAT=STATEMENT 模式下:
BINLOG日志信息為:
—————————————–
BEGIN
/*!*/;
# at 173
#090612 16:05:42 server id 1 end_log_pos 288 Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1244793942/*!*/;
insert into db_allot_ids select * from db_allot_ids
/*!*/;
—————————————–

在BINLOG_FORMAT=ROW 模式下:
BINLOG日志信息為:
—————————————–
BINLOG '
hA0yShMBAAAAMwAAAOAAAAAAAA8AAAAAAAAAA1NOUwAMZGJfYWxsb3RfaWRzAAIBAwAA
hA0yShcBAAAANQAAABUBAAAQAA8AAAAAAAEAAv/8AQEAAAD8AQEAAAD8AQEAAAD8AQEAAAA=
'/*!*/;
—————————————–


清理日志步驟
1.查找日志檔案
mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| ablelee.000001 | 150462942 |
| ablelee.000002 |       125 |
| ablelee.000003 |       106 |
+----------------+-----------+
2.刪除bin-log(刪除ablelee.000003之前的而沒有包含ablelee.000003)
mysql> purge binary logs to 'ablelee.000003';
Query OK, 0 rows affected (0.16 sec)

3.  查詢結果(現在只有一條記錄了.)

mysql> show binlog events/G
*************************** 1. row ***************************
   Log_name: ablelee.000003
        Pos: 4
 Event_type: Format_desc
  Server_id: 1
End_log_pos: 106
       Info: Server ver: 5.1.26-rc-log, Binlog ver: 4
1 row in set (0.01 sec)
(ablelee.000001和ablelee.000002已被刪除)
mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| ablelee.000003 |       106 |
+----------------+-----------+
1 row in set (0.00 sec)
 
(刪除的其它格式運用!)
   PURGE {MASTER | BINARY} LOGS TO 'log_name'
  PURGE {MASTER | BINARY} LOGS BEFORE 'date'
  用于刪除列于在指定的日志或日期之前的日志索引中的所有二進制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為第一個。
  例如:
  PURGE MASTER LOGS TO 'mysql-bin.010';
  PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';
    清除3天前的 binlog
    PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
  BEFORE變量的date自變量可以為'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同義詞。
  如果您有一個活性的從屬服務器,該服務器當前正在讀取您正在試圖刪除的日志之一,則本語句不會起作用,而是會失敗,并伴隨一個錯誤。不過,如果從屬服務器是休止的,并且您碰巧清理了其想要讀取的日志之一,則從屬服務器啟動后不能復制。當從屬服務器正在復制時,本語句可以安全運行。您不需要停止它們。
  要清理日志,需按照以下步驟:
  1. 在每個從屬服務器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日志。
  2. 使用SHOW MASTER LOGS獲得主服務器上的一系列日志。
  3. 在所有的從屬服務器中判定最早的日志。這個是目標日志。如果所有的從屬服務器是更新的,這是清單上的最后一個日志。

  4. 制作您將要刪除的所有日志的備份。(這個步驟是自選的,但是建議采用。)

  5. 清理所有的日志,但是不包括目標日志

 

注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩亚洲欧美中文高清在线| 国产精品视频yy9099| 国产精品偷伦免费视频观看的| 91地址最新发布| 欧美精品一区三区| 欧美一级成年大片在线观看| 成人高h视频在线| 亚洲无av在线中文字幕| 亚洲精品视频在线播放| 日韩av不卡电影| 日韩av大片免费看| 国产精品久久久久久久app| 5566日本婷婷色中文字幕97| 国产精品黄页免费高清在线观看| 亚洲一二三在线| 91中文在线观看| 国产亚洲综合久久| 亚洲激情视频网| 亚洲精品影视在线观看| 青青草原成人在线视频| 狠狠做深爱婷婷久久综合一区| 2020欧美日韩在线视频| 欧美激情免费看| 全亚洲最色的网站在线观看| 欧美日韩第一页| 成人网页在线免费观看| 久久久久久久久久国产| 成人精品视频在线| 精品国产乱码久久久久久虫虫漫画| 国产成人在线精品| 精品国产乱码久久久久久婷婷| 欧美小视频在线观看| 亚洲国产精品美女| 日韩成人中文字幕在线观看| 日韩在线视频免费观看高清中文| 欧美日韩黄色大片| 欧美精品18videos性欧美| 久久天天躁狠狠躁夜夜躁2014| 亚洲精品在线观看www| 韩国美女主播一区| 欧美极品少妇xxxxx| 久久久国产一区| 青青草99啪国产免费| 97精品国产91久久久久久| 欧美日韩免费在线| 亚洲一级黄色片| 欧美亚洲激情视频| 国产精品一区二区性色av| 欧美激情奇米色| 亚洲无限乱码一二三四麻| 欧美日韩亚洲精品内裤| 亚洲国产成人在线视频| 欧美激情视频一区二区| 欧美亚洲视频在线看网址| 成人春色激情网| 成人97在线观看视频| 一本一本久久a久久精品综合小说| 亚洲最大福利视频网站| 亚洲精品电影网在线观看| 国产99视频精品免视看7| 欧美大片欧美激情性色a∨久久| 欧美极品欧美精品欧美视频| 日韩av成人在线| 97人洗澡人人免费公开视频碰碰碰| 亚洲精品在线91| 亚洲欧美另类自拍| 欧美中文字幕视频在线观看| 欧美高清视频在线| 性欧美在线看片a免费观看| 欧美大全免费观看电视剧大泉洋| 亚洲欧美变态国产另类| 97婷婷涩涩精品一区| 久久久亚洲精品视频| 91在线免费观看网站| 国产精品久久久久7777婷婷| 国产99久久精品一区二区永久免费| 午夜精品久久久久久99热软件| 国产99视频在线观看| 57pao国产成人免费| 日韩欧美中文字幕在线播放| 91在线观看免费高清完整版在线观看| 国产91av在线| 亚洲人成毛片在线播放| 热门国产精品亚洲第一区在线| 久久不射热爱视频精品| 色综合五月天导航| 国产z一区二区三区| 久久精品国产亚洲精品| 一区二区三区视频在线| 国产欧美一区二区白浆黑人| 不用播放器成人网| 国产69久久精品成人看| 亚洲va久久久噜噜噜久久天堂| 亚洲美腿欧美激情另类| 国精产品一区一区三区有限在线| 91精品在线播放| 永久免费精品影视网站| 不卡av在线网站| 日韩精品高清在线| 亚洲精品自拍偷拍| 91精品国产精品| 尤物yw午夜国产精品视频明星| 中文字幕亚洲精品| 伊人一区二区三区久久精品| 欧美多人爱爱视频网站| 欧美另类高清videos| 最近2019年中文视频免费在线观看| 久久久久久久久网站| 国产精品久久久久久av福利软件| 亚洲一区二区精品| 日韩大陆毛片av| 精品国内自产拍在线观看| 久久99亚洲热视| 中文字幕av一区二区| 国产精品精品久久久久久| 51久久精品夜色国产麻豆| 丰满岳妇乱一区二区三区| 秋霞av国产精品一区| 久久久伊人日本| 在线观看日韩专区| 久久精品国产成人精品| 欧美视频一区二区三区…| 久久精品国产电影| 亚洲一区二区免费| 一级做a爰片久久毛片美女图片| 欧美国产高跟鞋裸体秀xxxhd| 7777免费精品视频| 国产午夜精品一区二区三区| 国产欧美一区二区三区久久人妖| 亚洲国产精品视频在线观看| 亚洲毛茸茸少妇高潮呻吟| 欧美国产中文字幕| 亚洲精品网址在线观看| 久青草国产97香蕉在线视频| 国产日韩欧美91| 高清欧美性猛交xxxx黑人猛交| 日韩激情视频在线| 午夜精品视频网站| 久久久久久香蕉网| 黄网动漫久久久| 亚洲欧美制服另类日韩| 精品无人区乱码1区2区3区在线| 国产美女被下药99| 成人免费淫片aa视频免费| 成人中文字幕+乱码+中文字幕| 国产亚洲精品久久| 亚洲free性xxxx护士白浆| 亚洲自拍偷拍在线| 国产97色在线| 91精品视频网站| 久久久国产在线视频| 最好看的2019年中文视频| 精品性高朝久久久久久久| 宅男66日本亚洲欧美视频| 日韩精品中文字幕久久臀| 色综合视频一区中文字幕| 精品无码久久久久久国产| 欧美网站在线观看| 亚洲在线一区二区| 久久九九亚洲综合| 亚洲小视频在线观看| 久久天天躁狠狠躁夜夜av| 日韩国产精品亚洲а∨天堂免| 91tv亚洲精品香蕉国产一区7ujn|