Mysql備份恢復 mysqldump

2021-08-10 16:49:11 字數 3349 閱讀 8213

mysqldump是mysql服務自帶的備份工具;邏輯備份工具,可以完成完全、部分備份;對於不同的引擎,也有著不同的方案

innodb:熱備;

myisam:溫備;

其生成備份檔案的命令如下

mysqldump是客戶端工具,支援連線到遠端客戶端進行備份

mysqldump [options] database [tables] # 備份單庫,可以只備份其中的一部分表(部分備份)

ormysqldump [options] --databases [options] db1 [db2 db3...] #

備份多庫;單庫也推薦使用,省去建立資料庫步驟

ormysqldump [options] --all-databases [options] # 備份所有庫

myisam儲存引擎:支援溫備,

備份時要鎖定表;

-x, --lock-all-tables:鎖定所有庫的所有表,讀鎖;# 所有庫備份時使用

-l, --lock-tables:鎖定指定庫所有表;# 單庫備份時使用

innodb儲存引擎:支援溫備和熱備;

--single-transaction:建立乙個事務,基於此快照執行備份;

其它選項:

-r, --routines:備份指定庫的

儲存過程和儲存函式;

--triggers:備份指定庫的

觸發器;

-e, --events:備份指定庫的

事件排程器

事先準備的簡單資料庫和資料表

mariadb> select * from student;

+---+--------+------+----------+

| id | name | age | gender

+---+--------+------+----------+

| 1 | zhao | 15 | m |

| 2 | yang | 16 | f |

+---+--------+-------+---------+

編輯mariadb的配置檔案,開啟二進位制日誌記錄功能

[root@centos7 ~]$vim /etc/my.cnf.d/server.cnf

log-bin=mater-log

重啟服務,配置生效,因為填寫的是相對路徑,所以到預設的目錄下檢視生成檔案

[root@centos7 ~]$systemctl restart mariadb

[root@centos7 ~]$ls /var/lib/mysql/

aria

_log.00000001ib_

logfile0

master-log.000002

mysql

test

aria_log_

control

ib_logfile1master-log.000003

mysql.sock

bdata1 master-log.000001master-log.indexperformance_schema

溫備資料庫

[root@centos7 ~]$mkdir /backup

[root@centos7 ~]

mysqldump -x -r -e --triggers --all-databases --master-data=2 --flush-logs >/backup/fullbackup-$(date "+%f-%t").sql

[root@centos7 ~]vim /backup/fullbackup-2017-11-12-14:27:42.sql #

檢視生成的備份檔案

-- change master to master

_log_

file='master-log.000006', master

_log_

pos=245;

#此位置指明了自備份後二進位制日誌記錄的開始位置

mysqldump

只支援全量備份

,備份後繼續對資料庫進行修改,那麼備份後到下一次備份之間的段真空期,就用到了之前開啟的二進位制日誌記錄功能,二進位制檔案進行重放可以幫助我們修復此段時間內的資料庫操作,從而完成修復

mariadb>insert into student (name,age,gender)values('wei','14','f');

insert into student (name,age,gender)values('wei','14','f')

檢視一下二進位制日誌檔案是否正常記錄

[root@centos7 ~]$mysqlbinlog /var/lib/mysql/master-log.000006

...

use `study`/*!*/;

set timestamp=1510468188/*!*/;

insert into student (name,age,gender)values('wei','14','f')

/*!*/;

...將備份檔案及其期間的二進位制日誌檔案拷貝的從屬伺服器,進行資料庫的同步

[root@centos7 ~]$scp

fullbackup-2017-11-12-14:27:42.sql [email protected]:/backup

[root@centos7 ~]$scp

master-log.000006 [email protected]:/backup

使用source命令讀取.sql檔案

mariadb>source /backup/fullbackup-2017-11-12-14:27:42.sql

mysqlbinlogmaster-log.000006 > /backup/binlog20171112.sql

mariadb>source

/backup/binlo

g2017111

2.sql

這樣資料庫的同步或者是修復就完成了,此上針對的是溫備,其實也可以完成熱備,只是改變一下備份檔案生成語句

mysqldump --single-transaction -r -triggers--all-databases-e --databases --master-data=2 --flush-logs > /backup/fullbackup-$(date "+%f-%t").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備份和恢復

目標 備份和恢復的3種方法,掌握mysqldump命令匯出資料,source命令匯入資料 備份必要性 重要資料不丟失 資料轉移 mysqldump客戶端 作用 轉儲資料庫 搜尋資料庫進行備份 將資料轉移到另乙個sql伺服器 不一定是mysql伺服器 mysqldump h 主機名 u使用者名稱 p ...

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

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