덤프 및 복원을 사용하여 MySQL Database를 MySQL용 Azure 데이터베이스로 마이그레이션Migrate your MySQL database to Azure Database for MySQL using dump and restore

적용 대상: Azure Database for MySQL-단일 서버 Azure Database for MySQL-유연한 서버

이 문서에서는 MySQL용 Azure Database에서 데이터베이스를 백업 및 복원하는 2가지 일반적인 방법에 대해 설명합니다.This article explains two common ways to back up and restore databases in your Azure Database for MySQL

  • 명령줄에서 덤프 및 복원(mysqldump 사용)Dump and restore from the command-line (using mysqldump)
  • PHPMyAdmin을 사용하여 덤프 및 복원Dump and restore using PHPMyAdmin

시작하기 전에Before you begin

이 방법 가이드를 단계별로 실행하려면 다음이 필요합니다.To step through this how-to guide, you need to have:

데이터베이스 크기가 1tb 이상인 대량 데이터베이스를 마이그레이션하려면 병렬 내보내기 및 가져오기를 지 원하는 mydumper/myloader 와 같은 커뮤니티 도구를 사용 하는 것이 좋습니다.If you are looking to migrate large databases with database sizes more than 1 TBs, you may want to consider using community tools like mydumper/myloader which supports parallel export and import. 대량 MySQL 데이터베이스를 마이그레이션하는 방법에 대해 알아봅니다.Learn How to migrate large MySQL databases.

덤프 및 복원에 대 한 일반적인 사용 사례Common use-cases for dump and restore

몇 가지 일반적인 시나리오에서 mysqldumpMysqlpump 와 같은 MySQL 유틸리티를 사용 하 여 데이터베이스를 Azure MySQL 데이터베이스로 덤프 하 고 로드할 수 있습니다.You may use MySQL utilities such as mysqldump and mysqlpump to dump and load databases into an Azure MySQL Database in several common scenarios. 다른 시나리오에서 대신 가져오기 및 내보내기 방법을 사용할 수 있습니다.In other scenarios, you may use the Import and Export approach instead.

  • 전체 데이터베이스를 마이그레이션할 때 데이터베이스 덤프를 사용합니다.Use database dumps when you are migrating the entire database. 이 권장 사항은 많은 양의 MySQL 데이터를 이동하거나 실시간 사이트 또는 애플리케이션에 대한 서비스 중단을 최소화하려는 경우 유지합니다.This recommendation holds when moving a large amount of MySQL data, or when you want to minimize service interruption for live sites or applications.

  • 데이터베이스의 모든 테이블이 InnoDB 저장소 엔진을 사용 하는 경우 데이터베이스 덤프를 사용합니다.Use database dump if all the tables in the database use the InnoDB storage engine. Azure Database for MySQL은 InnoDB 스토리지 엔진만을 지원하므로 대체 스토리지 엔진을 지원하지 않습니다.Azure Database for MySQL supports only InnoDB Storage engine, and therefore does not support alternative storage engines. 테이블이 다른 스토리지 엔진으로 구성된 경우 Azure Database for MySQL로 마이그레이션 전에 InnoDB 엔진 형식으로 변환합니다.If your tables are configured with other storage engines, convert them into the InnoDB engine format before migration to Azure Database for MySQL.

    예를 들어 MyISAM 테이블을 사용하는 WordPress 또는 WebApp이 있는 경우 Azure Database for MySQL로 복원하기 전에 InnoDB 형식으로 마이그레이션하여 먼저 해당 테이블을 변환합니다.For example, if you have a WordPress or WebApp using the MyISAM tables, first convert those tables by migrating into InnoDB format before restoring to Azure Database for MySQL. ENGINE=InnoDB 절을 사용하여 새 테이블을 만들 때 사용되는 엔진을 설정한 다음 복원 전에 데이터를 호환되는 테이블로 전송합니다.Use the clause ENGINE=InnoDB to set the engine used when creating a new table, then transfer the data into the compatible table before the restore.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

