詳解MySQL備份與恢復

詳解MySQL備份與恢復

一、mysql完全備份與恢復

備份的主要目的是災難恢復,備份還可以測試應用、回滾數據修改、查詢歷史數據、審計等。

1、數據備份的重要性

在企業中數據的價值至關重要,數據保障了企業業務的正常運行。因此,數據的安全性及數據的可靠性是運維的重中之重,任何數據的丟失都可能對企業產生嚴重的后果。通常情況下造成數據丟失的原因如下幾種:

程序錯誤人為操作錯誤運算錯誤磁盤故障災難(火災、地震)和盜竊三、常見的備份方法

二、數據庫備份類型

1、從物理與邏輯的角度:

數據庫備份可以分為物理備份和邏輯備份。物理備份是對數據庫操作系統的物理文件(如數據文件、日志文件等)的備份。這種類型的備份適用于在出現問題時需要快速恢復的大型重要數據庫。

物理備份又可以分為冷備份(脫機備份)、熱備份(聯機備份)和溫備份。

  • 冷備份:在數據庫關閉狀態下進行備份操作;
  • 熱備份:在數據庫處于運行狀態時進行備份操作,該備份方法依賴數據庫的日志文件;

  • 溫備份:數據庫鎖定表格(不可寫入,但可讀取)的狀態下進行備份;

邏輯備份是對數據庫邏輯組件(如表等數據庫對象)的備份,表示為邏輯數據庫結構(create database、create table語句)和內容(insert語句或分隔文本文件)的信息。這種類型的備份使用于可以編輯數據值或表結構較小的數據量,或者在不同的機器體系上重新創建數據。

2、從數據庫的備份策略角度:

從數據庫的備份策略角度,數據庫的備份可分為完全備份、差異備份和增量備份。其中呢,完整備份是實現差異、增量備份的基礎。

  • 完整備份:每次對數據進行完整的備份,即對整個數據庫的備份。備份與恢復的操作非常簡單,但是數據存在大量的重復,會占用大量的磁盤空間,備份的時間也很長。

  • 差異備份:備份那些自從上次完全備份之后被修改過的所有文件,備份的時間點是從上次完整備份起,備份數據會越來越大,恢復數據時,只需恢復上次的完全備份和最近的一次差異備份。

  • 增量備份:只有在那些在上次完全備份或增量備份后被修改的文件才會被備份,以上次完整備份或上次增量備份的時間為時間點,僅僅備份這之間的數據變化,因而備份的數據量也小,占用空間小,備份速度快,但恢復時,需要從上一次的完整備份開始到最后一次增量備份之間的所有增量依次恢復,一旦中間的數據發生損壞,將導致數據的丟失。

三、常見的備份方法

MySQL數據庫的備份可以采用很多種方式,如直接打包數據庫文件(物理冷備份)、專用備份工具(mysqldump)、二進制日志增量備份、第三方工具備份等。

1、物理冷備份

物理冷備份時需要在數據庫處于關閉狀態下,能夠較好地保證數據庫的完整性。物理冷備份一般用于非核心業務,這類業務一般都允許中斷,物理冷備份的特點就是速度快,恢復時也是最為簡單。

2、專用備份工具mysqldump或mysqlhotcopy

mysqldump程序和mysqlhotcopy都可以做備份。mysqqldump是客戶端常用邏輯備份程序,能夠產生一組被執行以再現原始數據庫對象定義和表數據的SQL語句。它可以轉儲一個到多個MySQL數據庫,對其進行備份或傳輸到遠程SQL服務器。mysqldump更為通用,因為它可以備份各種表。mysqlhotcopy僅適用于某些存儲引擎。

3、通過啟用二進制日志進行增量備份

MySQL支持增量備份,進行增量備份時必須啟用二進制日志。二進制日志文件為用戶提供復制,對執行備份點后進行的數據庫更改所需的信息進行恢復。如果進行增量備份(包含自上次完全備份或增量備份以來發生的數據修改),需要刷新二進制日志。

四、數據庫完全備份操作

