Mysql資料安全備份

陳彥斌發表於2020-11-22

資料安全備份的意義

  1. 在出現意外的時候(硬碟損壞、斷點、黑客攻擊),以便資料的恢復
  2. 匯出生產的資料以便研發人員或者測試人員測試學習
  3. 高許可權的人員那操作失誤導致資料丟失,以便恢復

備份型別

  • 完全備份:對整個資料庫的備份
  • 部分備份:對資料進行部分備份(一張或多張表)
    • 增量備份:是以上一次備份為基礎來備份變更資料
    • 差異備份:是以第一次完全備份為基礎來備份變更資料

備份方式

  • 邏輯備份:直接生成sql語句,在恢復資料的時候執行sql語句
  • 物理備份:複製相關庫檔案,進行資料備份(my.cnf指向的資料存放目錄)

區別

  1. 邏輯備份效率低,恢復資料效率低,節約空間
  2. 物理備份浪費空間,備份資料效率快

備份場景

  • 熱備份:備份時,不影響資料庫的讀寫操作
  • 溫備份:備份時,可以讀,不能寫
  • 冷備份:備份時,關閉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檔案即可

 

相關文章