數據安全備份的意義
- 在出現意外的時候(硬盤損壞、斷點、黑客攻擊),以便數據的恢復
- 導出生產的數據以便研發人員或者測試人員測試學習
- 高權限的人員那操作失誤導致數據丟失,以便恢復
備份類型
- 完全備份:對整個數據庫的備份
- 部分備份:對數據進行部分備份(一張或多張表)
- 增量備份:是以上一次備份為基礎來備份變更數據
- 差異備份:是以第一次完全備份為基礎來備份變更數據
備份方式
- 邏輯備份:直接生成sql語句,在恢復數據的時候執行sql語句
- 物理備份:復制相關庫文件,進行數據備份(my.cnf指向的數據存放目錄)
區別
- 邏輯備份效率低,恢復數據效率低,節約空間
- 物理備份浪費空間,備份數據效率快
備份場景
- 熱備份:備份時,不影響數據庫的讀寫操作
- 溫備份:備份時,可以讀,不能寫
- 冷備份:備份時,關閉mysql服務,不能進行任何讀寫操作
Mysqldump備份(跨機器)
單庫語法
備份基礎語法:
mysqldump -u用戶 -hip -p密碼 數據庫名 表名 | 壓縮方式 > 絕對路徑+文件名
跨機器備份
跨機器備份:
備份描述:mac本上安裝了mysql數據庫(172.20.10.2),使用自搭Linux(172.20.10.4)機器上的mysql備份mac本上的nba庫,並使用壓縮文件方式,備份至:/mysql_data_back下
來到linux的mysql安裝目錄(172.20.10.4):
創建目錄:mkdir /mysql_data_back
切換:cd /usr/local/mysql/bin
備份:./mysqldump -uroot -proot -h172.20.10.2 nba | gzip > /mysql_data_back/nba.sql.gz
本機備份
本機備份:
備份描述:linux(自搭),備份本就上的db1庫,並使用壓縮方式,備份至:/mysql_data_back下
備份:./mysqldump -uroot -proot db1 | gzip > /mysql_data_back/db1.sql.gz
備份庫中的某張表
語法:./mysqldump -uroot -proot -h172.20.10.2 nba | gzip > /mysql_data_back/nba.sql.gz
備份描述:在Linux(自搭,172.20.10.4)上,遠程備份mac本(172.20.10.2)nba(庫)的nba_player(表)
在原來的基礎上,nba(庫名) 在追加表名即可
./mysqldump -uroot -proot -h172.20.10.2 nba nba_player | gzip > /mysql_data_back/nba-nba_player.sql.gz
備份多庫
語法:./mysqldump -u用戶 -p密碼 --databases 庫1 庫2 | gzip > 絕對路徑+文件名
備份描述:備份本機的:db1、db2兩個庫
備份:./mysqldump -uroot -proot --databases db1 db2 | gzip > /mysql_data_back/db1-db2.sql.gz
注意
只備份表結構,數據沒備份!
備份全庫
描述:如果遠程服務器上數據庫較多的話,可以使用全庫備份
語法:
./mysqldump -uroot -proot -all --databases | gzip > /mysql_data_back/all.sql.gz
Mysql數據的恢復
備份的數據,不加--databases是沒有創建庫語句的!
先備份數據: ./mysqldump -uroot -proot --databases db1 | gzip > /mysql_data_back/db1.sql.gz 刪除庫: drop database db1; 還原數據: 2、解壓gz文件:gunzip -d db1.sql.gz 1、登錄數據庫:mysql -uroot -proot -h 127.0.0.1 < /mysql_data_back/db1.sql
也可以指定數據庫后,在恢復數據
語法: mysql -u用戶 -p密碼 -h ip地址 數據庫 < 絕對路徑+文件名 示例:mysql -uroot -proot -h 127.0.0.1 issdb_1 < /mysql_data_back/issdb_1.sql
查看Mysql數據庫源文件
方式一
登錄mysql:mysql -uroot -proot
查看:show variables like 'datadir%';
===========================
mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.01 sec)
方式二
直接查看my.cnf文件即可