mysql binlog 增量備份

  

一,什麼是增量備份 mysql

增量備份,就是將新增長的數據進行備份。假如你一個數據庫,有10G的數據,天天會增長10M的數據,數據庫天天都要備份一次,這麼多數據是否是都要備份呢?仍是隻要備份增長的數據呢,很顯然,我只要備份增長的數據。這樣減小服務器的負擔。  sql

二,啓用binlog vi my.cnf 數據庫

log-bin=/var/lib/mysql/mysql-bin.log,若是是這樣的話log-bin=mysql-bin.log默認在datadir目錄下面 [root@BlackGhost mysql]# ls |grep mysql-bin mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.000004 mysql-bin.000005 mysql-bin.000006 mysql-bin.index 服務器

啓動後會產生mysql-bin這樣的文件,每啓動一次,就會增長一個或者多個。 mysql-bin.000002這樣文件存放的是數據庫天天增長的數據,全部數據庫的數據增量都在這裏面。 ide

三,查看mysql-bin.000002這樣的文件裏面究竟是什麼東西 [root@BlackGhost mysql]# 日誌

mysqlbinlog   /var/lib/mysql/mysql-bin.000002 > /tmp/add.sql 下面還有一個重要索引文件就是mysql-bin.index [root@BlackGhost mysql]# cat mysql-bin.index   四,增量備份和增量還原  1,增量備份 code

既然咱們知道了,mysql裏面新增長的數據在mysql-bin這樣的文件裏面,咱們server



           

 



只要把mysql-bin這樣的文件進行備份就能夠了。 cp /var/lib/mysql/mysql-bin* /data/mysql_newbak/ 2,增量還原,講幾個經常使用的,比較有用的 a),根據時間來還原 –start-date,–stop-date mysqlbinlog –start-date=」2010-09-29 18:00:00″ –stop-date=」2010-09-29 23:00:00″ \ blog

 /var/lib/mysql/mysql-bin.000002 |mysql -u root -p b),根據起始位置來還原,–start-position,–stop-position  索引

mysqlbinlog –start-position=370 

–stop-position=440  /var/lib/mysql/mysql-bin.000002 |mysql -u root -p   

mysqlbinlog –start-position=370 

–stop-position=440  /var/lib/mysql/mysql-bin.000002 

–start-position=370 –stop-position=440 這裏面數字從哪兒來的呢? 日誌文件 # at 370 

#100929 21:35:25 server id 1  end_log_pos440 

Query    thread_id=1    exec_time=0    error_code=0 SET TIMESTAMP=1285767325/*!*/; 

上面的紅色加粗的就是,一個是start-position,一個是stop-position c),根據數據庫名來進行還原 -d 

在這裏是小寫的d,請不要把它和mysqldump中的-D搞混了。哈哈。 mysqlbinlog -d test  /var/lib/mysql/mysql-bin.000002 d),根據數據庫所在IP來分-h 

mysqlbinlog -h 192.1681.102  /var/lib/mysql/mysql-bin.000002 e),根據數據庫所佔用的端口來分-P 




 



有的時候,咱們的mysql用的不必定是3306端口,注意是大寫的P mysqlbinlog -p 13306  /var/lib/mysql/mysql-bin.000002 f),根據數據庫serverid來還原–server-id 

在數據庫的配置文件中,都有一個serverid而且同一集羣中serverid是不能相同的。 

mysqlbinlog –server-id=1  /var/lib/mysql/mysql-bin.000002   

注意:上面的幾個例子,我都是一個一個說的,其實能夠排列組合的。例如 mysqlbinlog –start-position=」2010-09-29 18:00:00″ -d test -h 127.0.0.1 /var/lib/mysql/mysql-bin.000002 |mysql -u root -p 五,後續 

增量備份的時候,有一點讓人不爽,就是mysql-bin這樣的文件,每啓動一次mysql就會增長一些,若是你不去管他的話,時間長了,他會把你的磁盤佔滿。 ./mysqldump –flush-logs -u root  myblog > /tmp/myblog.sql 備份myblog數據庫,清除增量備份裏面的有關myblog的數據 ./mysqldump –flush-logs -u root  –all-databases > /tmp/alldatabase.sql 備份全部數據庫,清除增量備份 

mysql-bin.index的起索引做用,由於增量的數據不必定在一個mysql-bin000這樣的文件裏面,這個時候,咱們就要根據mysql-bin.index來找mysql-bin這樣的增量文件了。 

若是mysql裏面作了這樣的配置binlog-do-db=test1,增量備份裏面只會有test1這個數據庫的數據

相關文章
相關標籤/搜索