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 命令會使資料檔案進行統一,達到資料...