MySQL數(shù)據(jù)庫備份與還原
公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出南關(guān)免費(fèi)做網(wǎng)站回饋大家。
備份和恢復(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!?。?/p>
執(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!
參考一下這個吧 還原或者導(dǎo)入數(shù)據(jù)庫命令:mysql -u root --password=root備份數(shù)據(jù)庫命令:mysqldump -u root --password=root --database
helloworld helloworld_backup.sql
其他用法:1.導(dǎo)出整個數(shù)據(jù)庫
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 導(dǎo)出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc wcnc.sql
2.導(dǎo)出一個表
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名表名 導(dǎo)出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users wcnc_users.sql
3.導(dǎo)出一個數(shù)據(jù)庫結(jié)構(gòu)
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc d:\wcnc_db.sql-d 沒有數(shù)據(jù) --add-drop-table 在每個create語句之前增加一個drop table
4.導(dǎo)入數(shù)據(jù)庫
常用source 命令
進(jìn)入mysql數(shù)據(jù)庫控制臺,
如mysql -u root -pmysqluse 數(shù)據(jù)庫然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)
mysqlsource d:\wcnc_db.sql 備份:
1. mysqldump -h 61.139.112.56 -u root -p test d:/test_db.2005-03-02.sql
2. mysqldump -h 61.139.112.56 -u root -p test table1 table2 d:/test12.sql
3. mysqldump -h 61.139.112.56 -u root -p test |gzipd:/testz.gz恢復(fù)
1. mysql testdb d:/test_db.2005-03-02.sql
mysqlsource test_db.2005-03-02.sql
使用mysqldump工具進(jìn)行備份:
1)備份所有數(shù)據(jù)庫:
$ mysqldump -uroot -p --all-database all.sql
(2)備份數(shù)據(jù)庫test
$ mysqldump -uroot -p test test.sql
(3)備份數(shù)據(jù)庫test下的表emp
$ mysqldump -uroot -p test emp emp.sql
(4)備份數(shù)據(jù)庫test下的表emp和dept
$ mysqldump -uroot -p test emp dept emp_dept.sql
Mysql數(shù)據(jù)庫的常用備份方法是使用使用實用程序mysqldump, 其命令格式如下
# mysqldump [options] database [tables]
其參數(shù)的含義為:
options:代表mysqldump的選項,通過mysqldump –help可以查到。
database: 代表將要備份的數(shù)據(jù)庫
tables: 代表將要備份的表,如果不指定任何表,則備份整個數(shù)據(jù)庫。
使用 mysqldump進(jìn)行備份非常簡單,如果要備份數(shù)據(jù)庫” phpbb_db_backup ”,使用命令:
#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/ phpbb_db_backup.2005.5.6
還可以使用gzip命令對備份文件進(jìn)行壓縮:
#mysqldump phpbb_db_backup | gzip /usr/backups/mysql/ phpbb_db_backup.2005.5.6。gz
恢復(fù)數(shù)據(jù)使用命令:
#mysql –u -p phpbb_db_backup /usr/backups/mysql/phpbb_db_backup.2005
通用規(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 表?那這不就異常的尷尬?
---- 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í)行以下命令即可。