데이터 마이그레이션은 온-프레미스 환경에서 Azure Database for MySQL로 MySQL 데이터베이스를 이동하는 데 중요합니다. 이 문서에서는 마이그레이션을 간소화하는 강력한 도구인 MySQL Workbench를 사용하는 방법에 중점을 둡니다. MySQL Workbench를 사용하면 가동 중지 시간을 최소화하고 데이터 무결성을 보장하면서 데이터를 효율적으로 전송할 수 있습니다. 이 가이드에서는 MySQL Workbench를 사용하여 데이터 마이그레이션을 설정하고 실행하는 단계별 프로세스를 안내하며, 피해야 할 모범 사례 및 잠재적 문제를 강조 표시합니다. 이 문서에서는 다정한 데이터베이스 관리자이든 데이터베이스 마이그레이션을 새로 사용하든 간에 Azure로 원활하게 성공적으로 마이그레이션하는 데 필요한 인사이트와 기술을 제공합니다.
필수 조건
MySQL 온-프레미스를 Azure Database for MySQL로 마이그레이션: 데이터 마이그레이션
설정
설치 가이드의 모든 단계에 따라 다음 단계를 지원하는 환경을 만듭니다.
서버 매개 변수 구성(원본)
선택한 마이그레이션 유형(오프라인 및 온라인)에 따라 빠른 데이터 송신을 지원하도록 서버 매개 변수를 수정할지 평가하려고 합니다. 온라인 작업을 수행하는 경우 복제를 수행하고 binlog 데이터를 자체적으로 동기화할 가능성이 있으므로 서버 매개 변수에 대해 아무 작업도 수행할 필요가 없을 수 있습니다. 그러나 오프라인 마이그레이션을 수행하는 경우 애플리케이션 트래픽을 중지하면 서버 매개 변수를 워크로드 지원에서 내보내기 지원으로 전환할 수 있습니다.
서버 매개 변수 구성(대상)
Azure Database for MySQL로의 가져오기 프로세스를 시작하기 전에 서버 매개 변수를 검토합니다. 서버 매개 변수는 Azure Portal을 사용하거나 Azure PowerShell for MySQL cmdlet을 호출하여 변경하는 방식으로 검색하고 설정할 수 있습니다.
다음 PowerShell 스크립트를 실행하여 모든 매개 변수를 가져옵니다.
\[Net.ServicePointManager\]::SecurityProtocol = \[Net.SecurityProtocolType\]::Tls
12
Install-Module -Name Az.MySql
Connect-AzAccount
$rgName = "{RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";
Get-AzMySqlConfiguration -ResourceGroupName $rgName -ServerName $serverName
mysql 도구로 동일한 작업을 수행하려면 CA 루트 인증을 c:\temp로 다운로드합니다(이 디렉터리 만들기).
참고 항목
이 인증서는 변경될 수 있습니다. 최신 인증서 정보에 대해서는 Azure Database for MySQL에 안전하게 연결하기 위한 사용자 애플리케이션의 SSL 연결 구성을 참조하세요.
명령 프롬프트에서 다음을 실행합니다. 토큰을 업데이트해야 합니다.
mysql --host {servername}.mysql.database.azure.com --database mysql --user
{u sername}@{servername} -p --ssl-ca=c:\\temp\\BaltimoreCyberTrustRoot.crt.cer
-A -e "SHOW GLOBAL VARIABLES;" \> c:\\temp\\settings\_azure.txt
새 `settings_azure.txt` 파일에서 부록에 표시된 것처럼 기본 Azure Database for MySQL 서버 매개 변수가 표시될 수 있습니다.
마이그레이션을 지원하려면 더 빠른 수신을 허용하도록 대상 MySQL 인스턴스 매개 변수를 설정합니다. 데이터 마이그레이션을 시작하기 전에 다음 서버 매개 변수를 설정해야 합니다.
max\_allowed\_packet– 긴 행으로 인한 오버플로 문제를 방지하기 위해 매개 변수를1073741824(즉, 1GB) 또는 데이터베이스에 있는 행의 최대 크기로 설정합니다. 끌어오거나 읽어야 하는 큰 BLOB 행이 있는 경우 이 매개 변수를 조정하는 것이 좋습니다.innodb\_buffer\_pool\_size– 마이그레이션 중에 포털의 가격 책정 계층에서 서버를 32 vCore 메모리 최적화 SKU로 스케일 업하여 innodb_buffer_pool_size를 늘립니다. Innodb_buffer_pool_size는 Azure Database for MySQL 서버에 대한 컴퓨팅을 확장해야만 늘릴 수 있습니다. 계층의 최댓값에 대해서는 Azure Database for MySQL의 서버 매개 변수를 참조하세요. 메모리 최적화 32 vCore 시스템의 최댓값은132070244352입니다.innodb\_io\_capacity및innodb\_io\_capacity\_max- 매개 변수를9000으로 변경하여 마이그레이션 속도를 최적화하도록 IO 사용률을 개선합니다.max\_connections- 처리량을 늘리기 위해 다중 스레드를 생성하는 도구를 사용하는 경우 해당 도구를 지원하도록 연결을 늘립니다. 기본값은151이고 최댓값은5000입니다.참고 항목
스케일링을 수행할 때는 주의해야 합니다. 스토리지 스케일링과 같은 일부 작업은 실행 취소할 수 없습니다.
이러한 설정은 아래 Azure PowerShell cmdlet을 사용하여 업데이트할 수 있습니다.
Install-Module -Name Az.MySql
$rgName = " {RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";
Select-AzSubscription -Subscription "{SUBSCRIPTION\_ID}"
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 1073741824
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName
$rgna me -ServerName $serverName -Value 9000
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 9000
\#required if You've functions
Update-AzMySqlConfiguration -Name log\_bin\_trust\_function\_creators
-ResourceGr oupName $rgname -ServerName $serverName -Value ON
데이터
도구 선택
원본 시스템의 데이터베이스 개체 및 사용자를 마이그레이션한 상태에서 마이그레이션을 시작할 수 있습니다. MySQL 버전 8.0에서 실행되는 데이터베이스는 Azure DMS를 사용하여 워크로드를 마이그레이션할 수 없습니다. 대신 마이그레이션 사용자는 MySQL Workbench를 사용해야 합니다.
수동 가져오기 및 내보내기 단계
MySQL Workbench를 열고 로컬 데이터베이스의 루트 사용자로 연결합니다.
**관리**에서 **데이터 내보내기**를 선택합니다. reg_app 스키마를 선택합니다.
내보낼 개체에서 덤프 저장 프로시저 및 함수, 덤프 이벤트 및 덤프 트리거를 선택합니다.
내보내기 옵션에서 자체 포함 파일로 내보내기를 선택합니다.
또한 스키마 만들기 포함 확인란을 선택합니다. 올바른 mysqldump 구성을 확인하려면 아래 이미지를 참조하세요.
Test
이러한 옵션 중 하나가 사용할 수 없는 것으로 표시되면 출력 창에서 이러한 옵션이 차단될 수 있습니다. 편집기 레이아웃만 변경합니다.
Test
내보내기 진행률 탭을 선택합니다.
내보내기 시작을 선택합니다. MySQL Workbench에서
mysqldump도구를 호출합니다.새로 만든 내보내기 스크립트를 엽니다.
DEFINER문을 찾은 후 유효한 사용자로 변경하거나 완전히 제거합니다.
참고 항목
이 작업은 mysqldump 명령에서 --skip-definer를 전달하여 수행할 수 있습니다. 이것은 MySQL Workbench에서 사용할 수 있는 옵션이 아니므로 export 명령에서 줄을 수동으로 제거해야 합니다. 여기서는 제거할 네 가지 항목을 나타내지만, 한 MySQL 버전에서 다른 버전으로 마이그레이션할 때 실패할 수 있는 다른 항목(예: 새 예약어)이 있을 수 있습니다.
SET GLOBAL문을 찾은 후 유효한 사용자로 변경하거나 완전히 제거합니다.sql\_mode가NO\_AUTO\_CREATE\_USER로 설정되지 않았는지 확인합니다.hello\_world함수를 제거합니다.MySQL Workbench에서 Azure Database for MySQL에 대한 새 연결을 만듭니다.
호스트 이름에 대해 전체 서버 DNS(예:
servername.mysql.database.azure.com)를 입력합니다.사용자 이름(예:
sqlroot@servername)을 입력합니다.SSL 탭을 선택합니다.
SSL CA 파일의 경우 BaltimoreCyberTrustRoot.crt.cer 키 파일로 이동합니다.
연결 테스트를 선택하고 연결이 완료되었는지 확인합니다.
확인을 선택합니다.
MySQL 연결 대화 상자가 표시됩니다.
파일->SQL 스크립트 열기를 선택합니다.
덤프 파일을 찾아 열기를 선택합니다.
실행을 선택합니다.
SSL을 지원하도록 애플리케이션 업데이트
Visual Studio Code에서 Java Server API로 전환합니다.
launch.json 파일을 엽니다.
DB_CONNECTION_URL을
jdbc:mysql://serverDNSname:3306/reg\_app?useUnicode=true\&useJDBCCompliantT imezoneShift=true\&useLegacyDatetimeCode=false\&serverTimezone=UTC\&verifySe rverCertificate=true\&useSSL=true\&requireSSL=true\&noAccessToProcedureBodie s=true.로 업데이트합니다. 추가 SSL 매개 변수를 확인합니다.DB_USER_NAME을 conferenceuser@servername으로 업데이트합니다.
디버그 구성을 시작하고 애플리케이션이 새 데이터베이스에서 로컬로 작동하는지 확인합니다.
서버 매개 변수 되돌리기
Azure Database for MySQL 대상 인스턴스에서 다음 매개 변수를 변경할 수 있습니다. 이러한 매개 변수는 Azure Portal을 사용하거나 Azure PowerShell for MySQL cmdlet을 사용하여 설정할 수 있습니다.
$rgName = "YourRGName";
$serverName = "servername";
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 536870912
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName $rgna
me -ServerName $serverName -Value 200
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 2000
Java API에 대한 연결 문자열 변경
- 다음 명령을 사용하여 App Service Java API에 대한 연결 문자열을 변경합니다.
$rgName = "YourRGName";
$app_name = "servername";
az webapp config appsettings set -g $rgName -n $app_name
--settings DB_CONNECTION_URL={DB_CONNECTION_URL}
참고 항목
Portal을 사용하여 연결 문자열을 설정할 수 있습니다.
- App Service API 다시 시작
az webapp restart -g $rgName -n $app\_name
온-프레미스에서 Azure Database for MySQL로의 마이그레이션을 완료했습니다.