중요

  • 호환성 문제를 방지하려면 데이터베이스를 덤프할 때 동일한 버전의 MySQL이 원본 및 대상 시스템에서 사용되도록 합니다.To avoid any compatibility issues, ensure the same version of MySQL is used on the source and destination systems when dumping databases. 예를 들어 기존 MySQL 서버가 버전 5.7이면 버전 5.7을 수행하도록 구성된 Azure Database for MySQL로 마이그레이션해야 합니다.For example, if your existing MySQL server is version 5.7, then you should migrate to Azure Database for MySQL configured to run version 5.7. mysql_upgrade 명령은 Azure Database for MySQL 서버에서 작동하지 않으며 지원되지 않습니다.The mysql_upgrade command does not function in an Azure Database for MySQL server, and is not supported.
  • MySQL 버전 간에 업그레이드해야 하는 경우 먼저 사용자 환경에서 낮은 버전의 데이터베이스를 더 높은 버전의 MySQL로 덤프하거나 내보냅니다.If you need to upgrade across MySQL versions, first dump or export your lower version database into a higher version of MySQL in your own environment. 그런 다음 Azure Database for MySQL로 마이그레이션을 시도하기 전에 mysql_upgrade를 실행합니다.Then run mysql_upgrade, before attempting migration into an Azure Database for MySQL.

성능 고려 사항Performance considerations

성능을 최적화하려면 큰 데이터베이스를 덤프할 때 이러한 고려 사항을 숙지합니다.To optimize performance, take notice of these considerations when dumping large databases:

  • 데이터베이스를 덤프할 때 mysqldump에서 exclude-triggers 옵션을 사용합니다.Use the exclude-triggers option in mysqldump when dumping databases. 데이터 복원 중 발생하는 트리거 명령을 방지하기 위해 덤프 파일에서 트리거를 제외합니다.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • single-transaction 옵션을 사용하여 트랜잭션 격리 모드를 REPEATABLE READ로 설정하고 데이터를 덤프하기 전에 START TRANSACTION SQL 문을 서버로 보냅니다.Use the single-transaction option to set the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. 단일 트랜잭션 내에서 많은 테이블을 덤프하면 복원 중 스토리지가 추가로 소비됩니다.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. LOCK TABLES는 보류 중인 트랜잭션을 암시적으로 커밋되도록 하기 때문에 single-transaction 옵션과 lock-tables 옵션은 상호 배타적입니다.The single-transaction option and the lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly. 대형 테이블을 덤프하려면 single-transaction 옵션을 quick 옵션과 결합합니다.To dump large tables, combine the single-transaction option with the quick option.
  • 여러 VALUE 목록을 포함하는 extended-insert 여러 행 구문을 사용합니다.Use the extended-insert multiple-row syntax that includes several VALUE lists. 그러면 덤프 파일이 작아지고 파일을 다시 로드할 때 삽입 속도가 빨라집니다.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • 데이터가 기본 키 순서로 스크립팅되도록 데이터베이스를 덤프할 때 mysqldump에서 order-by-primary 옵션을 사용합니다.Use the order-by-primary option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • 로드 전에 외래 키 제약 조건을 비활성화하려면 데이터를 덤프할 때 mysqldump에서 disable-keys 옵션을 사용합니다.Use the disable-keys option in mysqldump when dumping data, to disable foreign key constraints before load. 외래 키 검사 비활성화는 성능 향상을 제공합니다.Disabling foreign key checks provides performance gains. 제약 조건을 활성화하고 참조 무결성을 확인하도록 로드 후 데이터를 확인합니다.Enable the constraints and verify the data after the load to ensure referential integrity.
  • 적절한 경우 분할된 테이블을 사용합니다.Use partitioned tables when appropriate.
  • 병렬로 데이터를 로드합니다.Load data in parallel. 리소스 제한에 도달하도록 하는 너무 많은 병렬 처리를 피하고 Azure Portal에서 사용할 수 있는 메트릭을 사용하여 리소스를 모니터링합니다.Avoid too much parallelism that would cause you to hit a resource limit, and monitor resources using the metrics available in the Azure portal.
  • 테이블 데이터가 로드된 후 인덱스 생성이 발생하도록 데이터베이스를 덤프할 때 mysqlpump에서 defer-table-indexes 옵션을 사용합니다.Use the defer-table-indexes option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.
  • mysqlpump의 skip-definer 옵션을 사용하여 뷰 및 저장 프로시저에 대한 create 문에서 definer 및 SQL SECURITY 절을 생략합니다.Use the skip-definer option in mysqlpump to omit definer and SQL SECURITY clauses from the create statements for views and stored procedures. 덤프 파일을 다시 로드하면 기본 DEFINER 및 SQL SECURITY 값을 사용하는 개체가 생성됩니다.When you reload the dump file, it creates objects that use the default DEFINER and SQL SECURITY values.
  • Azure blob/저장소에 백업 파일을 복사하고, 인터넷을 통해 복원을 수행할 때보다 훨씬 더 빨리 수행할 수 있는 위치에서 복원을 수행합니다.Copy the backup files to an Azure blob/store and perform the restore from there, which should be a lot faster than performing the restore across the Internet.

