mysql的每隔1分钟定时_深入研究MySQL(四)、备份与恢复
一、前言
知道備份的重要性嗎?沒經歷過的可能永遠不知道,我們在重裝系統、手機升級等時候,備份一下必要數據總是有好處的,指不定哪個神操作導致磁盤數據丟失,前些日子刪庫跑路被判刑的那位老哥,如果公司有備份的話,也不至于損失幾個億(聽說是讓綠了),所以本章來學習一下MySQL的備份與恢復,如果要定期備份的話,可以寫個腳本定時執行,省去人來完成這重復的工作。
我們可以使用以下任何一種方法來生成MySQL數據庫的備份:
在本文中,會解釋如何使用mysqldump生成MySQL數據庫的備份。
二、使用mysqldump程序生成備份
Mysqldump是一個命令行程序,用于生成MySQL數據庫的備份。他生成的文件可以用于重新創建數據庫對象和數據的SQL語句。
mysqldump?-u?[用戶名]?–p?[密碼]?[選項]?[數據庫名]?[表名]>?[dumpfilename.sql]參數如下:
-u [用戶名]:連接到MySQL服務器的用戶名。-p [密碼]:MySQL用戶的密碼
[option]:用于自定義備份的配置選項
[數據庫名稱]:要備份的數據庫的名稱
[表名]:這是一個可選參數。如果要獲取備份特定表,則可以在命令中指定名稱
[dumpfilename.sql]:備份文件的路徑和名稱。
1.生成單個數據庫的備份
要生成單個數據庫的備份,可以運行以下命令,這個命令將test數據庫中的表結構和數據都保存到testdb.sql文件中。
mysqldump?-u?root?-p?test?>/home/HouXinLin/test/testdb.sql運行此命令時,會提示您輸入密碼,輸入密碼后,將在對應路徑生成sql文件,內容如下。
2.生成多個數據庫或所有數據庫的備份
如果要生成多個數據庫的備份,必須在mysqldump命令中添加--databases選項,以下命令將生成具有結構和數據的"test"和"db_score"數據庫的備份。
mysqldump?-u?root?-p?--databases?test?db_score?test?>/home/HouXinLin/test/test_tbscoredb.sql要生成整個數據庫的備份,則需要加--all-databases選項。
mysqldump?-u?root?-p?--all-databases??>/home/HouXinLin/test/test_tbscoredb.sql3.生成數據庫結構的備份
如果僅要生成數據庫結構的備份,則必須在mysqldump命令中加入–no-data選項,以下命令用于生成test數據庫的數據庫結構的備份。
mysqldump?-u?root?-p?--no-data?test?>/home/HouXinLin/test/testdb.sql4.生成特定表的備份
如果僅要生成數據庫中某個表的備份,則必須在mysqldump命令中指明表名稱,以下命令用于生成test數據庫中tb_books表的結構和數據備份。
mysqldump?-u?root?-p??test?tb_books?>/home/HouXinLin/test/testdb.sql5.僅生成數據庫數據備份
如果要生成僅數據庫數據的備份(沒有創建表的語句),則必須在mysqldump命令中加入–no-create-info 選項。以下命令生成test數據庫的數據備份。
mysqldump?-u?root?-p???--no-create-info?test?>/home/HouXinLin/test/testdb.sql生成的sql中,可以看到他只有insert語句,在插入的時候,還進行了鎖表。
三、恢復數據
恢復的話比較簡單,通過source程序傳入sql文件即可,以下是完整的備份、刪庫,恢復命令。
##?備份mysqldump?-u?root?-p?test?>/home/HouXinLin/test/testdb.sql
##?刪除test數據庫
drop?database?test;
##?創建數據庫
create?database?test;
##?選擇數據庫
use?test;
##?恢復
source?/home/HouXinLin/test/testdb.sql
四、免密碼導出
從上面可以發現在使用mysqldump的時候每次都需要輸入密碼,當然這是可以避免的
touch?~/.my.cnfvim??~/.my.cnf?
然后編輯其內容(編輯完不需要重啟),最后在使用mysqldump中一定要取消-p參數。
[mysqldump]user=root
password=xxxxx
其實對于這類更改方式,在我心中必須要看到某個文件對這個軟件有什么影響的官方文章說明,才會安心,即使知道他確實會對軟件有影響,在沒看到官方對這個解釋前,心中的這石頭總是放不下的,所以,我在官網中找到了對一些文件的解釋。
| /etc/my.cnf | 全局選項 |
| /etc/mysql/my.cnf | 全局選項 |
| SYSCONFDIR/my.cnf | 全局選項 |
| $MYSQL_HOME/my.cnf | 服務器特定的選項(僅服務器) |
| ~/.my.cnf | 用戶特定的選項 |
| ~/.mylogin.cnf | 用戶特定的登錄路徑 |
| DATADIR/mysqld-auto.cnf | 系統變量使用 SET PERSIST或 SE PERSIST_ONLY保留(僅服務器) |
SYSCONFDIR表示在構建MySQL時SYSCONFDIR 使用CMake選項指定的目錄。
MYSQL_HOME是一個環境變量,其中包含服務器特定my.cnf文件所在目錄的路徑。
DATADIR表示MySQL數據目錄。用于查找 mysqld-auto.cnf,其默認值是編譯MySQL時內置的數據目錄位置,但是可以通過--datadir 指定為在處理之前mysqld-auto.cnf處理的選項文件或命令行選項來更改。
五、定時備份
Linux自帶一個定時任務系統,可以通過crontab -e進行添加,也可以修改/etc/crontab文件,另外這個服務的最低偵是分鐘,也就是無法做到每隔x秒后去執行任務,這個服務會每分鐘去讀取一次 /etc/crontab 和 /var/spool/cron 里面的數據,在編輯/etc/crontab文件后,只需靜靜等待即可,下面以/etc/crontab為例子,在文件最后加入每隔1秒執行一次腳本,這需要對cron表達式有所了解。
#?/etc/crontab:?system-wide?crontab#?Unlike?any?other?crontab?you?don't?have?to?run?the?`crontab'
#?command?to?install?the?new?version?when?you?edit?this?file
#?and?files?in?/etc/cron.d.?These?files?also?have?username?fields,
#?that?none?of?the?other?crontabs?do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#?m?h?dom?mon?dow?user?command
17?*?*?*?*?root????cd?/?&&?run-parts?--report?/etc/cron.hourly
25?6?*?*?*?root?test?-x?/usr/sbin/anacron?||?(?cd?/?&&?run-parts?--report?/etc/cron.daily?)
47?6?*?*?7?root?test?-x?/usr/sbin/anacron?||?(?cd?/?&&?run-parts?--report?/etc/cron.weekly?)
52?6?1?*?*?root?test?-x?/usr/sbin/anacron?||?(?cd?/?&&?run-parts?--report?/etc/cron.monthly?)
#
*/1?*?*?*?*?root??/home/HouXinLin/test/dump.sh
dump.sh
#!/bin/bashmysqldump?-u?root?test?>/home/HouXinLin/test/testdb.sql
靜靜等待1分鐘后,在對應的目錄就會生成testdb.sql文件。
總結
以上是生活随笔為你收集整理的mysql的每隔1分钟定时_深入研究MySQL(四)、备份与恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 商品展示html,HTML5和C
- 下一篇: antd autoplay按f12才会轮