目錄
和binlog的主要區別如下:
數據格式:生成的備份文件是以文本形式保存的SQL語句,可以讀取和修改。binlog則是以二進制格式保存的事務日志,不能直接查看或修改,需要專門的工具(如)進行解析和分析。備份范圍:可以備份整個數據庫或特定的表,以及備份時可以選擇備份的數據內容(例如只備份表結構、只備份數據等)。而binlog會記錄所有的更改操作,包括對表結構和數據的更改,因此可以用來恢復到任何一個時間點之前的狀態。使用場景:適用于定期完整備份數據庫或移植數據庫,以便將數據導入到不同的MySQL服務器。binlog則適用于增量備份和恢復,可以用于故障恢復、數據同步、主從復制等場景。
通過binlog恢復數據傳送門:通過binlog恢復數據
1.簡介
命令可以將數據庫中指定或所有的庫、表導出為SQL腳本。表的結構和表中的數據將存儲在生成的SQL腳本中。
備份恢復原理:通過先查出需要備份的庫及表的結構,在SQL腳本中生成CREATE語句。然后將表中的所有記錄轉換成INSERT語句并寫入SQL腳本中。這些CREATE語句和INSERT語句都是還原時使用的:還原數據時可使用其中的CREATE語句來創建表,使用INSERT語句還原數據。
環境準備:如下圖所示,共準備了和兩個數據庫,每個數據庫中都有兩個表和(未演示,同),每個表中各有一條數據。
2.備份數據
備份的形式可以分為以下4種:
備份所有數據庫(包含庫中所有表及數據)備份一個/多個數據庫(包含庫中所有表及數據)備份指定庫中的指定表(指定表及其數據)
下面將分別介紹如何實現這3種形式的數據備份。
2.1備份所有數據庫
語法: -u[用戶名] -p[密碼] --all- >/備份路徑/備份文件名.sql
#備份全部數據庫
mysqldump -uroot -p123456 --all-databases > backup_all_databases.sql
-uroot-p123456 登錄MySQL的用戶名/密碼
--all- >
.sql 備份文件的名稱,可加保存路徑
2.2備份一個/多個數據庫
語法: -u[用戶名] -p[密碼] -- DB1 [DB2 DB3...] > /備份路徑/備份文件名.sql
#備份一個數據庫
mysqldump -uroot -p123456 --databases database_test1 > backup_database_test1.sql
#備份多個數據庫
mysqldump -uroot -p123456 --databases database_test1 database_test2 > backup_database_test1_test2.sql
-uroot-p123456 登錄MySQL的用戶名/密碼
--
要備份的數據庫,多個以空格間隔
backup_*.sql 備份文件的名稱,可加保存路徑
2.3 備份指定庫中的指定表
語法: -u[用戶名] -p[密碼][] [table1][table2] >/備份路徑/備份文件名.sql
#備份庫中的部分表
mysqldump -uroot -p123456 database_test1 table_test1 table_test2 > backup_tables.sql
-uroot-p123456 登錄MySQL的用戶名/密碼
要備份表所在的庫名
> 要備份的表名,可以有多個,以空格分割
.sql 備份文件的名稱,可加保存路徑
查看備份文件中的內容:
#查看其中一個備份文件
cat backup_tables.sql | grep -v "^--" |grep -v "^/" |grep -v "^$"
cat
1.sql 要查看的文件
| grep -v "^--" |grep -v "^/" |grep -v "^$" 過濾不顯示的信息(grep為搜索,-v表示忽略)
3.恢復數據
環境準備:登錄mysql數據庫后刪除和
#登錄mysql后刪除database
drop database database_test1;
drop database database_test2;
3.1 恢復數據庫
備份所有數據庫和備份指定庫的恢復邏輯相同
語法:mysql -u[用戶名] -p[密碼]
*請認真填寫需求信息,我們會在24小時內與您取得聯系。