此處以阿里雲ecs遷移至專業版RDS數據庫爲例;
該方案優點是簡單,容易上手;缺點是停機時間較長。 因此它適用於數據量不大,或者允許停機的時間較長,並且在這個時間範圍內能夠完成。
由於RDS提供的關係數據庫服務與原生的數據庫服務是完全兼容的,所以對於用戶來說,從原有數據庫遷移到RDS數據的過程,與從一個mysql服務器遷移到另外一臺mysql服務器的過程基本類似。具體的遷移流程如下:
1、 開通雲服務器服務。
2、 開通RDS服務,如果開通成功,會返回給用戶連接地址和端口,比如cloudcc.mysql.rds.aliyuncs.com:3306。
3、 先停止業務,使用MySQLdump的數據導出工具,將您線下原有數據庫數據導出爲數據文件((本步驟僅僅導出數據,不包括存儲過程,函數,觸發器)。具體命令如下:
mysqldump -h local_ip -u user_name -p –opt –default-character-set=utf8 –hex-blob db_name –skip-triggers > /tmp/db_name.sql
其中
local_ip 以您真實的線下MySQL服務器IP地址代替
user_name 以您真實的數據庫用戶代替
db_name 以您真實的數據庫名代替
/tmp/db_name.sql是文件名,由您自己隨意填寫。
4、備份您線下原有數據庫的存儲過程、觸發器和函數(若您數據庫中沒有使用存儲過程、觸發器和函數,則跳過這步),在導出存儲過程、觸發器和函數時,需要將definer去掉,以兼容RDS。具體命令如下:
mysqldump -h local_ip -u user_name -p –opt –default-character-set=utf8 –hex-blob db_name –triggers -d -t -R | sed -e ‘s/DEFINER[ ]*=[ ]*[^*]*\*/\*/’ > /tmp/trigger_procedure.sql
其中
local_ip 以您真實的線下MySQL服務器IP地址代替
user_name 以您真實的數據庫用戶代替
db_name 以您真實的數據庫名代替
/tmp/trigger_procedure.sql是文件名,由您自己隨意填寫。
5、將數據文件和存儲過程文件上傳到已經購買的雲服務器中。
6、遠程登錄到雲服務器,將剛纔上傳的數據文件導入到已購買的RDS實例中。具體命令如下:
mysql -hexample.mysql.rds.aliyuncs.com –uuserName -p dbName < /tmp/dbName.sql
其中
example.mysql.rds.aliyuncs.com:RDS實例連接地址;
user_name 以您真實的RDS數據庫用戶代替
db_name 以您真實的RDS數據庫名代替
/tmp/db_name.sql是剛纔前面您導出的數據文件名稱
7、遠程登錄到雲服務器,將剛纔上傳的存儲過程文件(包含存儲過程、觸發器和函數,若沒有則請跳過此步)導入到已購買的RDS實例中。具體命令如下:
mysql -h example.mysql.rds.aliyuncs.com -u userName -p dbName < /tmp/triggerProcedure.sql
其中
example.mysql.rds.aliyuncs.com:RDS實例連接地址;
user_name 以您真實的RDS數據庫用戶代替
db_name 以您真實的RDS數據庫名代替
/tmp/trigger_procedure.sql是剛纔前面您導出的存儲過程文件名稱
至此數據遷移完畢,可以對RDS正常使用。用戶可使用數據庫客戶端工具(如MySQL-Front)或第三方數據庫管理工具(如phpmyadmin)以及程序的方式,通過域名和端口號連接數據庫,在輸入正確的用戶名和密碼後即可登錄DB進行操作和開發。
此篇文章由阿里雲整理,我轉發歡迎添加大臉貓qq:203833507