1、備份前準備

[root@centos01 ~]# mysqladmin -u root password  <!--mysql數據庫設置密碼--> New password:             <!--輸入密碼--> Confirm new password:        <!--確認密碼--> [root@centos01 ~]# mysql -uroot -ppwd@123    <!--登錄MySQL數據庫--> mysql> create database benet;        <!--創建benet數據庫--> mysql> use benet;             <!--切換到benet數據庫創建表--> mysql> create table 一班學生成績 (姓名 char(3),班級 char(5),學號 char(8),語文 char(3), 數學char(3),英語 char(3),理綜 char(3), primary key (學號));   <!--創建表,表名字為一班學生成績,第一列名字是姓名,第二列名字為班級,第三列名字 為學號,第四列名字為語文,第五列名字為數學,第六列名字為英語,第七列名字為理綜--> mysql> insert into 一班學生成績 value ('張三','一班','20170822','110','105','92','235');                      <!--表中插入數據--> mysql>  insert into 一班學生成績 value ('李四','一班','20170820','95','115','110','260');                      <!--表中插入數據--> mysql> insert into 一班學生成績 value ('王五','一班','20170818','95','103','108','270');                      <!--表中插入數據--> mysql> insert into 一班學生成績 value ('趙六','一班','20170816','100','109','112','265');                     <!--表中插入數據--> mysql> select * from benet.一班學生成績;   <!--查看一班學生成績表中所有數據-->

詳解MySQL備份與恢復

2、物理冷備份與恢復

物理冷備份一般用tar命令直接打包數據庫文件夾,而在進行備份之前需要使用“systemctl stop mysqld”命令關閉mysql服務。

1)備份數據庫

創建一個/bak目錄作為備份數據存儲路徑,使用tar創建備份文件。整個數據庫文件夾備份屬于完全備份。

[root@centos01 ~]# systemctl stop mysqld  <!--停止mysql服務--> [root@centos01 ~]mkdir /bak/   <!--創建存儲備份目錄--> [root@centos01 ~]# tar zcf /bak/mysql_all-$(date +%F).mysql.gz /usr/local/mysql/data/                      <!--直接tar打包數據庫文件--> [root@centos01 ~]# ls /bak/     <!--查看備份的數據--> -rw-r--r-- 1 root root 766598 10月 31 03:57 /bak/mysql_all-2019-10-31.mysql.gz

2)恢復數據庫

[root@centos01 ~]mkdir test  <!--創建恢復數據目錄--> [root@centos01 ~]# tar zxvf /bak/mysql_all-2019-10-31.mysql.gz  -C ./test/                    <!--解壓縮備份數據到恢復目錄--> [root@centos01 data]# cd /usr/local/mysql/data/  <!--進入數據原始位置--> [root@centos01 data]# rm -rf ./*  <!--刪除數據--> [root@centos01 ~]# cd ./test/usr/local/mysql/data/  <!--切換到恢復目錄--> [root@centos01 date]#mv ./* /usr/local/mysql/data/    <!--將恢復目錄數據恢復到原始位置--> [root@centos01 ~]# systemctl start mysqld  <!--啟動mysql服務-->

3、mysqldump備份與恢復

通過mysqldump命令可以將指定的庫、表或全部的庫導出為SQL腳本,便于該命令在不同版本的MySQL服務器上使用。

1)備份恢復所有數據庫

[root@centos01 ~]# mysqldump -uroot -ppwd@123 --opt --all-databases > ./test/benet_databases.sql     <!--備份所有庫,opt選項是優化執行速度--> [root@centos01 ~]# mysql -uroot -p     <!--登錄數據庫--> Enter password:          <!--數據密碼--> mysql> show databases;         <!--查看所有數據庫--> +--------------------+ | Database           | +--------------------+ | information_schema | | benet              | | mysql              | | performance_schema | | test               | +--------------------+ mysql> drop database benet;  <!--刪除benet數據庫--> mysql> show databases;      <!--查看數據庫是否刪除--> +--------------------+ | Database           | +--------------------+ | information_schema | | mysql              | | performance_schema | | test               | +--------------------+ [root@centos01 ~]# mysql -u root -p < ./test/benet_databases.sql  Enter password:     <!--恢復所有數據庫--> mysql> show databases;     <!--查看數據庫是否恢復--> +--------------------+ | Database           | +--------------------+ | information_schema | | benet              | | mysql              | | performance_schema | | test               | +--------------------+ mysql> source ./test/benet_databases.sql               <!--也可以通過這種方法恢復誤刪除的數據庫-->