대상 Azure Database for MySQL 서버에서 데이터베이스 만들기Create a database on the target Azure Database for MySQL server

데이터를 마이그레이션하려는 대상 Azure Database for MySQL 서버에서 빈 데이터베이스를 만듭니다.Create an empty database on the target Azure Database for MySQL server where you want to migrate the data. MySQL 워크 벤치 또는 mysql.exe와 같은 도구를 사용 하 여 데이터베이스를 만듭니다.Use a tool such as MySQL Workbench or mysql.exe to create the database. 이 데이터베이스는 덤프된 데이터를 포함하는 데이터베이스와 이름이 같을 수 있고 다른 이름의 데이터베이스를 만들 수도 있습니다.The database can have the same name as the database that is contained the dumped data or you can create a database with a different name.

연결하려면 Azure Database for MySQL의 개요에서 연결 정보를 찾습니다.To get connected, locate the connection information in the Overview of your Azure Database for MySQL.

Azure Portal에서 연결 정보 찾기

MySQL Workbench에 연결 정보를 추가합니다.Add the connection information into your MySQL Workbench.

MySQL Workbench 연결 문자열

빠른 데이터 로드를 위해 대상 Azure Database for MySQL 서버 준비Preparing the target Azure Database for MySQL server for fast data loads

더 빠른 데이터 로드를 위해 대상 Azure Database for MySQL 서버를 준비하려면 다음 서버 매개 변수 및 구성을 변경해야 합니다.To prepare the target Azure Database for MySQL server for faster data loads, the following server parameters and configuration needs to be changed.

  • max_allowed_packet – 긴 행으로 인한 오버플로 문제를 방지하기 위해 1073741824(예: 1GB)로 설정합니다.max_allowed_packet – set to 1073741824 (i.e. 1GB) to prevent any overflow issue due to long rows.
  • slow_query_log – 저속 쿼리 로그를 해제하려면 OFF로 설정합니다.slow_query_log – set to OFF to turn off the slow query log. 이렇게 하면 데이터 로드 중 느린 쿼리 로깅으로 인한 오버헤드가 제거됩니다.This will eliminate the overhead caused by slow query logging during data loads.
  • query_store_capture_mode – 쿼리 저장소 해제 하려면 없음으로 설정 합니다.query_store_capture_mode – set to NONE to turn off the Query Store. 이렇게 하면 쿼리 저장소의 샘플링 작업으로 인한 오버헤드가 제거됩니다.This will eliminate the overhead caused by sampling activities by Query Store.
  • innodb_buffer_pool_size – 마이그레이션 중에 포털의 가격 책정 계층에서 서버를 32개의 vCore 메모리 최적화 SKU로 확장하여 innodb_buffer_pool_size를 늘립니다.innodb_buffer_pool_size – Scale up the server to 32 vCore Memory Optimized SKU from the Pricing tier of the portal during migration to increase the innodb_buffer_pool_size. Innodb_buffer_pool_size는 Azure Database for MySQL 서버에 대한 컴퓨팅을 확장해야만 늘릴 수 있습니다.Innodb_buffer_pool_size can only be increased by scaling up compute for Azure Database for MySQL server.
  • innodb_io_capacity & innodb_io_capacity_max-Azure Portal의 서버 매개 변수에서 9000로 변경 하 여 마이그레이션 속도를 최적화 하기 위해 IO 사용률을 향상 시킵니다.innodb_io_capacity & innodb_io_capacity_max - Change to 9000 from the Server parameters in Azure portal to improve the IO utilization to optimize for migration speed.
  • innodb_write_io_threads & innodb_write_io_threads-마이그레이션의 속도를 개선 하기 위해 Azure Portal의 서버 매개 변수에서 4로 변경 합니다.innodb_write_io_threads & innodb_write_io_threads - Change to 4 from the Server parameters in Azure portal to improve the speed of migration.
  • 스토리지 계층 스케일 업 – 스토리지 계층이 증가함에 따라 Azure Database for MySQL 서버의 IOP가 점진적으로 증가합니다.Scale up Storage tier – The IOPs for Azure Database for MySQL server increases progressively with the increase in storage tier. 더 빠른 로드를 위해 스토리지 계층을 늘려 프로비저닝된 IOP를 늘릴 수 있습니다.For faster loads, you may want to increase the storage tier to increase the IOPs provisioned. 스토리지는 축소할 수 없고 확장만 할 수 있습니다.Please do remember the storage can only be scaled up, not down.

