一、導(dǎo)出數(shù)據(jù)庫(kù)用mysqldump命令
1.導(dǎo)出數(shù)據(jù)和表結(jié)構(gòu):
mysqldump -u用戶(hù)名 -p(密碼) 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)名.sql
mysqldump -uroot -p abc > abc.sql
2、只導(dǎo)出表結(jié)構(gòu)
mysqldump -u用戶(hù)名 -p(密碼) -d 數(shù)據(jù)庫(kù)名 > 數(shù)據(jù)庫(kù)名.sql
mysqldump -uroot -p -d abc > abc.sql
二、導(dǎo)入數(shù)據(jù)庫(kù)
1、首先建空數(shù)據(jù)庫(kù):create database abc;
2、導(dǎo)入數(shù)據(jù)庫(kù)
? ?方法一:
use abc;
set names utf8;
source /home/abc/abc.sql;
方法二:
mysql -u用戶(hù)名 -p 密碼 數(shù)據(jù)庫(kù)名 < 數(shù)據(jù)庫(kù)名.sql
mysql -uroot -p abc < abc.sql
2、備份多個(gè)數(shù)據(jù)庫(kù)
語(yǔ)法:
mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql
加上了--databases選項(xiàng),然后后面跟多個(gè)數(shù)據(jù)庫(kù)
mysqldump -u root -p --databases test mysql > D:\backup.sql
3、備份所有數(shù)據(jù)庫(kù)
mysqldump命令備份所有數(shù)據(jù)庫(kù)的語(yǔ)法如下:
mysqldump -u username -p -all-databases > BackupName.sql
示例:
mysqldump -u -root -p -all-databases > D:\all.sql
三、啟用二進(jìn)制日志
4、 啟用二進(jìn)制日志(binlog)
采用?binlog?的方法相對(duì)來(lái)說(shuō)更靈活,省心省力,而且還可以支持增量備份。
啟用?binlog?時(shí)必須要重啟?mysqld。首先,關(guān)閉?mysqld,打開(kāi)?my.cnf,加入以下幾行:
server-id = 1
log-bin = binlog
log-bin-index = binlog.index
然后啟動(dòng)?mysqld?就可以了。運(yùn)行過(guò)程中會(huì)產(chǎn)生?binlog.000001?以及?binlog.index,前面的文件是?mysqld?記錄所有對(duì)數(shù)據(jù)的更新操作,后面的文件則是所有?binlog?的索引,都不能輕易刪除。關(guān)于?binlog?的信息請(qǐng)查看手冊(cè)。
需要備份時(shí),可以先執(zhí)行一下 SQL 語(yǔ)句,讓?mysqld?終止對(duì)當(dāng)前?binlog?的寫(xiě)入,就可以把文件直接備份,這樣的話(huà)就能達(dá)到增量備份的目的了:
FLUSH LOGS;
如果是備份復(fù)制系統(tǒng)中的從服務(wù)器,還應(yīng)該備份?master.info?和?relay-log.info?文件。
備份出來(lái)的?binlog?文件可以用 MySQL 提供的工具?mysqlbinlog?來(lái)查看,如:
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001
該工具允許你顯示指定的數(shù)據(jù)庫(kù)下的所有 SQL 語(yǔ)句,并且還可以限定時(shí)間范圍,相當(dāng)?shù)姆奖?,詳?xì)的請(qǐng)查看手冊(cè)。
恢復(fù)時(shí),可以采用類(lèi)似以下語(yǔ)句來(lái)做到:
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name
把?mysqlbinlog?輸出的 SQL 語(yǔ)句直接作為輸入來(lái)執(zhí)行它。
如果你有空閑的機(jī)器,不妨采用這種方式來(lái)備份。由于作為?slave?的機(jī)器性能要求相對(duì)不是那么高,因此成本低,用低成本就能實(shí)現(xiàn)增量備份而且還能分擔(dān)一部分?jǐn)?shù)據(jù)查詢(xún)壓力,何樂(lè)而不為呢?
mysqlbinlog恢復(fù)數(shù)據(jù)
mysqlbinlog mysql-bin.000006 > 1.sql
查看1.txt里面數(shù)據(jù)插入的紀(jì)錄,把刪除之前的數(shù)據(jù)進(jìn)行恢復(fù)
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登錄,查看數(shù)據(jù),OK,已經(jīng)成功恢復(fù)了
/usr/bin/mysqlbinlog binlog.000001 --start-position=1075 --stop-position=1194 | mysql -u root -p mysql
把?mysqlbinlog?輸出的 SQL 語(yǔ)句直接作為輸入來(lái)執(zhí)行它。
如果你有空閑的機(jī)器,不妨采用這種方式來(lái)備份。由于作為?slave?的機(jī)器性能要求相對(duì)不是那么高,因此成本低,用低成本就能實(shí)現(xiàn)增量備份而且還能分擔(dān)一部分?jǐn)?shù)據(jù)查詢(xún)壓力,何樂(lè)而不為呢?