一蚓峦、導(dǎo)出數(shù)據(jù)庫用mysqldump命令
1.導(dǎo)出數(shù)據(jù)和表結(jié)構(gòu):
mysqldump -u用戶名 -p(密碼) 數(shù)據(jù)庫名 > 數(shù)據(jù)庫名.sql
mysqldump -uroot -p abc > abc.sql
2棉安、只導(dǎo)出表結(jié)構(gòu)
mysqldump -u用戶名 -p(密碼) -d 數(shù)據(jù)庫名 > 數(shù)據(jù)庫名.sql
mysqldump -uroot -p -d abc > abc.sql
二攻晒、導(dǎo)入數(shù)據(jù)庫
1、首先建空數(shù)據(jù)庫:create database abc;
2、導(dǎo)入數(shù)據(jù)庫
? ?方法一:
use abc;
set names utf8;
source /home/abc/abc.sql;
方法二:
mysql -u用戶名 -p 密碼 數(shù)據(jù)庫名 < 數(shù)據(jù)庫名.sql
mysql -uroot -p abc < abc.sql
2枫绅、備份多個(gè)數(shù)據(jù)庫
語法:
mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql
加上了--databases選項(xiàng)泉孩,然后后面跟多個(gè)數(shù)據(jù)庫
mysqldump -u root -p --databases test mysql > D:\backup.sql
3、備份所有數(shù)據(jù)庫
mysqldump命令備份所有數(shù)據(jù)庫的語法如下:
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ì)來說更靈活,省心省力县耽,而且還可以支持增量備份句喷。
啟用?binlog?時(shí)必須要重啟?mysqld。首先兔毙,關(guān)閉?mysqld唾琼,打開?my.cnf,加入以下幾行:
server-id = 1
log-bin = binlog
log-bin-index = binlog.index
然后啟動(dòng)?mysqld?就可以了澎剥。運(yùn)行過程中會(huì)產(chǎn)生?binlog.000001?以及?binlog.index锡溯,前面的文件是?mysqld?記錄所有對(duì)數(shù)據(jù)的更新操作,后面的文件則是所有?binlog?的索引肴裙,都不能輕易刪除趾唱。關(guān)于?binlog?的信息請(qǐng)查看手冊(cè)。
需要備份時(shí)蜻懦,可以先執(zhí)行一下 SQL 語句甜癞,讓?mysqld?終止對(duì)當(dāng)前?binlog?的寫入,就可以把文件直接備份宛乃,這樣的話就能達(dá)到增量備份的目的了:
FLUSH LOGS;
如果是備份復(fù)制系統(tǒng)中的從服務(wù)器悠咱,還應(yīng)該備份?master.info?和?relay-log.info?文件。
備份出來的?binlog?文件可以用 MySQL 提供的工具?mysqlbinlog?來查看征炼,如:
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001
該工具允許你顯示指定的數(shù)據(jù)庫下的所有 SQL 語句析既,并且還可以限定時(shí)間范圍,相當(dāng)?shù)姆奖阕话拢敿?xì)的請(qǐng)查看手冊(cè)眼坏。
恢復(fù)時(shí),可以采用類似以下語句來做到:
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name
把?mysqlbinlog?輸出的 SQL 語句直接作為輸入來執(zhí)行它酸些。
如果你有空閑的機(jī)器宰译,不妨采用這種方式來備份。由于作為?slave?的機(jī)器性能要求相對(duì)不是那么高魄懂,因此成本低沿侈,用低成本就能實(shí)現(xiàn)增量備份而且還能分擔(dān)一部分?jǐn)?shù)據(jù)查詢壓力,何樂而不為呢市栗?
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 語句直接作為輸入來執(zhí)行它咙好。
如果你有空閑的機(jī)器,不妨采用這種方式來備份铣鹏。由于作為?slave?的機(jī)器性能要求相對(duì)不是那么高敷扫,因此成本低,用低成本就能實(shí)現(xiàn)增量備份而且還能分擔(dān)一部分?jǐn)?shù)據(jù)查詢壓力诚卸,何樂而不為呢葵第?