MySQL備份


MySQL備份有三種方法,分別是mysqldump、mysqlhotcopy、mysql-binlog備份,他們各自有優點和缺點。

1、mysqldump的備份

      原理:全量備份,查處要備份的表結構,在這個表結構上將建表語句(CREATE)和插入語句(INSERT)語句,都寫到你要備份的文件中。

                 優點:支持innodb的存儲引擎,但是其mysqldump轉存結果前,會將這個結果集放入內存中,數據量過大可能存在問題(手冊里說的),所以有主從模式以及mysql-bin增量備份的模式,就可以減少備份的時間,我們可以每天夜里都備份一次,或者寫一個shell腳本,進行備份,shell腳本還是要學習的。

                 由於我的mysqld安裝目錄在/usr/local/mysql,所以我的mysqldump的路徑為在/usr/local/mysql/bin/mysqldump,在這里做一個軟連接,使mysqldump作為系統命令。

                 ln -s /usr/local/mysql/bin/mysqldump /usr/bin   ,如圖所示:

    

 

 

               語法可以上網查一下:(注意了,mysqldump等文件使一個可執行文件,使在Linux的cli中運行的)

    案例一:把數據庫db_test備份到/tmp/db_test文件中,代碼如下【-h 最好加上,格式標准,再說以后分布式的時候都會用到】: 

mysqldump -h 127.0.0.1 -uroot -p db_test>/tmp/db_test.sql

              效果如下:

    

 

 

     我們看看,db_test.sql的問題內容,如下所示:

   

 

 

     當然還可以把整個數據庫mysqldump備份,具體的問題就具體分析。

 2、mysqlhotcopy備份,也可以叫熱備份

    優點:快

    缺點:只支持MySIAM存儲引擎

   這個就不做例子了,思路和mysqldump差不多,具體用法可以百度查

  3、mysql-binlog【重點】

  原理:配置文件log-bin=mysql-bin  使控制binlog是否開啟的開關。binlog會記錄增刪改改的記錄。

  mysql Bin-log日志的使用場景主要有兩個:1、主從復制【在后面的文章中會講到,master 把bin-log的二進制日志推送給slaves來達到master-slave數據一致】。2、數據恢復,通過使用mysql Bin-log工具來使恢復數據。

  bingLog地址:data目錄下,/usr/local/mysql/data/,如下圖所示:

  

 

    為什么會有這么多mysql Binlog文件?

  答:MySQLBinlog當遇到下述情況時,會生成新的日志文件,文件序號遞增:

          1、MySQL服務重啟以及mysqldump進行備份時時候

     2、使用flush  logs命令

     3、當binglog文件超過max_binlog_size變量時,最大值和默認值時1G【但是必須得等它自己的事務執行完畢】。

 如何查看mysql binlog中的內容?【如何查看其中內容,以便追蹤問題或者恢復數據?】

  答:使用命令mysqlbinlog

# 查看bin-log二進制文件(shell方式)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003
# 查看bin-log二進制文件(帶查詢條件)
mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/master.000003 \
    --start-datetime="2019-03-01 00:00:00"  \
    --stop-datetime="2019-03-10 00:00:00"   \
    --start-position="5000"    \
    --stop-position="20000"

       輸出內容如下圖所示:

 

    總之,你所有的增刪改操作都會記錄在這個里面。

  那么如何利用上述的mysql binlog來進行數據的恢復?

  案列:如果我向x_letter表中插入了一條數據,delete了一條數據,又插入了一條記錄,那么我應該怎么恢復?

  1、查看現在binglog運行的日志,show master status;  效果如下圖:

  

 

      2、具體的MySQL的一個binlog恢復,暫時遇不到,先不管了

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM