標(biāo)簽(空格分隔): mysql
1 導(dǎo)出數(shù)據(jù)庫(kù)
1.1 導(dǎo)出所有數(shù)據(jù)庫(kù)
mysqldump -uroot -p --all-databases > all.sql;
1.2 導(dǎo)出單個(gè)數(shù)據(jù)庫(kù)
mysqldump -uroot -p db1 > db1.sql;
1.3 導(dǎo)出多個(gè)數(shù)據(jù)庫(kù)
mysqldump -uroot -p --databases db1 db2 > db1-db2.sql
1.4 只備份表結(jié)構(gòu)
mysqldump -uroot -p --no-data db1 > db1.structure.sql;
2 導(dǎo)出表
導(dǎo)出指定表只能針對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行導(dǎo)出找筝,且導(dǎo)出的內(nèi)容中和導(dǎo)出數(shù)據(jù)庫(kù)也不一樣,導(dǎo)出指定表的導(dǎo)出文本中沒(méi)有創(chuàng)建數(shù)據(jù)庫(kù)的判斷語(yǔ)句合陵,只有刪除表-創(chuàng)建表-導(dǎo)入數(shù)據(jù)
2.1 導(dǎo)出單個(gè)表
mysqldump -uroot -p db1 tb1 > db1.tb1.sql;
2.2 導(dǎo)出多個(gè)個(gè)表
mysqldump -uroot -p --databases db1 --tables tb1 tb2 > db1.tb1-tb2.sql;
2.3 只備份表結(jié)構(gòu)
mysqldump -uroot -p --no-data db1 tb1 > db1.tb1.structure.sql;
3 恢復(fù)數(shù)據(jù)
shell> mysql db_name < db1.sql
或者
shell> mysql -e "source /path-to-backup/db1.sql" db_name
4 跨主機(jī)備份
mysqldump --host=host1 -uroot -ppwd1 sourceDb | mysql --host=host2 -uroot -ppwd2 -C targetDb
-C指示主機(jī)間的數(shù)據(jù)傳輸使用數(shù)據(jù)壓縮
5 定時(shí)備份
新建 shell 腳本
#vi /backup/backup.sh
#!bin/bash
cd /backup
mv backup* /oldbackup
echo "Old dbs are moved to oldbackup folder"
now=$(date +%Y-%m-%d-%H-%m)
file = "backup-$now.sql"
mysqldump -u user -p password database-name > $file
echo "Your database backup successfully completed"
上面腳本文件保存為backup.sh本冲,并且系統(tǒng)中已經(jīng)創(chuàng)建兩個(gè)目錄/olcbackup和/backup隐解。每次執(zhí)行backup.sh時(shí)都會(huì)先將/backup目錄下所有名稱(chēng)為backup開(kāi)頭的文件移到/oldbackup目錄起胰。
為上述腳本制定執(zhí)行計(jì)劃如下:
#crontab -e
30 1 * * * /backup.sh
6 條件備份
mysqldump -uroot -p --databases db1 --tables tb1 --where='id=1' >/tmp/db1.tb1.sql
7 導(dǎo)出存儲(chǔ)過(guò)程和自定義函數(shù)
mysqldump -uroot -p --host=localhost --all-databases --routines