Mysql完全備份和恢復
阿新 • • 發佈:2018-07-03
sql命令 chan chang eat 大量 sta mat 差異 數據庫的備份 Mysql完全備份和恢復
實驗介紹
數據庫備份從物理與邏輯的角度劃分可以分為:物理備份、邏輯備份。從數據庫的備份策略角度,可以分為完全備份、差異備份、增量備份。這次實驗主要介紹完全備份,完全備份優點是備份與恢復操作簡單方便,缺點是數據存在大量的重復,占用大量的備份空間,備份時間長。
Mysql完全備份
1、使用tar打包文件夾備份
Mysql的數據庫文件默認都是保存在安裝目錄下的data文件夾下面,可以直接保存data文件夾。但是占用的空間很大,可以使用tar打包壓縮進行保存。由於數據庫文件很大,可以直接使用壓縮率較大的xz格式壓縮,所以首先要安裝xz壓縮格式工具。
[root@localhost opt]# yum install xz -y
然後,對數據庫文件夾/usr/local/mysql/data/進行打包操作。註意這裏使用tar工具打包,最好使用相對路徑,所以先切換至/usr/local/mysql目錄下,然後再打包。
[root@localhost opt]# cd /usr/local/mysql/
[root@localhost mysql]# tar Jcf /opt/mysql-$(date +%F).tar.xz data/
[root@localhost opt]# ls
mysql-2018-07-02.tar.xz mysql-5.7.17 test.sql
2、使用mysqldump工具備份
(1)使用mysqldump命令對某些表完全備份,如下圖,數據庫中有test的庫,裏面有一張yx的表。
mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | yx | +----------------+ 1 row in set (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 5 rows in set (0.00 sec)
對test庫中的yx表進行備份。
[root@localhost opt]# mysqldump -u root -p test yx > /opt/yx1.sql
Enter password:
[root@localhost opt]# ls
mysql-2018-07-02.tar.xz mysql-5.7.17 test.sql yx1.sql
(2)使用mysqldump命令對單個庫進行完全備份
[root@localhost opt]# mysqldump -u root -p test > /opt/test.sql
Enter password:
[root@localhost opt]# ls
mysql-2018-07-02.tar.xz mysql-5.7.17 test.sql yx1.sql
(3)使用mysqldump命令對多個庫進行完全備份
[root@localhost opt]# mysqldump -u root -p --databases test mysql > /opt/test-mysql.sql
Enter password:
[root@localhost opt]# ls
mysql-2018-07-02.tar.xz mysql-5.7.17 test-mysql.sql test.sql yx1.sql
(4)使用mysqldump命令對所有數據庫完全備份
[root@localhost opt]# mysqldump -u root -p --all-databases > /opt/all.sql
Enter password:
[root@localhost opt]# ls
all.sql mysql-2018-07-02.tar.xz mysql-5.7.17 test-mysql.sql test.sql yx1.sql
(5)使用mysqldump命令直接備份表結構
[root@localhost opt]# mysqldump -u root -p -d test yx > /opt/desc.sql
Enter password:
[root@localhost opt]# ls
all.sql desc.sql mysql-2018-07-02.tar.xz mysql-5.7.17 test-mysql.sql test.sql yx1.sql
Mysql完全恢復
在需要恢復庫的時候,可以使用source命令和mysql命令
1、source命令整庫恢復
上面我們已經對test庫進行了備份,現在我們刪除掉test庫,註意在恢復庫的時候,要先創建一個同名的庫,然後再恢復,否則會報錯。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> drop database test;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> use test;
Database changed
mysql> source /opt/test.sql
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| yx |
+----------------+
1 row in set (0.00 sec)
test庫就恢復成功了。
2、Mysql命令整庫恢復
在使用Mysql命令恢復庫之前,同樣要先創建已經被刪除的空數據庫,否則會報錯,然後使用下面這條命令。
[root@localhost opt]# mysqldump -u root -p test < /opt/test.sql
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| yx |
Mysql完全備份和恢復