一、Mysql資料庫備份指令格式:
mysqlmp -h主機名 -P埠 -u用戶名 -p密碼 (–database) 資料庫名 > 文件名.sql
註:直接cmd執行該指令即可,不需要先mysql -u root -p鏈接資料庫
1、備份MySQL資料庫的命令
mysqlmp -hhostname -uusername -ppassword databasename > backupfile.sql
2、備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
mysqlmp -–add-drop-table -uusername -ppassword databasename > backupfile.sql
二、資料庫還原有三種方式:source命令、mysql、gunzip命令
1、source 命令
進入mysql資料庫控制台,
mysql -u root -p
mysql>use 資料庫
然後使用source命令,後面參數為腳本文件(如這里用到的.sql)
mysql>source /home/work/db/bkdb.sql
2、mysql
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
3、gunzip
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
2. mysql資料庫備份和還原
MySQL資料庫備份與還原
備份和恢復數據
生成SQL腳本
在控制台使用mysqlmp命令可以用來生成指定資料庫的腳本文本,但要注意,腳本文本中只包含資料庫的內容,而不會存在創建資料庫的語句!所以在恢復數據時,還需要自已手動創建一個資料庫之後再去恢復數據。
mysqlmp –u用戶名 –p密碼 資料庫名>生成的腳本文件路徑
現在可以在C盤下找到mydb1.sql文件了!
注意,mysqlmp命令是在Windows控制台下執行,無需登錄mysql!!!
執行SQL腳本
執行SQL腳本需要登錄mysql,然後進入指定資料庫,才可以執行SQL腳本!!!
執行SQL腳本不只是用來恢復資料庫,也可以在平時編寫SQL腳本,然後使用執行SQL 腳本來操作資料庫!大家都知道,在黑屏下編寫SQL語句時,就算發現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然後執行之!
SOURCE C:\mydb1.sql
注意,在執行腳本時需要先行核查當前資料庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當前資料庫中已經存在了a表,那麼就會出錯!
還可以通過下面的方式來執行腳本文件:
mysql -uroot -p123 mydb1<c:\mydb1.sql
mysql –u用戶名 –p密碼 資料庫<要執行腳本文件路徑
這種方式無需登錄mysql!
3. mysql 怎麼恢復備份的資料庫
把備份的資料庫導入?
mysql -u root --password=你自己的密碼 原庫<備份出來的資料庫
比如
mysql -u root --password=abcdef VSM<VSM_BAK
注意,此時備份文件在執行命令時當前所處的路徑,如果不是一個路徑後面需要寫出路徑
4. mysql刪除資料庫後怎麼恢復
使用mysql中的日誌功能。
首先:將最近的二進制類型的日誌文件存成文本文件導出,命令如下:
mysqlbinlog
F:/wamp/mysql-bin.000045
>
F:/test.txt
其次:打開保存的txt文件,文件格式如下:
其中at
1099代表第1099個命令(姑且這么記),查詢這些命令,看看需要回復的命令在什麼地方,然後執行命令。
最後:執行回復命令,如下:
mysqlbinlog
--start-position="123"
--stop-position="531"
F:/wamp/mysql-bin.000045
F:/test.txt
|
mysql
-uroot
-p
這樣就可以完成資料庫的回復了!!!
5. mysql 命令還原資料庫
mysqlmp -hhostname -uusername -ppassword databasename > backupfile.sql備份MySQL資料庫為帶刪除表的格式備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
mysqlmp -–add-drop-table -uusername -ppassword databasename > backupfile.sql直接將MySQL資料庫壓縮備份
mysqlmp -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz備份MySQL資料庫某個(些)表
mysqlmp -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql同時備份多個MySQL資料庫
mysqlmp -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql僅僅備份資料庫結構
mysqlmp –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql備份伺服器上所有資料庫
mysqlmp –all-databases > allbackupfile.sql還原MySQL資料庫的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql還原壓縮的MySQL資料庫
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename將資料庫轉移到新伺服器
mysqlmp -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
6. 備份和恢復資料庫的命令
MySQL 命令行備份
1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄
(SHOW VARIABLES LIKE "%char%"; 查看資料庫安裝路徑)
Linux下命令:
[root@linuxsir01 root]# mysqlmp -u root -p oa_int > /home/oa_20160627.sql
Windows下命令:
C:\Users\Administrator>mysqlmp -u 密碼 -p 資料庫名 > d:/oa_int_20160708.sql
MySQL 命令行恢復:
Linux下命令:
[root@linuxsir01 root]# mysql -u root -p oa_int1 < /home/oa_20160627.sql
Enter password:在這里輸入資料庫的密碼
Windows下命令:
C:\Users\Administrator> mysql -u root -p 資料庫名(要先創建好資料庫) < d:/oa_int_20160708.sql
7. MySQL的備份與還原,非常規備份,全量備份,增量備份
1:官方百萬級別的測試資料庫:
官方測試資料庫github網址:https://github.com/datacharmer/test_db
下載到目錄,解壓即可,運行命令:
2:自己創建簡單測試資料庫:
快速隨機生成測試語言的網站:https://generatedata.com/
選擇sql和想生成的欄位,點擊生成Generate!生成即可。
在MySQL輸入生成的語句即可。
3:測試備份還原時用到的命令
刪庫跑路測試(先備份好)
還原後查詢庫的表數據是否完整。
採用復制整個數據存放目錄
1:查看資料庫數據存放位置
有兩種方法:
1):在資料庫中用命令 show variables like 'datadir' 查看
2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認為 /var/lib/mysql/ 位置
Linux中查看配置文件
2:復制目錄或者目錄下某個資料庫名
3:還原時直接復制文件夾到資料庫目錄即可
mysqlmp又可叫做全量備份。
參數 --databases 同 -B ,單獨一個庫,也可省略。
1、備份命令mysqlmp格式
格式:mysqlmp -h主機名 -P埠 -u用戶名 -p密碼 database 資料庫名 > 文件名.sql
備份testDatabase資料庫
2、備份MySQL資料庫為帶刪除表的格式
備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
3、直接將MySQL資料庫壓縮備份
備份並壓縮
4、備份MySQL資料庫某個(些)表
備份testDatabase中的myTable表,不需要用參數 --databases 或者 -B
5、同時備份多個MySQL資料庫
同時備份testDatabase和 employees兩個庫
6、備份伺服器上所有資料庫
參數 --all-databases 同 -A
7、還原MySQL資料庫的命令
1) 不指定數據名還原,默認生成原資料庫名稱,還原所有資料庫。
2) 指定數據名還原,還原指定單個資料庫,需在資料庫種預先創建一個testDatabase名稱。
3) 還原壓縮的MySQL資料庫
4) 進入資料庫用source導入
增量備份是針對於資料庫的bin-log日誌進行備份的,增量備份是在全量的基礎上進行操作的。增量備份主要是靠mysql記錄的bin-log日誌。
1:查看是否開啟bin-log日誌
進入mysql輸入命令可查看。
顯示如下為開啟狀態,日誌文件在/var/lib/mysql/以binlog.00001的格式保存。
如未開啟,需要在配置文件種配置
2:查看目前使用的bin-log日誌文件
進入mysql查看命令。
顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。
查看當前testDatabase的表myTable數據如下,
3:刷新日誌,使用新的日誌文件(備份)
在命令端執行命令
日誌文件從 binlog.000022 變為 binlog.000023
這時相當與已經備份成功,備份文件即為上次的binlog.000022日誌文件。
4:刪除數量,從日誌還原數據
1) 刪除ABC行
查詢以及沒有ABC行列。
2) 恢復數據ABC行
退出mysql,在命令端用mysqlbinlog命令恢復到binlog.000022日誌狀態。
進入資料庫再次查看數據,ABC已經恢復。
增量備份完成。
8. 怎麼備份和還原mysql資料庫
備份資料庫
使用mysqlmp命令備份資料庫
9. 重新安裝mysql原來資料庫的只剩下了.frm的問,怎麼恢復的數據
一、InnoDB表結構的恢復
1
假定:MYSQL資料庫已經崩潰,目前只有對應表的frm文件,大家都知道,frm文件無法通過文本編輯器查看,因為如果不恢復,基本上來說對我們沒什麼用。這里我們為了測試,假定該文件為test_innodb.frm
該表創建腳本如下:
mysql> create table test_innodb
-> (A int(11) default NULL,
-> B varchar(30) default NULL,
-> C date default NULL) engine=innodb;
Query OK, 0 rows affected (0.05 sec)
2
在新的正常工作的MYSQL環境下建立一個資料庫,比如aa.
3
在aa資料庫下建立同名的數據表test_innodb,表結構隨意,這里只有一個id欄位,操作過程片段如下:
mysql> create table test_innodb (id bigint not null)engine=InnoDB;
Query OK, 0 rows affected (0.09 sec)
4
停止mysql伺服器,將系統崩潰後留下的test_innodb.frm文件拷貝到新的正常資料庫的數據目錄aa下,覆蓋掉下邊同名的frm文件,重新啟動MYSQL服務。
END
二. MyISAM表結構的恢復
同樣先假定需要恢復的表的FRM文件為test_myisam.frm,表結構為
mysql> create table test_myisam
-> (A int(11) default NULL,
-> B varchar(30) default NULL,
-> C date default NULL) engine=myisam;
Query OK, 0 rows affected (0.05 sec)
直接將test_myisam.frm拷貝到正常資料庫對應的數據目錄下。這時測試
mysql> show tables;
+--------------+
| Tables_in_aa |
+--------------+
| test_innodb |
| test_myisam |
+--------------+
3 rows in set (0.00 sec)
mysql> desc test_myisam;
ERROR 1017 (HY000): Can't find file: 'test_myisam' (errno: 2)
發現只能通過show tables命令看見表名,但是表結構還是沒有恢復,desc命令報錯。
在與test_myisam.frm同一目錄建立以下2個文件,文件內容可以為空:
test_myisam.MYD test_myisam.MYI
在MYSQL命令行使用MYSQL本身的數據表恢復命令repair命令恢復表,如下:
mysql> repair table test_myisam USE_FRM;
+-----------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-----------------+--------+----------+----------+
| aa.test_myisam | repair | status | OK |
+-----------------+--------+----------+----------+
1 row in set (0.00 sec)
根據結果可以知道,恢復命令執行成功