1. 程式人生 > >mysql資料遷移記錄

mysql資料遷移記錄

       公司在阿里雲上購買了兩臺mysql伺服器,其中一臺之前為了簡單測試,只買了低配的3個月,因為即將到期需要將上面的測試庫遷移到另一臺。

        阿里直接就提供了資料遷移的功能,好開心,按照指引一步步配置完就好了。然後問題來了。

        1)RDS中必須建立高許可權賬號,下文稱此為管理員賬號,否則無法進行相關的操作,而且遷移時只是遷移了庫表及資料,儲存過程等並未被遷移。

       2)後續做增量遷移是需要收費的,雖然費用很低,但是速度很慢。

       由於增量遷移的速度太慢,且儲存過程也無法遷移,於是想到了navicat中的同步工具,很快的資料和儲存過程都同步好了,然後問題又來了。

       為了保證安全等原因,並未對所有成員公開管理員賬號,建立了一個新的使用者,賦予相關的許可權供正常開發測試使用,下文稱測試賬號,資料全部遷移完畢後用測試賬戶測試後,發現所有儲存過程都無權訪問,管理員賬號已經賦予了測試賬號相關許可權了,還是無法訪問。錯誤如下:

Java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted.......

      開始查詢資料,發現大家都說JDBC在呼叫儲存過程時不僅要有execute的許可權,還需要對mysql.proc具有訪問許可權,否則她無法訪問metadata。選用如下方式解決:

       grant select on mysql.proc to '測試賬戶'@'%'

       但是管理員並沒有這樣grant的許可權。

       檢視阿里雲關於高許可權賬戶的文件,發現只支援部分grant命令。

       無意中看到有人說不要用高許可權賬號建立庫表及儲存過程,否則可能造成其他使用者無法訪問。

       原來這才是問題的癥結所在。

       建立測試賬戶後,賦予相關許可權,然後將資料遷移的操作在測試賬戶下進行即可。

        寫的真囉嗦。其實就是一個小問題而已。