Windows中通过bat定时执行命令和mysqldump实现数据库备份
場景
Windows Server 的服務器,使用的數據庫是Mysql數據庫。
需要定時對數據庫進行備份。
怎樣通過一個bat腳本雙擊運行后定時執行命令。
通過Mysql自帶的mysqldump實現將數據庫備份到文件中。
這里是有兩個數據庫,所以要執行兩次備份操作。
Mysqldump
mysqldump 是 MySQL 自帶的邏輯備份工具。
它的備份原理是通過協議連接到 MySQL 數據庫,將需要備份的數據查詢出來,
將查詢出的數據轉換成對應的insert 語句,當我們需要還原這些數據時,
只要執行這些 insert 語句,即可將對應的數據還原。
命令格式
mysqldump [選項] --數據庫名 [選項 表名] > 腳本名
| --host | -h | 服務器IP地址 |
| --port | -P | 服務器端口號 |
| --user | -u | MySQL 用戶名 |
| --pasword | -p | MySQL 密碼 |
| --databases | 指定要備份的數據庫 | |
| --all-databases | 備份mysql服務器上的所有數據庫 | |
| --compact | 壓縮模式,產生更少的輸出 | |
| --comments | 添加注釋信息 | |
| --complete-insert | 輸出完成的插入語句 | |
| --lock-tables | 備份前,鎖定所有數據庫表 | |
| --no-create-db/--no-create-info | 禁止生成創建數據庫語句 | |
| --force | 當出現錯誤時仍然繼續備份操作 | |
| --default-character-set | 指定默認字符集 | |
| --add-locks | 備份數據庫表時鎖定數據庫表 |
示例:
備份所有數據庫:
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db備份指定數據庫:
mysqldump -uroot -p test > /backup/mysqldump/test.db備份指定數據庫指定表(多個表以空格間隔)
mysqldump -uroot -p? mysql db event > /backup/mysqldump/2table.db備份指定數據庫排除某些表
mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.db注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
bat中實現定時執行某命令
@echo off? title "badaodechengxvyuan" set INTERVAL=5 timeout %INTERVAL%:Again?echo %date% %time:~0,8%timeout %INTERVAL%goto Again?這里的5代表5秒執行一次,其實就是個死循環。
然后再循環里添加上備份數據的mysqldump的命令
@echo off? title "fzys-data-bak-task" set INTERVAL=20 timeout %INTERVAL%:Again? echo "fzys-bak-begin:" echo %date% %time:~0,8%"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -h127.0.0.1 -uroot -p123456 fzys> D:\fzysbak.sql &echo "fzys-bak-end:" echo %date% %time:~0,8%timeout %INTERVAL%goto Again?其中mysqldump沒有配置環境變量,所以是在腳本運行環境下的全路徑。
而且必須用雙引號包裹起來。
然后帶著輸出開始和結束時間。
如果是要備份多個數據庫的話
@echo off? title "fzys-data-bak-task" set INTERVAL=20 timeout %INTERVAL%:Again? echo "fzys-bak-begin:" echo %date% %time:~0,8%"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -h127.0.0.1 -uroot -p123456 fzys> D:\fzysbak.sql &echo "fzys-bak-end:" echo %date% %time:~0,8%ping 127.0.0.1 -n 8 &echo "fzysnacos-bak-begin:" echo %date% %time:~0,8%"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -h127.0.0.1 -uroot -p123456 fzys-nacos> D:\fzys-nacosbak.sqltimeout %INTERVAL%goto Again?進行一個ping 的操作,相當于休眠等待8秒的操作,防止上個操作影響下個操作。
總結
以上是生活随笔為你收集整理的Windows中通过bat定时执行命令和mysqldump实现数据库备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Geoserver在Linux上的安装(
- 下一篇: CentOS7中Docker的安装与配置