Linux 下MySQL的導出與導入操作
一,數據庫的備份與導入
1),數據庫的備份
1.導出整個數據庫
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
例:mysqldump -u dbadmin -p myblog > /home/zhangy/blog/database_bak/myblog.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
例:mysqldump -u dbadmin -p myblog wp_users> /home/zhangy/blog/database_bak/blog_users.sql
3.導出一個數據庫結構
mysqldump -u dbadmin -p -d --add-drop-table myblog > /home/zhangy/blog/database_bak/blog_struc.sql
說明:-d 沒有數據 --add-drop-table 在每個create語句之前增加一個drop table
4.導出數據庫一個表結構
mysqldump -u dbadmin -p -d --add-drop-table myblog wp_users> /home/zhangy/blog/database_bak/blog_users_struc.sql
說明:-d 沒有數據 --add-drop-table 在每個create語句之前增加一個drop table
2),數據庫的導入
1,用 mysqldump 備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數據導入。
例如:
#/usr/local/mysql/bin/mysql -u root -p ***** myblog < /home/zhangy/blog/database_bak/myblog.sql
這種方法,我以前經常現在很少用了,因為很容易產生亂碼,因為:
a,導出數據庫時,你如果忘了設置導出字符集的話,在導入的時候,就有可能會出問題.
b,假如,你導出時設置導出時設置了utf8的編碼,但是你又把你的數據庫現在的字符集改成了gb2312的.這樣又會亂碼。
2,用 source 語句
例如:
mysql -u dbadmin -p
use myblog;
set names utf8; #這里的字符集根你的將要導入的數據庫的字符集一至。
source /home/zhangy/blog/database_bak/myblog.sql;
二,文件的備份
1),文件的備份
你可以用tar命令來打包壓縮你要備份的文件,然后用shell來讓它定期備份。不過沒有cpio來的方便
cpio命令參數:
-i | 從標準輸入中讀取文件。 |
-o | 從標準輸入中讀出路徑名清單并且拷貝文件到標準輸出中。 |
-p | 從標準輸入中讀出文件路徑名清單。 |
-c | 以 ASCII 字符的形式讀寫頭信息,便于移植。。 |
-d | 創建需要的目錄 |
-u | 無條件的復制(通常,舊文件不能用相同的文件名替代新文件)。 |
-m | 保留先前文件的修改時間。這個選項在拷貝目錄的時候不起作用。 |
-v | 詳細的,列出文件名稱列表。 |
[root@BlackGhost zhangy]# find /home/zhangy/test -type f|cpio -o > /home/zhangy/test.cpio
31 blocks
[root@BlackGhost zhangy]# ls -al |grep cpio
-rw-r--r-- 1 root root 15872 Feb 8 15:10 test.cpio
2),文件的還原
cd /home/zhangy/test
ls
aaa.cpio test.cpio test.tar.gz
rm *.* #刪除該文件夾下面的所以測試文件
ls
cpio -i < /home/zhangy/test.cpio #導入以前的備份文件
31 blocks
ls
aaa.cpio test.cpio test.tar.gz
簡單吧,我覺得挺簡單的。