2)備份恢復數據庫中的表

[root@centos01 ~]# mysqldump -uroo t -ppwd@123 benet 一班學生成績 > ./test/benet_一班學生成績.sql                             <!--備份數據庫下的表--> [root@centos01 ~]# mysql -uroot -p       <!--登錄數據庫--> Enter password:        <!--輸入密碼--> mysql> use benet;      <!--切換到benet數據庫--> mysql> drop table 一班學生成績;      <!--刪除一班學生成績表--> mysql> show tables;        <!--查看表是否刪除-->  Empty set (0.00 sec) [root@centos01 ~]# mysql -uroot -p benet < ./test/benet_一班學生成績.sql                              <!--恢復誤刪除的表--> [root@centos01 ~]# mysql -uroot -p    <!--登錄數據庫--> Enter password:           <!--輸入密碼--> mysql> use benet;         <!--切換到benet數據庫--> Database changed mysql> show tables;    <!--查看誤刪除的表是否恢復--> +--------------------+ | Tables_in_benet    | +--------------------+ | 一班學生成績       | +--------------------+ 1 row in set (0.00 sec)

五、MySQL增量備份與恢復

使用mysqldump進行完全備份,備份的數據中有重復數據,備份時間與恢復時間過長。而增量備份就是備份自上一次備份之后增加或改變的文件或內容。

1、MySQL增量備份的特點

與完全備份不同,增量備份沒有重復數據,備份量不大,時間短;但其恢復麻煩,需要上次完全備份及完全備份之后所有的增量備份才能恢復,而且要對所有增量備份進行逐個反推恢復。可以通過MySQL提供的二進制日志間接實現增量備份。

2、MySQL增量備份與恢復

二進制日志保存了所有更新或者可能更新數據庫的操作。二進制日志在啟動MySQL服務器后開始記錄,并在文件達到二進制日志所設置的最大值或者接收到flush logs命令后重新創建新的日志文件,生成二進制文件序列,并及時把這些日志保存到安全的存儲位置,即可完成一個時間段的增量備份。
要進行MySQL的增量備份,首先要開啟二進制日志功能,開啟MySQL的二進制日志功能的實現方法如下:

[root@centos01 ~]# vim /etc/my.cnf       <!--進入MySQL配置文件--> .......    <!--此處省略部分內容--> log-bin=mysql-bin      <!--開啟二進制日志功能--> [root@centos01 ~]# systemctl restart mysqld   <!--重啟MySQL服務--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ ......             <!--此處省略部分內容--> -rw-rw---- 1 mysql mysql    27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql  1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql     1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql   507535 11月  1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql   507229 11月  1 09:40 mysql-bin.000005 -rw-rw---- 1 mysql mysql       95 11月  1 09:37 mysql-bin.index drwx------ 2 mysql mysql     4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql       20 10月 30 23:56 test

1)增量備份

