windows上備份mysql數據庫


 

方案一:采用mysql自帶的工具mysqldump。

腳本文件backup.bat如下:

 

set  "YMD=%date:~,4%%date:~5,2%%date:~8,2%"
cd    /d   C:\Program Files\MySQL\MySQL Server 5.7\bin
mysqldump  --no-defaults    -uroot    -p"501501"    sdxs    >  E:/databaseBackupData/sdxs/sdxs_%YMD%.sql

解釋如下:

      1、set  "YMD=%date:~,4%%date:~5,2%%date:~8,2%"              表示給變量YMD賦值為執行該腳本時的年月日,比如為20180505。

      2、cd    /d   C:\Program Files\MySQL\MySQL Server 5.7\bin     表示切換cmd目錄到C:\Program Files\MySQL\MySQL Server 5.7\bin中。特別注意 /d 必須加上。否則失敗。

      3、mysqldump  --no-defaults    -uroot    -p"501501"    sdxs     >  E:/databaseBackupData/sdxs/sdxs_%YMD%.sql       

         表示執行mysqldump 命令--no-defaults 的作用主要是解決執行該命令出現error的--no-beep。即如下圖錯誤。

     4、完整的mysqldump命令表示如下:

       mysqldump    --no-defaults 

--host=120.120.120.120

--port=3306

--user=root

--password=501501

--events

--routines 

--triggers

--flush-logs 

--add-drop-database

--add-drop-table

--add-locks

--complete-insert

--default-character-set=utf8

(--lock-all-tables) 一般不用

--log-error=E:/databaseBackupData/sdxs/sdxs_%YMD%.err

(--no-data) 一般不用

--single-transaction 

 --master-data=2 

--databases sdxs

E:/databaseBackupData/sdxs/sdxs_%YMD%.sql

        如果添加 --no-data 選項,則只備份結構不會備份數據。

       --host=127.0.0.1 用於指定mysql數據庫所在的ip地址,這里指定為本地的ip 。因此可以遠程備份,異地備份,該選項用於指定備份哪一台機器上的mysql數據庫。

       --port=3306 用於指mysql定數據庫服務使用的端口,這里指定為3306端口 。

       --databases 數據庫A,數據庫B,數據庫C等,用於指定備份指定mysql服務器的哪些數據庫。如果備份這台mysql服務器上的所有的數據庫的所有表,則用 --all-databases 選項,真正在生產環境中,我們應該導出的是整個mysql服務器中的數據,而不是單個庫,因此應該使用--all-databases。

       --user="igoodful"  用於指定數據庫的用戶名,這里指定用戶名為igoodful 。

       --password="123456"  表示該數據庫用戶的密碼,這里是給igoodful用戶指定的密碼為123456 。

       --comments="很好"     表示給備份文件添加注釋。

       --default-character-set=utf8 表示該數據庫使用的默認字符集 。

       --events       表示數據庫的事件也會備份,默認不會備份事件。

       --routines   表示導出存儲過程以及自定義函數,默認不會備份存儲過程以及自定義函數

       --triggers  表示數據庫的觸發器也會備份,默認會備份觸發器

       --flush-logs 表示日志滾動一次,以免日志不一致。

       --add-drop-database 表示每個數據庫創建之前會先執行drop對應的數據庫,即會在備份文件中先執行drop 對應的數據庫操作。

       --add-drop-table       表示每個數據表創建之前會先執行drop對應的數據表,即會在備份文件中先執行drop 對應的數據表操作。默認執行drop,可以添加--skip-add-drop-table取消drop。

      --add-locks  在每個表導出之前增加LOCK TABLES並且之后UNLOCK  TABLE。(默認為打開狀態,使用--skip-add-locks取消選項)

      --complete-insert  表示使用完整的insert語句(包含列名稱)。這么做能提高插入效率,但是可能會受到max_allowed_packet參數的影響而導致插入失敗。

     --default-character-set=utf8   表示指定的字符集。

     --lock-all-tables 表示提交請求鎖定所有數據庫中的所有表,以保證數據的一致性。這是一個全局讀鎖。--single-transaction 互斥

     --log-error=E:/databaseBackupData/sdxs/sdxs_%YMD%.err 表示附加警告和錯誤信息到給定文件。

     --no-data 表示不導出任何數據,只導出數據庫表結構。

     --single-transaction 表示該選項在導出數據之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用於多版本存儲引擎,僅InnoDB。本選項和--lock-tables 選項是互斥的,因為LOCK  TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用--quick 選項。該選項實現熱備份。熱備(hot backup):備份的同時,業務不受影響。

  --master-data=2 表示mysqldump導出數據時,當這個參數的值為1的時候,mysqldump出來的文件就會包括CHANGE MASTER TO這個語句,CHANGE MASTER TO后面緊接着就是file和position的記錄,在slave上導入數據時就會執行這個語句,salve就會根據指定這個文件位置從master端復制binlog。默認情況下這個值是1。當這個值是2的時候,chang master to也是會寫到dump文件里面去的,但是這個語句是被注釋的狀態。記錄備份那一時刻的二進制日志的位置

 

備份到120的有:

 備份到106的有:bat存放腳本文件,data存放備份的數據數據

 

 

5、備份后使用備份的sql文件時,特別注意下面的語句。會創備份的建數據庫(如果不存在該庫),而且使用創建的數據庫來執行備份中的sql語句。

 


免責聲明!

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



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