MySQL常用的備份命令
成都創(chuàng)新互聯(lián)專(zhuān)注于三山企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城網(wǎng)站定制開(kāi)發(fā)。三山網(wǎng)站建設(shè)公司,為三山等地區(qū)提供建站服務(wù)。全流程定制開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
mysqldump備份常用方法:
1.導(dǎo)出一個(gè)數(shù)據(jù)庫(kù)
mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫(kù)名 > 導(dǎo)出的文件名
例如
# mysqldump -hhostname -uroot -ppwd dataname >dataname.sql
2.備份服務(wù)器上所有數(shù)據(jù)庫(kù)
例如
# mysqldump --all-databases > allbackupfile.sql
3.備份一個(gè)表
mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫(kù)名 表名> 導(dǎo)出的文件名
例如:
# mysqldump -hhostname -uroot -ppwd dataname specific_tabname1 specific_tabname2> dataname_specific_tabname.sql
4.導(dǎo)出一個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)
例如
# mysqldump -hhostname -uroot -ppwd -–add-drop-table --no-data dataname > dataname_nodata.sql
--no-data:沒(méi)有數(shù)據(jù)
–-add-drop-table 在每個(gè)create語(yǔ)句之前增加一個(gè)drop table命令
5.直接將MySQL數(shù)據(jù)庫(kù)壓縮備份
例如
# mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
6.同時(shí)備份多個(gè)MySQL數(shù)據(jù)庫(kù)
例如
mysqldump -hhostname -uusername -ppwd --databases dbname1 dbname2 dbname3 > multibackupfile.sql
7.對(duì)于支持事務(wù)級(jí)的存儲(chǔ)引擎,為了保證數(shù)據(jù)一致性可以采用選項(xiàng)“--single-transaction”
例如
# mysqldump -hlocalhost -uroot -p backup --single-transaction > /tmp/backup3.sql
8.導(dǎo)出特定格式的純文本文件(生成兩個(gè).sql和txt兩個(gè)文件)
例如:
mysqldump -root -p -T /tmp dbname tablename --fields-enclosed-by=\" --fields-terminated-by=,
--fields-enclosed-by:將字段的內(nèi)容包裝起來(lái)的符號(hào)
--fields-terminated-by:兩個(gè)字段的分隔符
如果一次dump多個(gè)表的話,每個(gè)表都會(huì)有sql和txt兩個(gè)文件;這種特定格式比較適合備份
生成特定格式除了mysqldump外,還可以使用如下語(yǔ)句:
> select ... into outfile from ...
例如:
mysql> select * into outfile '/tmp/t2.txt1'
-> fields terminated by ','
-> optionally enclosed by '"'
-> lines terminated by '\n'
-> from t2 limit 10;
optionally enclosed by:可以將字段的內(nèi)容“包裝”起來(lái)的,如果不使用“OPTIONALLY”則包括數(shù)字類(lèi)型的所有類(lèi)型數(shù)據(jù)都會(huì)被“包裝”,使用“OPTIONALLY”之后,則數(shù)字類(lèi)型的數(shù)據(jù)不會(huì)被指 定字符“包裝”。
lines terminated by:每條記錄結(jié)束的時(shí)候需要添加什么字符
fields terminated by:設(shè)定每?jī)蓚€(gè)字段之間的分隔符
mysqldump的邏輯備份恢復(fù)方法
1.如果是insert的語(yǔ)句,直接運(yùn)行該腳本即可
方法一
# mysql -hlocalhost -uroot -p backup < /tmp/t2.sql
當(dāng)還原表時(shí),一定要指明把表還原到哪個(gè)數(shù)據(jù)庫(kù),這里是backup庫(kù)
方法二
在mysql里用source運(yùn)行腳本
mysql> source /tmp/t2.sql
2. 如果備份是以特殊分隔符分隔的純數(shù)據(jù)文本文件
方法一
把/tmp/t2.txt還原到庫(kù)backup
# mysqlimport -uroot -p backup --fields-enclosed-by=\" --fields-terminated-by=, /tmp/t2.txt
方法二
mysql> load data infile '/tmp/t2.txt' into table t2 fields terminated by '"' enclosed by ',';
mysqlhotcopy的備份方法
mysqlhotcopy 是一個(gè)用perl 編寫(xiě)的使用程序,其主要實(shí)現(xiàn)原理實(shí)際上就是通過(guò)先LOCK
住表,然后執(zhí)行FLUSH TABLES 動(dòng)作,該正常關(guān)閉的表正常關(guān)閉,將該fsync 的數(shù)據(jù)都fsync,
然后通過(guò)執(zhí)行OS 級(jí)別的復(fù)制(cp 等)命令,將需要備份的表或者數(shù)據(jù)庫(kù)的所有物理文件都
復(fù)制到指定的備份集位置。
mysqlhotcopy db_name[./table_regex/] [new_db_name | directory]
例如:
復(fù)制數(shù)據(jù)庫(kù)
mysqlhotcopy backup backup4
備份整庫(kù)
mysqlhotcopy backup /tmp/
備份庫(kù)的部分表
mysqlhotcopy --allowold backup./t*/ /tmp/
mysqlhotcopy的恢復(fù)方法
mysqlhotcopy 備份出來(lái)的是整個(gè)數(shù)據(jù)庫(kù)目錄,使用時(shí)可以直接拷貝到 mysqld 指定的 datadir目錄下即可,
同時(shí)要注意權(quán)限的問(wèn)題,(將 db_name 目錄的屬主改成 mysqld 運(yùn)行用戶)。此命令只能恢復(fù)數(shù)據(jù)庫(kù)到最后
一次備份時(shí)的狀態(tài)。
mysql的不同場(chǎng)景備份策略
備份策略一:
直接拷貝數(shù)據(jù)庫(kù)文件(不推薦),也稱(chēng)為冷物理備份,即要停止mysql數(shù)據(jù)庫(kù),然后copy物理文件,
速度非??欤謴?fù)也非常方便和快捷,直接把備份文件原樣copy回來(lái)即可,但沒(méi)有應(yīng)用允許停庫(kù)備份的。
這里不存在數(shù)據(jù)一致性的問(wèn)題,庫(kù)都停了,當(dāng)然可以保證一致性了;如果不停庫(kù)的話,那就要鎖住所有
的表以保證數(shù)據(jù)的一致性
FLUSH TABLES WITH READ LOCK;
這個(gè)sql是把內(nèi)存中的數(shù)據(jù)都刷新到磁盤(pán)中,同時(shí)鎖定數(shù)據(jù)表,以保證拷貝過(guò)程中不會(huì)有新的數(shù)據(jù)寫(xiě)入。
恢復(fù):此方案的數(shù)據(jù)恢復(fù)也很簡(jiǎn)單,直接拷貝回原來(lái)的數(shù)據(jù)庫(kù)目錄下即可
備份策略二:
使用mysqlhotcopy備份數(shù)據(jù)庫(kù)(完全備份,適合小型數(shù)據(jù)庫(kù)備份),這種情況對(duì)于數(shù)據(jù)一致性要求非常嚴(yán)的
系統(tǒng)來(lái)對(duì),就是一個(gè)無(wú)效的備份,因?yàn)闆](méi)辦法滿足數(shù)據(jù)的一致完整性約束。它是備份數(shù)據(jù)庫(kù)或單個(gè)表的最
快的途徑,但它只能運(yùn)行在數(shù)據(jù)庫(kù)文件(包括數(shù)據(jù)表定義文件、數(shù)據(jù)文件、索引文件)所在的機(jī)器上,并
且mysqlhotcopy 只能用于備份 MyISAM表。
恢復(fù):此方案的數(shù)據(jù)恢復(fù)也很簡(jiǎn)單,直接拷貝回原來(lái)的數(shù)據(jù)庫(kù)目錄下即可
備份策略三:
使用mysqldump備份數(shù)據(jù)庫(kù)(完全+增量備份,適合中型數(shù)據(jù)庫(kù)備份),mysqldump 是采用SQL
級(jí)別的備份機(jī)制,它將數(shù)據(jù)表導(dǎo)成 SQL 腳本文件,在不同的 MySQL版本之間升級(jí)時(shí)相對(duì)
比較合適,這也是最常用的備份方法。mysqldump 比直接拷貝要慢些。對(duì)數(shù)據(jù)要求一致性非常嚴(yán)的
也很難保證,只能通過(guò)增量備份保證(適用任何引擎)
恢復(fù):此方案的恢復(fù)分為兩步:
1.先恢復(fù)完全備份文件,使用類(lèi)似如下命令:
mysql -hlocalhost -uroot -p backup < /tmp/t2.sql
2.恢復(fù)增量備份文件,按logbin的時(shí)間先后順序執(zhí)行
# ls -tr1 HOSTNAME-bin* | xargs mysqlbinlog | mysql -uUser -pUserPWD
備份策略四:
使用主從復(fù)制機(jī)制(replication)(實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)時(shí)備份,適合中大型數(shù)據(jù)庫(kù)),為了不影響線上業(yè)務(wù),
實(shí)現(xiàn)在線備份,并且能增量備份,最好的辦法就是采用主從復(fù)制機(jī)制(replication),在 slave 機(jī)器
上做備份。
網(wǎng)頁(yè)名稱(chēng):mysql常用的備份命令與備份策略
本文來(lái)源:http://muchs.cn/article4/gdesoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站建設(shè)、微信公眾號(hào)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)