[root@centos01 ~]# mysqladmin -uroot -ppwd@123 flush-logs  <!--刷新二進制日志--> [root@centos01 ~]# ls -l /usr/local/mysql/data/     <!--查看二進制日志文件--> ......   <!--此處省略部分內容--> -rw-rw---- 1 mysql mysql    27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql  1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql     1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql   507535 11月  1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql   507272 11月  1 09:49 mysql-bin.000005 -rw-rw---- 1 mysql mysql      107 11月  1 09:49 mysql-bin.000006 -rw-rw---- 1 mysql mysql      114 11月  1 09:49 mysql-bin.index drwx------ 2 mysql mysql     4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql       20 10月 30 23:56 test [root@centos01 ~]# mysql -uroot -ppwd@123  <!--登錄mysql數據庫--> mysql> use benet;           <!--切換到benet數據庫--> mysql> insert into 一班學生成績 value ('李寧','二班','20170824','92','98','105','235');                                 <!--錄入新的數據--> Query OK, 1 row affected (0.01 sec) mysql> insert into 一班學生成績 value ('陳銘','二班','20170826','111','107','96','204');                                <!--錄入新的數據--> Query OK, 1 row affected (0.00 sec) mysql> select *from 一班學生成績;    <!--查看新數據是否錄入--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | | 李寧   | 二班   | 20170824 | 92     | 98     | 105    | 235    | | 陳銘   | 二班   | 20170826 | 111    | 107    | 96     | 204    | +--------+--------+----------+--------+--------+--------+--------+ 6 rows in set (0.00 sec) [root@centos01 ~]# mysqladmin -uroot -ppwd@123 flush-logs                             <!--刷新二進制日志--> [root@centos01 ~]# ls -l /usr/local/mysql/data/                                    <!--查看二進制日志文件--> ......          <!--此處省略部分內容--> -rw-rw---- 1 mysql mysql    27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql  1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql     1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql   507535 11月  1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql   507272 11月  1 09:49 mysql-bin.000005 -rw-rw---- 1 mysql mysql      649 11月  1 09:58 mysql-bin.000006 -rw-rw---- 1 mysql mysql      107 11月  1 09:58 mysql-bin.000007 -rw-rw---- 1 mysql mysql      133 11月  1 09:58 mysql-bin.index drwx------ 2 mysql mysql     4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql       20 10月 30 23:56 test [root@centos01 ~]# cp /usr/local/mysql/data/mysql-bin.000006 /root/test/                                <!--復制二進制日志-->

2)模擬誤操作刪除一班學生成績表

[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop table benet.一班學生成績;'                            <!--刪除一班學生成績表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                          <!--查看表是否刪除--> ERROR 1146 (42S02) at line 1: Table 'benet.一班學生成績' doesn't exist

3)恢復誤刪除的表

