數據庫備份的重要性:
在生產環境中,數據的安全性是相當重要的,任何數據的丟失均可能產生嚴重的後果。數據庫備份的重要性主要體如今:mysql
1.提升系統的高可用性的和災難可恢復性,在數據庫系統崩潰時,沒有數據庫備份就無法找到數據。
2.使用數據庫備份還原數據庫,是數據庫崩潰時提供數據恢復最小代價的最優方案,若是讓用戶從新添加數據,代價未免太大。
3.沒有數據就沒有一切,數據庫備份是一種防範災難的強力手段。sql
使用數據庫的過程當中有多種緣由形成數據丟失:數據庫
程序錯誤、人爲錯誤、計算機失敗、磁盤失敗、災難(地震 火災等)和偷竊安全
數據庫備份的分類:
示例:ide
create database school;
create table info (id int,name char(10));
Insert into info (id,name) values (1,‘zs’);
----------------------完整備份----------------------------------------------------
Insert into info (id,name) values (2,’ls’);
------------------------增量備份----------------------------------------------
Insert into info (id,name) values (3,’ww’);
-------------------------增量備份和差別備份----------------------------------
Insert into info (id,name) values (4,’zl’);
---------------------增量備份和差別備份------------------------------工具
MySQL徹底備份概念解讀
MySQL的備份方式主要有徹底備份與增量備份。徹底備份是對整個數據庫的備份、數據庫結構和文件結構的備份,保存的是備份完成時的數據庫,時增量備份的基礎。
徹底備份的優勢是備份與恢復操做簡單方便,缺點是數據存在大量重複,佔用大量的備份空間,備份的時間長。
在生產環境中,這兩種備份方式都會使用,須要制定合理高效的方案達到備份數據的目的,避免數據丟失形成嚴重的後果。
關於備份這裏介紹兩種方式
1.使用tar打包文件夾備份:MySQL的數據庫文件默認都是保存在安裝目錄的data文件夾下面,能夠直接保存data文件夾,可是佔用空間的空間較大,可使用tar打包壓縮進行保存。下面介紹一些相關操做命令:3d
[root@localhost mysql]# yum install xz -y //安裝xz壓縮格式工具
[root@localhost mysql]# date +%F //指定的壓縮文件日期格式
[root@localhost mysql]# tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data //對數據庫文件夾進行壓縮打包到/opt下
[root@localhost ~]# du -sh /opt/mysql-2018-08-30.tar.xz //du查看打包後佔用的內存大小
[root@localhost ~]# du -sh /usr/local/mysql/data //du查看打包前原文件夾佔用的內存大小
[root@localhost ~]# tar Jxvf /opt/mysql-2018-08-30.tar.xz /usr/local/mysql/data/ //將打包的備份文件恢復到數據庫文件夾blog
具體操做以下圖:內存
2.使用mysqldump工具有份:使用mysqldump能夠更加靈活地控制備份的內容,好比某幾個表或庫均可以單獨備份。下面介紹一些相關操做命令:it
(1)備份表數據:
mysqldump -u 用戶名 -p 密碼 選項 數據庫名 表名 > /備份路徑/備份文件名
mysqldump -u root -p school info > /opt/info.sql
(2)單個庫備份:
mysqldump -u 用戶名 -p 密碼 選項 數據庫名 > /備份路徑/備份文件名
mysqldump -uroot -p school > /opt/school.sql #只會寫庫裏全部表的建立和數據記錄
(3)多個庫備份:
mysqldump -u 用戶名 -p 密碼 選項 --databases 庫名1 庫名2 > /備份路徑/備份文件名
mysqldump -uroot -p --databases school kgc > /opt/school_kgc.sql
(4)對全部庫進行徹底備份:
mysqldump -u 用戶名 -p 密碼 選項 --all-databases > /備份路徑/備份文件名
mysqldump -uroot -p --all-databases > /opt/all.sql
(5)備份表結構:
mysqldump -u 用戶名 -p 密碼 -d 數據庫名 表名 > /備份路徑/備份文件名
mysqldump -u root -p -d school info > /opt/info-d.sql
MySQL數據徹底恢復
當須要恢復數據庫的時候,可使用source命令和MySQL命令
(1)使用source命令將已經備份的庫school恢復到MySQL中:
mysqldump -u root -p school > /opt/school.sql
(2)使用MySQL命令整庫數據,一樣在庫chool提早已經備份好的狀況下進行恢復:
mysqldump -u root -p school > /opt/school.sql
(3)mysqldump -u -root -p --databases school > /opt/school01.sql #連同庫school自己和裏面的表都會備份,直接恢復便可:
恢復表:
(1)使用source命令恢復表,在數據表已經備份好的前提下進行恢復操做:
mysqldump -u root -p school info > /opt/info.sql #備份表
(2)使用MySQL恢復數據表,一樣也是在數據表已經備份好的前提下進行恢復操做:
mysqldump -u root -p school info > /opt/info.sql #備份表
mysql -u 用戶名 -p 密碼 庫名 < /庫備份教本的路徑
本篇補充
備份以後的文件是一個sql腳本,sql結尾是固定格式