마이그레이션이 완료되면 서버 매개 변수 및 컴퓨팅 계층 구성을 이전 값으로 되돌릴 수 있습니다.Once the migration is completed, you can revert back the server parameters and compute tier configuration to its previous values.

Mysqldump 유틸리티를 사용 하 여 덤프 및 복원Dump and restore using mysqldump utility

mysqldump를 사용하여 명령줄에서 백업 파일 만들기Create a backup file from the command-line using mysqldump

로컬 온-프레미스 서버 또는 가상 머신에 기존 MySQL 데이터베이스를 백업하려면 다음 명령을 실행합니다.To back up an existing MySQL database on the local on-premises server or in a virtual machine, run the following command:

$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

제공할 매개 변수:The parameters to provide are:

  • [uname] 데이터베이스 사용자 이름[uname] Your database username
  • [pass] 데이터베이스에 대한 암호(-p와 암호 사이를 띄어쓰지 말 것)[pass] The password for your database (note there is no space between -p and the password)
  • [dbname] 데이터베이스의 이름[dbname] The name of your database
  • [backupfile.sql] 데이터베이스 백업의 파일 이름[backupfile.sql] The filename for your database backup
  • [-opt] mysqldump 옵션[--opt] The mysqldump option

예를 들어 사용자 이름이 'testuser'이고 암호가 없는 'testdb'라는 MySQL 서버의 데이터베이스를 파일 testdb_backup.sql에 백업하려면 다음 명령을 사용합니다.For example, to back up a database named 'testdb' on your MySQL server with the username 'testuser' and with no password to a file testdb_backup.sql, use the following command. 명령은 데이터베이스를 다시 만드는 데 필요한 모든 SQL 문을 포함하는 testdb_backup.sql이라는 파일로 testdb 데이터베이스를 백업합니다.The command backs up the testdb database into a file called testdb_backup.sql, which contains all the SQL statements needed to re-create the database. 사용자 이름 ' testuser '에 적어도 덤프 된 테이블에 대 한 SELECT 권한이 있는지 확인 하 고, 덤프 된 뷰에 대 한 뷰를 표시 하 고, 덤프 된 트리거의 트리거를 사용 하 고,--단일 트랜잭션 옵션이 사용 되지 않는 경우 테이블을 잠급니다.Make sure that the username 'testuser' has at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, and LOCK TABLES if the --single-transaction option is not used.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

이제 mysqldump을 실행 하 여 데이터베이스의 백업을 만듭니다. testdbNow run mysqldump to create the backup of testdb database

$ mysqldump -u root -p testdb > testdb_backup.sql

백업할 데이터베이스의 특정 테이블을 선택하려면 테이블 이름을 공백으로 구분해서 나열합니다.To select specific tables in your database to back up, list the table names separated by spaces. 예를 들어 'testdb'에서 table1 및 table2 테이블만 백업하려면 다음 예제를 따릅니다.For example, to back up only table1 and table2 tables from the 'testdb', follow this example:

$ mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

한 번에 둘 이상의 데이터베이스를 백업하려면 --database 스위치를 사용하고 데이터베이스 이름을 공백으로 구분합니다.To back up more than one database at once, use the --database switch and list the database names separated by spaces.

$ mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

명령줄 또는 MySQL Workbench를 사용하여 MySQL 데이터베이스 복원Restore your MySQL database using command-line or MySQL Workbench

대상 데이터베이스를 만든 후에는 mysql 명령 또는 MySQL Workbench를 사용하여 덤프 파일에서 새로 만든 특정 데이터베이스로 데이터를 복원할 수 있습니다.Once you have created the target database, you can use the mysql command or MySQL Workbench to restore the data into the specific newly created database from the dump file.

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

이 예제에서는 대상 Azure Database for MySQL 서버의 새로 만든 데이터베이스로 데이터를 복원합니다.In this example, restore the data into the newly created database on the target Azure Database for MySQL server.

단일 서버 에 대해이 mysql 을 사용 하는 방법에 대 한 예제는 다음과 같습니다.Here is an example for how to use this mysql for Single Server :

$ mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

유연한 서버 에이 mysql 을 사용 하는 방법에 대 한 예제는 다음과 같습니다.Here is an example for how to use this mysql for Flexible Server :

$ mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

PHPMyAdmin을 사용하여 덤프 및 복원Dump and restore using PHPMyAdmin

PHPMyadmin를 사용 하 여 데이터베이스를 덤프 및 복원 하려면 다음 단계를 수행 합니다.Follow these steps to dump and restore a database using PHPMyadmin.

참고

단일 서버의 경우 사용자 이름은 ' ' 형식 이어야 username@servername 하지만 유연한 서버에서는 ' '를 사용 하 여 유연한 서버에 대해 ' 사용자 이름 '을 사용할 수 있습니다 .이 경우에는 username@servername 연결이 실패 합니다.For single server, the username must be in this format , 'username@servername' but for flexible server you can just use 'username' If you use 'username@servername' for flexible server, the connection will fail.

PHPMyadmin를 사용 하 여 내보내기Export with PHPMyadmin

내보내려면 환경에 로컬로 이미 설치했을 수 있는 일반 도구 phpMyAdmin을 사용할 수 있습니다.To export, you can use the common tool phpMyAdmin, which you may already have installed locally in your environment. PHPMyAdmin을 사용하여 MySQL 데이터베이스를 내보내려면To export your MySQL database using PHPMyAdmin:

  1. phpMyAdmin을 엽니다.Open phpMyAdmin.
  2. 데이터베이스를 선택합니다.Select your database. 왼쪽 목록에서 데이터베이스 이름을 클릭합니다.Click the database name in the list on the left.
  3. 내보내기 링크를 클릭합니다.Click the Export link. 데이터베이스의 덤프를 보는 새 페이지가 나타납니다.A new page appears to view the dump of database.
  4. 내보내기 영역에서 모두 선택 링크를 클릭하여 데이터베이스의 테이블을 선택합니다.In the Export area, click the Select All link to choose the tables in your database.
  5. SQL 옵션 영역에서 적절한 옵션을 클릭합니다.In the SQL options area, click the appropriate options.
  6. 파일로 저장 옵션 및 해당 압축 옵션을 클릭하고 이동 단추를 클릭합니다.Click the Save as file option and the corresponding compression option and then click the Go button. 파일을 로컬로 저장할지 묻는 대화 상자가 나타납니다.A dialog box should appear prompting you to save the file locally.

PHPMyAdmin을 사용하여 가져오기Import using PHPMyAdmin

데이터베이스 가져오기는 내보내기와 비슷합니다.Importing your database is similar to exporting. 다음 작업을 수행합니다.Do the following actions:

  1. phpMyAdmin을 엽니다.Open phpMyAdmin.
  2. phpMyAdmin 설치 페이지에서 추가를 클릭하여 Azure Database for MySQL 서버를 추가합니다.In the phpMyAdmin setup page, click Add to add your Azure Database for MySQL server. 연결 정보 및 로그인 정보를 제공합니다.Provide the connection details and login information.
  3. 적절하게 명명된 데이터베이스를 만들고 화면 왼쪽에서 선택합니다.Create an appropriately named database and select it on the left of the screen. 기존 데이터베이스를 다시 작성하려면 데이터베이스 이름을 클릭하고 테이블 이름 옆에 있는 모든 확인란을 선택하고 삭제를 선택하여 기존 테이블을 삭제합니다.To rewrite the existing database, click the database name, select all the check boxes beside the table names, and select Drop to delete the existing tables.
  4. SQL 링크를 클릭하여 SQL 명령을 입력하거나 SQL 파일을 업로드할 수 있는 페이지를 표시합니다.Click the SQL link to show the page where you can type in SQL commands, or upload your SQL file.
  5. 찾아보기 단추를 사용하여 데이터베이스 파일을 찾습니다.Use the browse button to find the database file.
  6. 이동 단추를 클릭하여 백업을 내보내고 SQL 명령을 실행하고, 데이터베이스를 다시 만듭니다.Click the Go button to export the backup, execute the SQL commands, and re-create your database.

알려진 문제Known Issues

알려진 문제, 팁과 요령을 보려면 techcommunity 블로그를 확인하는 것이 좋습니다.For known issues, tips and tricks, we recommend you to look at our techcommunity blog.

다음 단계Next steps