Mysql 備份與恢復

2021-08-31 05:51:28 字數 3492 閱讀 5168

邏輯備份:

1.mysqldump(資料匯出工具)

mysqldump options db_name[table_name]//備份單個資料庫

mysqldump 選項 --database database-name1 [databases-name2]....//備份指定的資料庫乙個或者多個

mysqldump 選項 --all-database //備份所有的資料庫

鏈結選項:

-u :指定使用者名稱

-p:指定密碼

-h:指定伺服器ip或者網域名稱

-p(大寫):指定埠

eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -p 3306 -p bbs user>/home/wuxiaoxiao/user.txt

輸出內容選項:

--add-drop-database:每個資料庫建立語句之前加上drop database語句

--add-drop-table:每個表建立語句之前加上drop table語句

-n:不包含資料庫的建立語句

-t:不包含資料表的建立語句

-d:不包含資料

輸出格式選項:

--compact:使輸出結果簡潔

-c --compact-insert:使輸出檔案中的insert語句包含欄位名

-t:將資料庫表中的資料備份為單純的資料文字和建表sql倆個檔案

--fields-terminated-by=name(域分割符)

--fields-enclosed-by=name(域引用符)

--fields-optionally-enclosed-by=name(域可選引用符)

--fields-escaped-by=name(轉移字元)

eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -p 3306 -p bbs user -t ./bak

字符集選項:

--default-character-set=name:設定匯出的客戶端字符集

eg:mysql -u root -p --compact --default-character-set=utf8 bbs user > test.txt

其他選項:

-f:備份前重新整理日誌

-l:給所有表加讀鎖(備份期間使用,使備份的資料保持一致性)

備份:備份所有資料庫:

mysqldump -u root -p --all-database > test.sql

備份資料庫test

mysqldump -u root -p test > test.sql

備份資料庫test下的temp表:

mysqldump -u root -p test demp > test.sql

備份資料庫下的所有表為逗號分割的文字,備份到/temp

mysqldump -u root -p test -t /temp --fields-terminated-by ','

完全恢復:

msyql -u root -p < bakfile

注意:將備份恢復後資料並不完整,還需要將備份後執行的日誌進行重做

mysqlbinlog binlog-file | mysql -u root -p***

舉個完整的mysqldump備份和恢復的例子:

上午9點備份資料庫

mysqldump -u root -p -l -f test > test.dmp

9點半備份完畢,然後想資料庫中插入資料

10點資料庫突然故障,資料無法訪問,需要恢復備份

mysql -u root -p test < test.dmp

恢復後的資料並不完整,9點半插入的資料並沒有恢復

使用mysqlbinlog恢復自mysqldump備份以來的binlog

mysqlbinlog binlogfilename | mysql -u root -p test

基於時間點恢復:

如果上午10點發生了誤操作.可以用下面語句進行備份和binlog將資料庫恢復到故障前:

mysqlbinlog --stop-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test

跳過故障的時間點,繼續執行後面的binlog,完成恢復

mysqlbinlog --start-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test

基於位置恢復:

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

表的匯入和匯出:

匯出: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(轉移字元)

備份資料庫下的所有表為逗號分割的文字,備份到/temp

mysqldump -u root -p -t /temp test --fields-terminated-by ',' --fields-optionally-enclosed-by '"'

匯入: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(轉移字元)

eg:mysqlimport -u root -p test order.txt --fields-terminated-by=',' --fields-enclosed-by='"'

我使用的兩個命令:

備份儲存過程:mysqldump -uroot -p -t -d -r wbgj > d:/wbgj_proc.sql

備份表和資料:mysqldump -uroot -p -b wbgj > d:/wbgj.sql

mysql 備份與恢復 MySQL 備份與恢復

1 檢視資料庫的資料儲存在哪個目錄下 shiyanlou mysql uroot e show variables like datadir variable name value datadir var lib mysql 2 備份資料的方法 select into outfile 檔名 或者 s...

mysql 備份與恢復 Mysql 備份與恢復

資料檔案一致性處理 在完全備份的情況下,檔案不是時間點一致的,因為進行快照的時間點不一樣。如果嘗 試在未prepare資料的情況下還原資料庫,雖然操作上支援恢復,但是在啟動的時候仍會 進行資料recovery。執行帶 prepare 選項的 mariabackup 命令會使資料檔案進行統一,達到資料...

mysql備份恢復 mysql之備份與恢復

工作中,我們經常會遇到資料庫的備份與恢復場景 目錄1 mysql的備份與恢復 2 mysql的匯入與匯出 1 mysql的備份與恢復 mysql的備份命令是mysqldump,mysql之備份 mysqldump u user h host port p db table.file u 後面接資料庫...