今天需要把一臺服務器的的mysql 數據備份到另一臺服務器上;
首先自然是需要先對原服務器上的數據備份
記錄如下:
一,數據庫的備份與導入
1),數據庫的備份
1.導出整個數據庫
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
例:(jstorm_server)➜ ~/mysqlBackup mysqldump -u root -p fdroid > ./fdroidBackup.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
二,數據的傳輸
scp是secure copy的簡寫,用於在Linux下進行遠程拷貝文件的命令,scp傳輸是加密的,可能會稍微影響一下速度其佔用的系統資源非常小。非常適合遠程文件的拷貝。
1.命令格式:
scp [參數] [原路徑] [目標路徑]
2.命令功能:
scp是 secure copy的縮寫, scp是linux系統下基於ssh登陸進行安全的遠程文件拷貝命令。linux的scp命令可以在linux服務器之間複製文件和目錄。
3.命令參數:
-1 強制scp命令使用協議ssh1
-2 強制scp命令使用協議ssh2
-4 強制scp命令只使用IPv4尋址
-6 強制scp命令只使用IPv6尋址
-B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
-C 允許壓縮。(將-C標誌傳遞給ssh,從而打開壓縮功能)
-p 保留原文件的修改時間,訪問時間和訪問權限。
-q 不顯示傳輸進度條。
-r 遞歸複製整個目錄。
-v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題。
-c cipher 以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。
-F ssh_config 指定一個替代的ssh配置文件,此參數直接傳遞給ssh。
-i identity_file 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。
-l limit 限定用戶所能使用的帶寬,以Kbit/s爲單位。
-o ssh_option 如果習慣於使用ssh_config(5)中的參數傳遞方式,
-P port 注意是大寫的P, port是指定數據傳輸用到的端口號
-S program 指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項。
4.使用實例:
執行命令將本地的目錄上傳的遠程服務器目錄上。執行命令"scp -r /opt/test [email protected]:/opt"。本條命令意思爲將本地的目錄/opt/test上傳到遠程192.168.2.105的opt目錄下。然後根據提示輸入root的密碼,等待即可上傳完畢。
執行命令"scp /root/node-v4.2.1-linux-x64.tar.gz [email protected]:/opt/test"。意思爲將本地文件node-v4.2.1-linux-x64.tar.gz上傳到服務器/opt/test目錄下。
scp -r [email protected]:/root/rules /opt"。意思爲將遠程服務器上/root/rules目錄內的內容拷貝到本地的opt目錄下。
執行命令"scp -P 22 [email protected]:/root/filters.bpf /opt/"。意思爲將遠程服務器上/root目錄下的filters.bpf文件拷貝到本地的opt目錄下。
三,數據庫的創建以及數據的恢復
show create database fdroid; 查看字符集
創建數據庫 並指定字符集
命令:
CREATE DATABASE yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
創建用戶命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
給用戶授權
命令:GRANT privileges ON databasename.tablename TO 'username'@'host';
privileges - 用戶的操作權限,如SELECT , INSERT , UPDATE 等(詳細列表見該文最後面).如果要授予所的權限則使用ALL;databasename - 數據庫名,tablename-表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用*表示,
如*.*。
附上
Linux下MySQL數據庫常用基本操作 一:http://www.cnblogs.com/xdpxyxy/archive/2012/11/16/2773662.html
導入數據
用 source 語句
例如:
mysql -u root -p
use fdroid;
set names utf8; #這裏的字符集根你的將要導入的數據庫的字符集一致。
source /home/zhangy/blog/database_bak/myblog.sql;