[root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql                         <!--恢復完全備份--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                                 <!--查看完全備份數據是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | +--------+--------+----------+--------+--------+--------+--------+ [root@centos01 ~]# mysqlbinlog --no-defaults /root/test/mysql-bin.000006 |mysql -u root -p                     <!--恢復增量備份--> Enter password:       <!--輸入密碼--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                            <!--查看增量恢復數據是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | | 李寧   | 二班   | 20170824 | 92     | 98     | 105    | 235    | | 陳銘   | 二班   | 20170826 | 111    | 107    | 96     | 204    | +--------+--------+----------+--------+--------+--------+--------+

3、基于位置恢復

[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop table benet.一班學生成績;'                    <!--刪除一班學生成績表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                    <!--查看表是否刪除--> ERROR 1146 (42S02) at line 1: Table 'benet.一班學生成績' doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql                     <!--恢復完全備份--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                     <!--查看完全備份是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | +--------+--------+----------+--------+--------+--------+--------+ [root@centos01 ~]# mysqlbinlog --no-defaults /root/test/mysql-bin.000006                        <!--查看二進制日志文件確認恢復的位置或時間點--> ......         <!--此處省略部分內容--> # at 176                  <!--at就是我們稱之為操作ID,下面緊跟的是時間標記--> #191101  9:55:33 server id 1  end_log_pos 329   Query   thread_id=9 exec_time=0 error_code=0 use benet/*!*/; SET TIMESTAMP=1572573333/*!*/; insert into 一班學生成績 value ('李寧','二班','20170824','92','98','105','235') /*!*/; # at 329 #191101  9:55:33 server id 1  end_log_pos 356   Xid = 278 COMMIT/*!*/; # at 356 #191101  9:55:43 server id 1  end_log_pos 425   Query   thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1572573343/*!*/; BEGIN /*!*/; # at 425       <!--at就是我們稱之為操作ID,下面緊跟的是時間標記--> #191101  9:55:43 server id 1  end_log_pos 579   Query   thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1572573343/*!*/; insert into 一班學生成績 value ('陳銘','二班','20170826','111','107','96','204') /*!*/; [root@centos01 ~]# mysqlbinlog --no-defaults --stop-position='425' /root/test/mysql-bin.000006 |mysql -uroot -p       <!--基于ID恢復增量備份--> Enter password:       <!--輸入密碼--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                    <!--查看數據是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | | 李寧   | 二班   | 20170824 | 92     | 98     | 105    | 235    | +--------+--------+----------+--------+--------+--------+--------+

上述命令中“–stop-position”指定的是停止的位置,如果僅恢復“陳銘”的信息,跳過“李寧”的信息恢復,可以使用“–start-position”選項指定開始恢復數據的位置。這時所恢復的數據是從指定位置開始直到二進制日志文件的最后。

[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop table benet.一班學生成績;'                        <!--刪除一班學生成績表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                     <!--查看表是否刪除--> ERROR 1146 (42S02) at line 1: Table 'benet.一班學生成績' doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql                                 <!--恢復完全備份--> [root@centos01 ~]# mysqlbinlog --no-defaults --start-position='425' /root/test/mysql-bin.000006 |mysql -uroot -p       <!--基于ID恢復增量備份--> Enter password:        <!--輸入密碼--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                      <!--查看數據是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | | 陳銘   | 二班   | 20170826 | 111    | 107    | 96     | 204    | +--------+--------+----------+--------+--------+--------+--------+

4、基于時間點恢復

基于時間點恢復數據所使用的選項是“–stop-datetime”,指定的時間同樣也是查詢二進制日志所得。執行一下操作可以實現僅恢復到9:55:43之前的數據,即不恢復“陳銘”的信息。

[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop table benet.一班學生成績;'                        <!--刪除一班學生成績表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                    <!--查看表是否刪除--> ERROR 1146 (42S02) at line 1: Table 'benet.一班學生成績' doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql                        <!--恢復完全備份--> [root@centos01 ~]# mysqlbinlog --no-defaults --stop-datetime='2019-11-01  9:55:43' /root/test/mysql-bin.000006 |mysql -uroot -p                               <!--基于時間點恢復增量備份--> Enter password:       <!--輸入密碼--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                                <!--查看數據是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | | 李寧   | 二班   | 20170824 | 92     | 98     | 105    | 235    | +--------+--------+----------+--------+--------+--------+--------+

執行以下操作可以實現僅恢復“陳銘”的信息,跳過“李寧”的信息恢復

[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop table benet.一班學生成績;'                          <!--刪除一班學生成績表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                      <!--查看表是否刪除--> ERROR 1146 (42S02) at line 1: Table 'benet.一班學生成績' doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql                               <!--恢復完全備份--> [root@centos01 ~]# mysqlbinlog --no-defaults --start-datetime='2019-11-01 9:55:43' /root/test/mysql-bin.000006 |mysql -uroot -p                             <!--基于時間恢復增量備份--> Enter password:        <!--輸入密碼--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.一班學生成績;'                            <!--查看數據是否恢復--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名   | 班級   | 學號     | 語文   | 數學   | 英語   | 理綜   | +--------+--------+----------+--------+--------+--------+--------+ | 趙六   | 一班   | 20170816 | 100    | 109    | 112    | 265    | | 王五   | 一班   | 20170818 | 95     | 103    | 108    | 270    | | 李四   | 一班   | 20170820 | 95     | 115    | 110    | 260    | | 張三   | 一班   | 20170822 | 110    | 105    | 92     | 235    | | 陳銘   | 二班   | 20170826 | 111    | 107    | 96     | 204    | +--------+--------+----------+--------+--------+--------+--------+

—————— 本文至此結束,感謝閱讀 ——————

推薦學習:MySQL教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享