mysql數據庫備份或恢復我們常用的就是常用有直接拷貝數據庫備份,mysqldump數據庫備份與mysqlhotcopy數據庫備份常用方法,下面我們一起來看看。
mysqldump 命令模式
備份IP為192.168.1.100某個庫:
代碼如下 復制代碼D:/APM/APMServ5.2.6/MySQL5.1/bin>
mysqldump -h 192.168.1.100 -u root -p ucenter >d:/sql/uc_20130306.sql
Enter password: ****
備份某個庫下的某個表:
代碼如下 復制代碼mysqldump -u root -p密碼 dbname tablename>d:/test.sql
備份全庫:
代碼如下 復制代碼mysqldump -u root -p密碼 –all-databases >d:/test.sql
備份dbname 數據庫的結構:
mysqldump -u root -p -d –add-drop-table dbname >d:/sql/a.sql
說明:-d 沒有數據 –add-drop-table 在每個create語句之前增加一個drop table
導入數據庫:
D:/APM/APMServ5.2.6/MySQL5.1/bin>
mysql –u root –p [dbname] < backup.sql
參數說明:
Dbname參數表示數據庫名稱。該參數可選,可以指定數據庫名,也可以不指定。指定數據庫名時,表示還原該數據庫下的表。
不指定數據庫名時,表示還原特定的一個數據庫
mysqlhotcopy
它直接拷貝文件,所以它比mysqldump快。
可自動完成數據鎖定工作,備份時不用關閉服務器。
能刷新日志,使備份文件和日志文件的檢查點能保持同步。
備份:mysqlhotcopy 支持一次性拷貝多個數據庫,同時還支持正則表達。以下是幾個例子:
代碼如下 復制代碼/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root
testdb /tmp (把數據庫目錄 testdb 拷貝到 /tmp 下)
/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root
testdb_1 testdb_2 testdb_n /tmp
/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=root
testdb./regex/ /tmp
還原:mysqlhotcopy 備份出來的是整個數據庫目錄,使用時可以直接拷貝到 mysqld 指定的 datadir (在這裡是 /usr/local/mysql/data/)目錄下即可,同時要注意權限的問題,如下例:
cp -rf testdb /usr/local/mysql/data/
chown -R nobody:nobody /usr/local/mysql/data/ (將 testdb 目錄的屬主改成 mysqld 運行用戶)
直接復制
windows系統下:直接復制很簡單我們先停了mysql數據庫,然後再復制出來就可以了
linux系統中:
①查找數據庫文件存放位置,MySql文件的後綴有三種形式*.MYD、*.MYI、*.frm;
代碼如下 復制代碼 find / -name *.MYD
②進入數據庫存儲文件目錄;
代碼如下 復制代碼cd /opt/lanmp/mysql-5.1.63/win/data/
③使用copy命令把所有數據拷出去;
代碼如下 復制代碼copy mysql /home
④此時只需將這些數據庫文件轉換成sql文件,這也是這篇文章裡我要講的重點,如果需要的時候再將sql文件用命令導入即可;
⑤新建一個數據庫命名為mysqlbak,將剛才拷出來的文件夾拷入新數據庫的data文件夾;
代碼如下 復制代碼find / -name mysqlbak
cd /home/mysql
copy * /www/wdlinux/mysql-5.1.63/var/mysqlbak/
⑥此時就已經可以看到新數據庫mysqlbak裡的數據了,跟原數據庫mysql裡的數據是一樣的;
⑦使用命令導出數據庫文件即可。
代碼如下 復制代碼mysqldump -uroot -p mysqlbak > /home/mysql.sql
⑧這home文件夾下的文件mysql.sql文件就是易導入的數據庫文件