在項目實施的過程中,經常會面臨資料庫遷移,導出和導出資料,如果用普通的mysql用戶端備份,時間較長且容易出錯。那麼mysql快速備份及遷移,就成為資料庫遷移的重中之重。
下面介紹我在項目實作過程中用到的方法。
1.為了友善,這邊直接将需要執行的SQL語句寫成腳本dbbak.sh。腳本内容如下:
#!/bin/sh
#bak dir
BACKUP_ROOT=備份路徑
BACKUP_FILEDIR=$BACKUP_ROOT
#current date
DATE=$(date +%Y%m%d)
###backup db
DB_NAME=dfdb
DB_USER="使用者名"
DB_PASS="密碼"
DB_HOST="IP位址"
cd /usr/local/mysql/bin
#DB_NAME=dbname
./mysqldump -h$DB_HOST -P12306 -u$DB_USER -p$DB_PASS --default-character-set=utf8 -q -B dbname | gzip > $BACKUP_FILEDIR/dbname-$DATE.sql.gz
複制
2.備份資料庫,執行上述腳本檔案,會生成 dbname-xxx.sql.zip 檔案,即是備份好的資料庫檔案
3.下載下傳備份好的 dbname-xxx.sql.zip 檔案,上傳到新的伺服器中,然後執行gzip -d dbname-xxx.sql.zip 進行解壓
4.切換到mysql 的 路徑下, 比如 cd /usr/local/mysql/bin 然後 root 賬戶登入 ./mysql -u root -p 到 mysql> 的狀态。
5.檢視所有的資料庫 show databases;(特别注意,如果遷移過來的資料的需要更改資料庫名稱,就要在第3步前修改備份檔案裡的資料庫的名稱)
如果有相同的資料庫名稱,需要先備份之前的資料庫,否則後面資料遷移的過程中,會覆寫掉之前的資料。
6.建立新的資料庫名稱: CREATE DATABASE dbname;
7.切換到目前的資料庫 :use dbname;
8.在mysql> 狀态 source /mnt/dbname.sql //替換為上面解壓的資料庫檔案實際路徑及檔案名稱
至此資料庫備份遷移完畢!