資料庫備份

2021-09-02 05:00:19 字數 3130 閱讀 5015

邏輯備份,通過select語句,將要備份的所有資料選出來, 產生一組能夠被執行以再現原始資料庫物件定義和表資料的sql語句。

-a 倒出全部資料庫

-b test1 test2 倒出指定的資料庫

-t emp_range 倒出指定資料庫(test)中的制定表(emp_range)

-d 匯出表結構

-uroot -p -s /tmp/mysql3306.sock -p表示手動輸入密碼

–add-drop-database 新增drop databasw的作用是如果會的資料庫已存在,則drop已存在的資料庫後再恢復

–add-drop-table(預設on) 在資料表建立之前新增drop table語句,預設為開啟狀態。新增drop table的作用是如果恢復的**已存在,則drop已存在的**之後,再恢復.

–skip-add-drop-table(database) 若要跳過drop table或drop database 可以加選項

–single-transaction 可以實現不加鎖一致性備份,在備份的時候,備份的鏈結會顯示的開啟rr模式,

–hex-blob 備份二進位制的字段的時候,需要新增 blob

–ignore-table=name 跳過指定的表不備份

-x lock-all-tables

-l, lock all tables for read.

–master-data

新增change master到備份檔案內部 binlog-file binlog-pos

head -n 35 /tmp/all.sql

1 新增change master語句

2 #change master帶注釋

eg mysqldump -s /tmp/mysql.sock --master-data=2 --single-transaction -b test1 > /tmp/all.sql

–set-gtid-purged 預設開啟

–set-gtid-purged =off 如果只是單純備份的話,不是做主從目的備份,可以關閉.

xtrabackup的檔案拷貝,都是備份程序直接通過作業系統讀取資料檔案的,只在執行 sql 命令時與資料庫有互動,基本不影響資料庫的執行,在備份非 innodb 時會有一段時間唯讀(如果沒有myisam表的話,唯讀時間在幾秒左右),在備份 innodb 資料檔案時,對資料庫完全沒有影響,是真正的熱備。

innodb 和非 innodb 檔案的備份都是通過拷貝檔案來做的,但是實現的方式不同,前者是以page為粒度做的(xtrabackup),後者是 cp 或者 tar 命令(innobackupex),xtrabackup 在讀取每個page時會校驗 checksum 值,保證資料塊是一致的,而 innobackupex 在 cp myisam 檔案時已經做了flush(ftwrl讀鎖),磁碟上的檔案也是完整的,所以最終備份集裡的資料檔案都是寫入完整的。

extrabackup支援增量備份的,但是只能對 innodb 做增量,innodb 每個 page 有個 lsn 號,lsn 是全域性遞增的,page 被更改時會記錄當前的 lsn 號,page中的 lsn 越大,說明當前page越新(最近被更新)。每次備份會記錄當前備份到的lsn(xtrabackup_checkpoints 檔案中),增量備份就是只拷貝lsn大於上次備份的page,比上次備份小的跳過,每個 ibd 檔案最終備份出來的是增量 delta 檔案。myisam 是沒有增量的機制的,每次增量備份都是全部拷貝的。增量備份過程和全量備份一樣,只是在 ibd 檔案拷貝上有不同。

恢復的目的是把備份集中的資料恢復到乙個一致性位點,所謂一致就是指原資料庫某一時間點各引擎資料的狀態,比如 myisam 中的資料對應的是 15:00 時間點的,innodb 中的資料對應的是 15:20 的,這種狀態的資料就是不一致的。pxb 備份集對應的一致點,就是備份時ftwrl的時間點,恢復出來的資料,就對應原資料庫ftwrl時的狀態。

因為備份時 ftwrl 後,資料庫是處於唯讀的,非 innodb 資料是在持有全域性讀鎖情況下拷貝的,所以非 innodb 資料本身就對應 ftwrl 時間點;innodb 的 ibd 檔案拷貝是在 ftwrl 前做的,拷貝出來的不同 ibd 檔案最後更新時間點是不一樣的,這種狀態的 ibd 檔案是不能直接用的,但是 redo log 是從備份開始一直持續拷貝的,最後的 redo 日誌點是在持有 ftwrl 後取得的,所以最終通過 redo 應用後的 ibd 資料時間點也是和 ftwrl 一致的。恢復過程只涉及 innodb 檔案的恢復,非 innodb 資料是不動的。備份恢復完成後,就可以把資料檔案拷貝到對應的目錄,然後通過mysqld來啟動了。

innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user=pxb --password=123456  --socket=/tmp/mysql.sock    /data/xtrabackup/all-20180723.bak

首先全域性備份

innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user root --socket /tmp/mysql.sock  /data/xtrabackup/all-20180720.bak
第一次增量備份

innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user root --socket /tmp/mysql.sock --incremental --incremental-basedir=/data/xtrabackup/all-20180720.bak /data/xtrabackup/inc-20180721.bak
第二次增量備份

innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user root --socket /tmp/mysql.sock  --incremental --incremental-basedir=/data/xtrabackup/inc-20180721.bak /data/xtrabackup/inc-20180722.bak
先將三次備份僅適用redo log進行還原,最後在使用undo進行回滾,因為會有部分redo尚未落盤,無法用於恢復

資料庫備份

匯出方案 匯出自己的方案exp scott tiger oracle owner scott file d scott.dmp 成功匯入方案 imp userid retest retest oracle file e rem.dmp full y 匯出表 兩百萬資料 exp userid scot...

資料庫備份

備份 使用 isql usa p ssybase 命令連線至資料庫,依次備份早教系統edu cfg和edu stat兩個使用者資料庫。前提條件是backup server服務要啟動 dump database edu cfg to home sybase edu cfg jiangsu 201405...

資料庫備份

sqlserver 作業 新建作業 1.常規中,填寫名字及說明 2.步驟中新建步驟,填寫步驟名稱,選擇型別 transact sql指令碼 t sql 填寫命令,內容如下 declare name varchar 250 set name d bakdb 備份檔案名稱 convert varchar...