mysql的每隔1分钟定时_深入研究MySQL(四)、备份与恢复
一、前言
知道備份的重要性嗎?沒經(jīng)歷過的可能永遠(yuǎn)不知道,我們在重裝系統(tǒng)、手機(jī)升級(jí)等時(shí)候,備份一下必要數(shù)據(jù)總是有好處的,指不定哪個(gè)神操作導(dǎo)致磁盤數(shù)據(jù)丟失,前些日子刪庫跑路被判刑的那位老哥,如果公司有備份的話,也不至于損失幾個(gè)億(聽說是讓綠了),所以本章來學(xué)習(xí)一下MySQL的備份與恢復(fù),如果要定期備份的話,可以寫個(gè)腳本定時(shí)執(zhí)行,省去人來完成這重復(fù)的工作。
我們可以使用以下任何一種方法來生成MySQL數(shù)據(jù)庫的備份:
在本文中,會(huì)解釋如何使用mysqldump生成MySQL數(shù)據(jù)庫的備份。
二、使用mysqldump程序生成備份
Mysqldump是一個(gè)命令行程序,用于生成MySQL數(shù)據(jù)庫的備份。他生成的文件可以用于重新創(chuàng)建數(shù)據(jù)庫對象和數(shù)據(jù)的SQL語句。
mysqldump?-u?[用戶名]?–p?[密碼]?[選項(xiàng)]?[數(shù)據(jù)庫名]?[表名]>?[dumpfilename.sql]參數(shù)如下:
-u [用戶名]:連接到MySQL服務(wù)器的用戶名。-p [密碼]:MySQL用戶的密碼
[option]:用于自定義備份的配置選項(xiàng)
[數(shù)據(jù)庫名稱]:要備份的數(shù)據(jù)庫的名稱
[表名]:這是一個(gè)可選參數(shù)。如果要獲取備份特定表,則可以在命令中指定名稱
[dumpfilename.sql]:備份文件的路徑和名稱。
1.生成單個(gè)數(shù)據(jù)庫的備份
要生成單個(gè)數(shù)據(jù)庫的備份,可以運(yùn)行以下命令,這個(gè)命令將test數(shù)據(jù)庫中的表結(jié)構(gòu)和數(shù)據(jù)都保存到testdb.sql文件中。
mysqldump?-u?root?-p?test?>/home/HouXinLin/test/testdb.sql運(yùn)行此命令時(shí),會(huì)提示您輸入密碼,輸入密碼后,將在對應(yīng)路徑生成sql文件,內(nèi)容如下。
2.生成多個(gè)數(shù)據(jù)庫或所有數(shù)據(jù)庫的備份
如果要生成多個(gè)數(shù)據(jù)庫的備份,必須在mysqldump命令中添加--databases選項(xiàng),以下命令將生成具有結(jié)構(gòu)和數(shù)據(jù)的"test"和"db_score"數(shù)據(jù)庫的備份。
mysqldump?-u?root?-p?--databases?test?db_score?test?>/home/HouXinLin/test/test_tbscoredb.sql要生成整個(gè)數(shù)據(jù)庫的備份,則需要加--all-databases選項(xiàng)。
mysqldump?-u?root?-p?--all-databases??>/home/HouXinLin/test/test_tbscoredb.sql3.生成數(shù)據(jù)庫結(jié)構(gòu)的備份
如果僅要生成數(shù)據(jù)庫結(jié)構(gòu)的備份,則必須在mysqldump命令中加入–no-data選項(xiàng),以下命令用于生成test數(shù)據(jù)庫的數(shù)據(jù)庫結(jié)構(gòu)的備份。
mysqldump?-u?root?-p?--no-data?test?>/home/HouXinLin/test/testdb.sql4.生成特定表的備份
如果僅要生成數(shù)據(jù)庫中某個(gè)表的備份,則必須在mysqldump命令中指明表名稱,以下命令用于生成test數(shù)據(jù)庫中tb_books表的結(jié)構(gòu)和數(shù)據(jù)備份。
mysqldump?-u?root?-p??test?tb_books?>/home/HouXinLin/test/testdb.sql5.僅生成數(shù)據(jù)庫數(shù)據(jù)備份
如果要生成僅數(shù)據(jù)庫數(shù)據(jù)的備份(沒有創(chuàng)建表的語句),則必須在mysqldump命令中加入–no-create-info 選項(xiàng)。以下命令生成test數(shù)據(jù)庫的數(shù)據(jù)備份。
mysqldump?-u?root?-p???--no-create-info?test?>/home/HouXinLin/test/testdb.sql生成的sql中,可以看到他只有insert語句,在插入的時(shí)候,還進(jìn)行了鎖表。
三、恢復(fù)數(shù)據(jù)
恢復(fù)的話比較簡單,通過source程序傳入sql文件即可,以下是完整的備份、刪庫,恢復(fù)命令。
##?備份mysqldump?-u?root?-p?test?>/home/HouXinLin/test/testdb.sql
##?刪除test數(shù)據(jù)庫
drop?database?test;
##?創(chuàng)建數(shù)據(jù)庫
create?database?test;
##?選擇數(shù)據(jù)庫
use?test;
##?恢復(fù)
source?/home/HouXinLin/test/testdb.sql
四、免密碼導(dǎo)出
從上面可以發(fā)現(xiàn)在使用mysqldump的時(shí)候每次都需要輸入密碼,當(dāng)然這是可以避免的
touch?~/.my.cnfvim??~/.my.cnf?
然后編輯其內(nèi)容(編輯完不需要重啟),最后在使用mysqldump中一定要取消-p參數(shù)。
[mysqldump]user=root
password=xxxxx
其實(shí)對于這類更改方式,在我心中必須要看到某個(gè)文件對這個(gè)軟件有什么影響的官方文章說明,才會(huì)安心,即使知道他確實(shí)會(huì)對軟件有影響,在沒看到官方對這個(gè)解釋前,心中的這石頭總是放不下的,所以,我在官網(wǎng)中找到了對一些文件的解釋。
| /etc/my.cnf | 全局選項(xiàng) |
| /etc/mysql/my.cnf | 全局選項(xiàng) |
| SYSCONFDIR/my.cnf | 全局選項(xiàng) |
| $MYSQL_HOME/my.cnf | 服務(wù)器特定的選項(xiàng)(僅服務(wù)器) |
| ~/.my.cnf | 用戶特定的選項(xiàng) |
| ~/.mylogin.cnf | 用戶特定的登錄路徑 |
| DATADIR/mysqld-auto.cnf | 系統(tǒng)變量使用 SET PERSIST或 SE PERSIST_ONLY保留(僅服務(wù)器) |
SYSCONFDIR表示在構(gòu)建MySQL時(shí)SYSCONFDIR 使用CMake選項(xiàng)指定的目錄。
MYSQL_HOME是一個(gè)環(huán)境變量,其中包含服務(wù)器特定my.cnf文件所在目錄的路徑。
DATADIR表示MySQL數(shù)據(jù)目錄。用于查找 mysqld-auto.cnf,其默認(rèn)值是編譯MySQL時(shí)內(nèi)置的數(shù)據(jù)目錄位置,但是可以通過--datadir 指定為在處理之前mysqld-auto.cnf處理的選項(xiàng)文件或命令行選項(xiàng)來更改。
五、定時(shí)備份
Linux自帶一個(gè)定時(shí)任務(wù)系統(tǒng),可以通過crontab -e進(jìn)行添加,也可以修改/etc/crontab文件,另外這個(gè)服務(wù)的最低偵是分鐘,也就是無法做到每隔x秒后去執(zhí)行任務(wù),這個(gè)服務(wù)會(huì)每分鐘去讀取一次 /etc/crontab 和 /var/spool/cron 里面的數(shù)據(jù),在編輯/etc/crontab文件后,只需靜靜等待即可,下面以/etc/crontab為例子,在文件最后加入每隔1秒執(zhí)行一次腳本,這需要對cron表達(dá)式有所了解。
#?/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分鐘后,在對應(yīng)的目錄就會(huì)生成testdb.sql文件。
總結(jié)
以上是生活随笔為你收集整理的mysql的每隔1分钟定时_深入研究MySQL(四)、备份与恢复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 商品展示html,HTML5和C
- 下一篇: ado.net mysql 事务_ADO