通用規(guī)律只有使用 --all-databases (-A) 會 ERROR 1356,那就看看他到底備份了什么東西。于是喊上同事一起 less 看了下,上下掃了兩眼。突然發(fā)現(xiàn):1. 備份 SQL 文件里 DROP 掉了 mysql.proc;2. 后CREATE了一個新的 mysql.proc;3. LOCK TABLES 和 UNLOCK TABLES 中間居然沒有備份 CREATE ROUTINE 任何數(shù)據(jù)?這不就是相當(dāng)于每次導(dǎo)入全備都給我一個沒有任何 sys schema routines 的全新 mysql.proc 表?那這不就異常的尷尬?

成都創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、成都網(wǎng)站設(shè)計與策劃設(shè)計,昌平網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:昌平等地區(qū)。昌平做網(wǎng)站價格咨詢:18980820575
---- Table structure for table `proc`--
---- Dumping data for table `proc`-
真相大白在官方文檔【sys-schema-usage】官方文檔明確的告訴我們不會備份 sys 庫。但在使用 mysqldump 在執(zhí)行 --all-databases 會清空 mysql.proc 導(dǎo)致 sys 無法正常使用;這是一個 BUG,并且只存在于 MySQL 5.7.x !
1、mysql_upgrade install or upgrade sys schema
這個方案適用于 sys 庫已經(jīng)因為 mysqldump 導(dǎo)入而損壞的情況下使用。
注意:mysql_upgrade 在修理 sys 庫的同時,還修理 mysql 庫和用戶庫表(期間加鎖且速度一般),有極小可能會誤傷;使用 mysql_upgrade 的時候要加上 --upgrade-system-tables,不然會掃描用戶庫表。
2、全備時同時備份 sys 庫
這個方案適用于需要還原的數(shù)據(jù)庫,sys 庫也不太正常的情況下使用;在全備后額外再備份一份 sys 庫用于修復(fù)。
注意:不適用于做主從時使用它。
3、使用 databases 全備
這個方案適用于所有場景的全備需求,100% 安全。
4、使用 mysql-sys 開源代碼
如果你的數(shù)據(jù)庫 sys 全部中招了,又是生產(chǎn)庫。那你只能用這個方法;
mysql-sys:
中記錄了 sys 庫的創(chuàng)建語句將文件下載到本地,然后根據(jù)數(shù)據(jù)庫版本,執(zhí)行以下命令即可。
MySQL數(shù)據(jù)庫備份與還原
備份和恢復(fù)數(shù)據(jù)
生成SQL腳本
在控制臺使用mysqldump命令可以用來生成指定數(shù)據(jù)庫的腳本文本,但要注意,腳本文本中只包含數(shù)據(jù)庫的內(nèi)容,而不會存在創(chuàng)建數(shù)據(jù)庫的語句!所以在恢復(fù)數(shù)據(jù)時,還需要自已手動創(chuàng)建一個數(shù)據(jù)庫之后再去恢復(fù)數(shù)據(jù)。
mysqldump –u用戶名 –p密碼 數(shù)據(jù)庫名生成的腳本文件路徑
現(xiàn)在可以在C盤下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制臺下執(zhí)行,無需登錄mysql!!!
執(zhí)行SQL腳本
執(zhí)行SQL腳本需要登錄mysql,然后進(jìn)入指定數(shù)據(jù)庫,才可以執(zhí)行SQL腳本!!!
執(zhí)行SQL腳本不只是用來恢復(fù)數(shù)據(jù)庫,也可以在平時編寫SQL腳本,然后使用執(zhí)行SQL 腳本來操作數(shù)據(jù)庫!大家都知道,在黑屏下編寫SQL語句時,就算發(fā)現(xiàn)了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然后執(zhí)行之!
SOURCE C:\mydb1.sql
注意,在執(zhí)行腳本時需要先行核查當(dāng)前數(shù)據(jù)庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當(dāng)前數(shù)據(jù)庫中已經(jīng)存在了a表,那么就會出錯!
還可以通過下面的方式來執(zhí)行腳本文件:
mysql -uroot -p123 mydb1c:\mydb1.sql
mysql –u用戶名 –p密碼 數(shù)據(jù)庫要執(zhí)行腳本文件路徑
這種方式無需登錄mysql!
1:官方百萬級別的測試數(shù)據(jù)庫:
官方測試數(shù)據(jù)庫github網(wǎng)址:
下載到目錄,解壓即可,運行命令:
2:自己創(chuàng)建簡單測試數(shù)據(jù)庫:
快速隨機生成測試語言的網(wǎng)站:
選擇sql和想生成的字段,點擊生成Generate!生成即可。
在MySQL輸入生成的語句即可。
3:測試備份還原時用到的命令
刪庫跑路測試(先備份好)
還原后查詢庫的表數(shù)據(jù)是否完整。
采用復(fù)制整個數(shù)據(jù)存放目錄
1:查看數(shù)據(jù)庫數(shù)據(jù)存放位置
有兩種方法:
1):在數(shù)據(jù)庫中用命令 show variables like 'datadir'; 查看
2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認(rèn)為 /var/lib/mysql/ 位置
Linux中查看配置文件
2:復(fù)制目錄或者目錄下某個數(shù)據(jù)庫名
3:還原時直接復(fù)制文件夾到數(shù)據(jù)庫目錄即可
mysqldump又可叫做全量備份。
參數(shù) --databases 同 -B ,單獨一個庫,也可省略。
1、備份命令mysqldump格式
格式:mysqldump -h主機名 -P端口 -u用戶名 -p密碼 database 數(shù)據(jù)庫名 文件名.sql
備份testDatabase數(shù)據(jù)庫
2、備份MySQL數(shù)據(jù)庫為帶刪除表的格式
備份MySQL數(shù)據(jù)庫為帶刪除表的格式,能夠讓該備份覆蓋已有數(shù)據(jù)庫而不需要手動刪除原有數(shù)據(jù)庫。
3、直接將MySQL數(shù)據(jù)庫壓縮備份
備份并壓縮
4、備份MySQL數(shù)據(jù)庫某個(些)表
備份testDatabase中的myTable表,不需要用參數(shù) --databases 或者 -B
5、同時備份多個MySQL數(shù)據(jù)庫
同時備份testDatabase和 employees兩個庫
6、備份服務(wù)器上所有數(shù)據(jù)庫
參數(shù) --all-databases 同 -A
7、還原MySQL數(shù)據(jù)庫的命令
1) 不指定數(shù)據(jù)名還原,默認(rèn)生成原數(shù)據(jù)庫名稱,還原所有數(shù)據(jù)庫。
2) 指定數(shù)據(jù)名還原,還原指定單個數(shù)據(jù)庫,需在數(shù)據(jù)庫種預(yù)先創(chuàng)建一個testDatabase名稱。
3) 還原壓縮的MySQL數(shù)據(jù)庫
4) 進(jìn)入數(shù)據(jù)庫用source導(dǎo)入
增量備份是針對于數(shù)據(jù)庫的bin-log日志進(jìn)行備份的,增量備份是在全量的基礎(chǔ)上進(jìn)行操作的。增量備份主要是靠mysql記錄的bin-log日志。
1:查看是否開啟bin-log日志
進(jìn)入mysql輸入命令可查看。
顯示如下為開啟狀態(tài),日志文件在/var/lib/mysql/以binlog.00001的格式保存。
如未開啟,需要在配置文件種配置
2:查看目前使用的bin-log日志文件
進(jìn)入mysql查看命令。
顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。
查看當(dāng)前testDatabase的表myTable數(shù)據(jù)如下,
3:刷新日志,使用新的日志文件(備份)
在命令端執(zhí)行命令
日志文件從 binlog.000022 變?yōu)?binlog.000023
這時相當(dāng)與已經(jīng)備份成功,備份文件即為上次的binlog.000022日志文件。
4:刪除數(shù)量,從日志還原數(shù)據(jù)
1) 刪除ABC行
查詢以及沒有ABC行列。
2) 恢復(fù)數(shù)據(jù)ABC行
退出mysql,在命令端用mysqlbinlog命令恢復(fù)到binlog.000022日志狀態(tài)。
進(jìn)入數(shù)據(jù)庫再次查看數(shù)據(jù),ABC已經(jīng)恢復(fù)。
增量備份完成。
恢復(fù)整個數(shù)據(jù)庫首先,如果要恢復(fù)的數(shù)據(jù)庫是含有授權(quán)表的mysql數(shù)據(jù)庫,將需要使用--skip-grant-tables選項運行服務(wù)器。否則,服務(wù)器將抱怨無法找到授權(quán)表。在恢復(fù)表之后,執(zhí)行mysqladmin flush-privileges 來告訴服務(wù)器加載授權(quán)表,并用它們啟動。將原數(shù)據(jù)庫目錄的內(nèi)容拷貝到其他的地方。例如,您可能會在稍后用它們進(jìn)行崩潰表的事后分析檢查(post-mortem examination)。用最新的備份文件重新加載數(shù)據(jù)庫。如果您打算使用由mysqldump 加載的文件,則需要將它們作為mysql的輸入。如果打算使用從數(shù)據(jù)庫中直接拷貝的文件(如,用tar 或c p),則將它們直接拷貝回到該數(shù)據(jù)庫目錄中。但是,在這種情況下,應(yīng)該在拷貝這些文件之前關(guān)閉服務(wù)器,然后再重新啟動它。用更新日志重做在進(jìn)行備份后又修改了數(shù)據(jù)庫表的查詢。對于所有可用的更新日志,可使用它作為mysql的輸入。指定--one-database 選項,使mysql只對想要恢復(fù)的數(shù)據(jù)庫執(zhí)行查詢。如果您知道需要使用所有的更新日志文件,可在包含日志的目錄中使用下列命令:% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_namels 命令產(chǎn)生更新日志文件的單列列表,更新日志文件根據(jù)服務(wù)器生成的順序進(jìn)行排序(要知道,如果您修改了其中的任何文件,排序的順序都將改變,這將導(dǎo)致更新日志按錯誤的順序使用)。您很可能必須使用某些更新日志。例如,如果自備份以來所產(chǎn)生的日志命名為update.392、pdate.393 等等,可以重新運行它們中的命令:% mysql--one-database db_name updata.392% mysql--one-database db_name updata.393…如果正在運行恢復(fù)并打算使用更新日志恢復(fù)由于失策的DROP DATA BASE、DROPTABLE或DELETE 語句而丟失的信息,應(yīng)確保先從更新日志中刪除這些語句。恢復(fù)單個的表恢復(fù)單個表是很困難的。如果有通過mysqldump 生成的備份文件并且它恰好不包含您想要的表數(shù)據(jù),則需要抽取相關(guān)的行并用它們作為mysql的輸入,這部分較容易。困難的是抽取應(yīng)用于該表的更新日志的片段。您會發(fā)現(xiàn): mysql_find_rows 實用程序?qū)@方面有幫助,它可以從更新日志中抽取多行查詢。另一種可能性是用另一個服務(wù)器恢復(fù)整個數(shù)據(jù)庫,然后將所要的該表的文件拷貝到原始數(shù)據(jù)庫中。這實際很容易!在將文件拷貝回數(shù)據(jù)庫目錄時,應(yīng)確保原始數(shù)據(jù)庫的服務(wù)器關(guān)閉。
使用MYSQL數(shù)據(jù)庫的朋友,對MySQL進(jìn)行備份和還原是比較重要的。重要的事簡單做,今天介紹我們使用mysqldump和source命令來備份還原,分為Windows下和Linux下的MYSQL備份與還原操作。
一、Win32系統(tǒng)下MySQL的備份還原方法
備份:在“運行”中輸入“cmd
”,利用“cd
/Program
Files/MySQL/MySQL
Server
5.0/bin”進(jìn)入bin文件夾,輸入“mysqldump
-u
用戶名
-p
databasename
exportfilename”導(dǎo)出數(shù)據(jù)庫到文件,如mysqldump
-u
root
-p
voicevoice.sql,然后輸入密碼即可開始導(dǎo)出MYSQL數(shù)據(jù),實現(xiàn)備份操作。
還原:進(jìn)入MySQL
Command
Line
Client,輸入密碼,進(jìn)入到“mysql”,輸入命令"show
databases;",回車,看看有些什么數(shù)據(jù)庫;建立你要還原的數(shù)據(jù)庫,輸入"create
database
voice;",回車;切換到剛建立的數(shù)據(jù)庫,輸入"use
voice;",回車;導(dǎo)入數(shù)據(jù),輸入"source
voice.sql;",回車,開始導(dǎo)入,再次出現(xiàn)"mysql"并且沒有提示錯誤即還原成功。
二、Linux下MySQL的備份與還原方法:
備份:[root@localhost
~]#
cd
/var/lib/mysql
(進(jìn)入到MySQL庫目錄,根據(jù)自己的MySQL的安裝情況調(diào)整目錄)
[root@localhost
mysql]#
mysqldump
-u
root
-p
voicevoice.sql,輸入密碼即可。
還原:有兩種方法可選:
第一種方法:[root@localhost
~]#
mysql
-u
root
-p
回車,輸入密碼,進(jìn)入MySQL的控制臺"mysql",同1.2還原。
第二種方法:
[root@localhost
~]#
cd
/var/lib/mysql
(進(jìn)入到MySQL庫目錄,根據(jù)自己的MySQL的安裝情況調(diào)整目錄)
[root@localhost
mysql]#
mysql
-u
root
-p
voice
新聞標(biāo)題:mysql備份后怎么恢復(fù),mysql數(shù)據(jù)庫的備份和恢復(fù)常用方法
當(dāng)前鏈接:http://chinadenli.net/article8/dssphip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站、建站公司、App開發(fā)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)