邏輯備份: 1.mysqldump(數(shù)據(jù)導(dǎo)出工具) mysqldump options db_name[table_name]//備份單個數(shù)據(jù)庫 mysqldump 選項 --database database-name1 [databases-name2]....//備份指定的數(shù)據(jù)庫一個或者多個 mysqldump 選項 --all-database //備份所有的數(shù)據(jù)庫 鏈接選項: -u :指定用戶名 -p:指定密碼 -h:指定服務(wù)器ip或者域名 -P(大寫):指定端口 eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user>/home/wuxiaoxiao/user.txt 輸出內(nèi)容選項: --add-drop-database:每個數(shù)據(jù)庫創(chuàng)建語句之前加上drop database語句 --add-drop-table:每個表創(chuàng)建語句之前加上drop table語句 -n:不包含數(shù)據(jù)庫的創(chuàng)建語句 -t:不包含數(shù)據(jù)表的創(chuàng)建語句 -d:不包含數(shù)據(jù) 輸出格式選項: --compact:使輸出結(jié)果簡潔 -c --compact-insert:使輸出文件中的insert語句包含字段名 -T:將數(shù)據(jù)庫表中的數(shù)據(jù)備份為單純的數(shù)據(jù)文本和建表sql倆個文件 --fields-terminated-by=name(域分割符) --fields-enclosed-by=name(域引用符) --fields-optionally-enclosed-by=name(域可選引用符) --fields-escaped-by=name(轉(zhuǎn)移字符) eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user -T ./bak 字符集選項: --default-character-set=name:設(shè)置導(dǎo)出的客戶端字符集 eg:mysql -u root -p --compact --default-character-set=utf8 BBS user > test.txt 其他選項: -F:備份前刷新日志 -l:給所有表加讀鎖(備份期間使用,使備份的數(shù)據(jù)保持一致性) 備份: 備份所有數(shù)據(jù)庫: mysqldump -u root -p --all-database > test.sql 備份數(shù)據(jù)庫test mysqldump -u root -p test > test.sql 備份數(shù)據(jù)庫test下的temp表: mysqldump -u root -p test demp > test.sql 備份數(shù)據(jù)庫下的所有表為逗號分割的文本,備份到/temp mysqldump -u root -p test -T /temp --fields-terminated-by ',' 完全恢復(fù): msyql -u root -p < bakfile 注意:將備份恢復(fù)后數(shù)據(jù)并不完整,還需要將備份后執(zhí)行的日志進行重做 mysqlbinlog binlog-file | mysql -u root -p*** 舉個完整的mysqldump備份和恢復(fù)的例子: 上午9點備份數(shù)據(jù)庫 mysqldump -u root -p -l -F test > test.dmp 9點半備份完畢,然后想數(shù)據(jù)庫中插入數(shù)據(jù) 10點數(shù)據(jù)庫突然故障,數(shù)據(jù)無法訪問,需要恢復(fù)備份 mysql -u root -p test < test.dmp 恢復(fù)后的數(shù)據(jù)并不完整,9點半插入的數(shù)據(jù)并沒有恢復(fù) 使用mysqlbinlog恢復(fù)自mysqldump備份以來的binlog mysqlbinlog binlogfilename | mysql -u root -p test 基于時間點恢復(fù): 如果上午10點發(fā)生了誤操作.可以用下面語句進行備份和binlog將數(shù)據(jù)庫恢復(fù)到故障前: mysqlbinlog --stop-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test 跳過故障的時間點,繼續(xù)執(zhí)行后面的binlog,完成恢復(fù) mysqlbinlog --start-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test 基于位置恢復(fù): mysqlbinlog --start-date="2005-04-20 9:55:59" --stop-date="2005-04-20 10:05:00" binlogfile > test.sql 查看此文件,找出出錯語句前后的位置號,例如是368312,368315 mysqlbinlog --stop-position="368312" binlogfile | mysql -u root -p test mysqlbinlog --start-position="368315" binlogfile | mysql -u root -p test 表的導(dǎo)入和導(dǎo)出: 導(dǎo)出: mysqldump -u username -p -T target_dir dbname tablename [options] options: --fields-terminated-by=name(域分割符) --fields-enclosed-by=name(域引用符) --fields-optionally-enclosed-by=name(域可選引用符) --fields-escaped-by=name(轉(zhuǎn)移字符) 備份數(shù)據(jù)庫下的所有表為逗號分割的文本,備份到/temp mysqldump -u root -p -T /temp test --fields-terminated-by ',' --fields-optionally-enclosed-by '"' 導(dǎo)入: msyqlimport -u root -p [LOCAL] dbname order_tab.txt [options] OPTIONS: --fields-terminated-by=name(域分割符) --fields-enclosed-by=name(域引用符) --fields-optionally-enclosed-by=name(域可選引用符) --fields-escaped-by=name(轉(zhuǎn)移字符) eg:mysqlimport -u root -p test order.txt --fields-terminated-by=',' --fields-enclosed-by='"' |
|