IBM Cloud Docs
Databases for MySQL로 마이그레이션

Databases for MySQL로 마이그레이션

기존 MySQL 데이터베이스에서 IBM Cloud® Databases for MySQL로 데이터를 이주하는 두 가지 옵션이 있습니다. 두 가지 옵션( mysqldumpmydumper)을 권장합니다. 최상의 도구는 네트워크 연결, 데이터 세트의 크기 및 중간 스키마 요구사항을 포함하여 특정 조건에 따라 다릅니다.

시작하기 전에

Before starting your data migration, you need MySQL installed locally so you have the mysql and mysqldump tools.

MySQL 워크벤치는 MySQL 서버 및 데이터베이스에 대한 작업을 위한 그래픽 도구도 제공합니다. 엄격하게 필요하지는 않지만 Cloud Databases CLI도 새 Databases for MySQL 배치로 쉽게 연결하고 복원할 수 있습니다.

mysqldump

이 원시 MySQL 클라이언트 유틸리티는 기본적으로 설치되며 실제 데이터 파일을 복사하지 않고 논리적 백업을 수행하여 테이블 구조 및 데이터를 재생할 수 있습니다. mysqldump가 다른 MySQL 서버로의 백업 또는 전송을 위해 하나 이상의 MySQL 데이터베이스를 덤프합니다. 자세한 정보는 mysqldump 문서를 참조하십시오.

mysqldump 은 다음 조건에서 사용하기에 적합합니다.

  • 데이터 세트가 10GB 보다 작습니다.
  • 마이그레이션 시간이 중요하지 않으며 마이그레이션 재시도 비용이 낮습니다.
  • 중간 스키마 또는 데이터 변환을 수행할 필요가 없습니다.

다음 조건이 충족되는 경우에는 mysqldump를 권장하지 않는다.

  • 데이터 세트가 10 GB 보다 큽니다.
  • 소스 데이터베이스와 대상 데이터베이스 간의 네트워크 연결이 불안정하거나 느립니다.

mysqldump 도구를 사용하여 다음 단계를 수행하십시오.

데이터베이스를 재작성하는 데 사용할 수 있는 SQL 파일을 작성하려면 소스 데이터베이스에서 mysqldump 를 실행하십시오. 최소한 CLI를 통한 mysql 마이그레이션에는 다음 인수가 필요합니다.

  • 호스트 이름 (-h 플래그)
  • 포트 번호(-P 플래그)
  • 사용자 이름 (-u 플래그)
  • -- ssl-mode = VERIFY_IDENTITY (클라이언트에는 암호화된 연결이 필요하며 서버 CA 인증서에 대해 검증을 수행하고 인증서의 서버 호스트 이름에 대해 확인해야 합니다.)
  • --ssl-ca(UI에서 개요 페이지의 엔드포인트 CLI 탭에 있는 인증 기관(CA) 파일의 경로 이름입니다.)
  • 데이터베이스 이름
  • 결과 파일(-r 플래그)

CLI 명령은 다음과 같다.

mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql

실행 중에 오류를 추적하는 mysqldump 작업의 로그 파일을 생성하려면 다음과 같은 명령을 사용한다.

mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql

예를 들어, 가져오는 동안에도 동일한 작업을 수행할 수 있습니다.

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log

GTID (Global Transaction Identifiers) 와 함께 MySQL 복제를 사용하는 방법에 대한 자세한 정보는 MySQL 참조 매뉴얼의 장애 복구 및 확장에 GTID 사용하기 를 참조하십시오.

mysql 명령에는 많은 옵션이 있습니다. 공식 문서를 참조하다.명령 참조 는 기능의 완전한 보기를 위한 것입니다.

mysqldump의 출력 복원

그러면 mysqldump의 결과 출력을 새 Databases for MySQL 배치에 업로드할 수 있습니다. 출력은 SQL이므로 간단하게 mysql 명령을 통해 데이터베이스로 전송할 수 있습니다. admin 사용자로 가져오기를 수행하는 것이 좋습니다.

mysql를 사용하여 admin으로 연결하는 방법에 대한 세부사항은 mysql 에 연결 문서를 참조하십시오. mysql 명령을 사용하여 연결하려면 관리 사용자의 연결 문자열과 TLS 인증서가 필요하며 둘 다 UI에서 찾을 수 있습니다. 인증서가 base64에서 디코딩되고 임의 로컬 파일로 저장되어야 합니다. 이전에 작성된 dump.sql 항목을 이름이 example-mysql인 데이터베이스 배치에 가져오려면 mysql 명령을 매개변수로 -f dump.sql에 함께 호출할 수 있습니다. 매개변수는 mysql 에 파일의 SQL문을 읽고 실행하도록 지시합니다.

mysql에 연결 문서에 언급된 대로 Cloud Databases CLI 플러그인은 연결을 단순화합니다. 이전 mysql 가져오기는 다음과 같은 명령을 사용하여 실행할 수 있습니다.

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql

사용자가 지정되지 않은 경우 명령은 자동으로 관리 사용자를 사용하고 비밀번호를 대화식으로 프롬프트합니다. TLS 인증서가 자동으로 검색되고 사용됩니다.

복원 프로세스가 실행 중인 동안 데이터베이스 배치 변경사항과 관련하여 많은 메시지가 생성됩니다.

mydumper

mydumper 및 페어링된 논리 백업 도구 myloader는 mysqldump와 유사하게 데이터 마이그레이션을 수행하기 위해 멀티스레딩 기능을 사용하지만 mydumper는 병렬 백업, 일관된 읽기와 같은 다수의 개선사항을 제공하고 출력을 더 쉽게 관리합니다. 병렬 처리는 가져오기 및 내보내기 프로세스 중에 더 나은 성능을 제공하는 반면, 개별 테이블이 별도의 파일로 덤프되므로 출력을 더 쉽게 관리할 수 있습니다.

mydumper는 다음과 같은 조건에서 사용하기에 적합합니다.

  • 데이터 세트가 10GB보다 큽니다.
  • 소스 데이터베이스와 대상 데이터베이스 간의 네트워크 연결이 빠르고 안정적입니다.
  • 중간 스키마 또는 데이터 변환을 수행해야 합니다.

다음 조건이 충족되는 경우 mydumper 사용은 권장되지 않습니다.

  • 데이터 세트가 10 GB 보다 작습니다.
  • 소스 데이터베이스와 대상 데이터베이스 간의 네트워크 연결이 불안정하거나 매우 느립니다.

mydumper를 사용하여 데이터 마이그레이션을 시작하기 전에 먼저 mydumper 프로젝트를 참조하여 설치 및 필요한 개발자 환경에 대한 세부사항 및 단계별 지시사항을 확인하십시오.

다음으로, mydumper 및 myloader 도구를 사용하여 전체 데이터 마이그레이션을 수행에 대한 정보는 mydumper를 사용하는 방법 페이지를 참조하십시오.

InnoDB 구성 가능한 변수 조정

시스템 용량 및 데이터베이스 워크로드를 기반으로 성능을 조정하기 위해 다음 MySQL InnoDB 옵션을 구성할 수 있습니다.

innodb_buffer_pool_size_percentage

  • 설명: innodb_buffer_pool_size_percentage value 매개변수는 데이터베이스 컨테이너의 전용 메모리 양을 정의합니다.
  • 기본 설정: 50
  • 최대: 100
  • 최소값: 10
  • 다시 시작 필요: True

데이터베이스 자체가 지정된 양의 메모리를 사용하므로 innodb_buffer_pool_size_percentage value 매개변수가 너무 높게 구성되면 데이터베이스 메모리 요구사항 + innodb_buffer_pool_size_percentage 항목이 사용 가능한 메모리 한계보다 높게 되어 메모리 부족 상태(OOM)가 발생할 수 있습니다.

innodb_buffer_pool_size_percentage 매개변수 값은 데이터베이스의 크기에 따라 다릅니다. 기본값은 50%입니다. 이 값은 모든 크기의 데이터베이스에 안전합니다. 필요에 따라 값을 구성하십시오. OOM이 발생하면 값이 너무 높게 설정되어 값을 낮추어야 합니다.

innodb_flush_log_at_trx_commit

  • 설명: 커미트 조작에 대한 엄격한 ACID 준수와 높은 성능 간의 균형을 제어합니다.

  • 기본 설정: 2

기본 설정 2는 완전한 ACID 호환이 아니지만(기본 설정 1은 전체 ACID 준수에 필요함) 더 성능이 좋으며 여전히 안전합니다.

  • 최대: 2
  • 최소값: 0
  • 다시 시작 필요: False

자세한 정보는 MySQL 무고한 log_ush_log_at_trx_commit 문서의 내용을 참조하십시오.

innodb_log_buffer_size

  • 설명: InnoDB가 디스크의 로그 파일에 쓰기 위해 사용하는 버퍼의 크기(바이트)입니다.
  • 기본 설정: 32 MiB
  • 최대: 4294967295
  • 최소: 1048576
  • 다시 시작 필요: True

자세한 정보는 MySQL 무고한 log_buffer_size 문서의 내용을 참조하십시오.

innodb_log_file_size

  • 설명: InnoDB 로그 파일 크기(바이트)입니다.
  • 기본 설정: 64MB
  • 최대: 274877906900
  • 최소: 4194304
  • 다시 시작 필요: True

자세한 정보는 MySQL 무고한 log_file_size 문서의 내용을 참조하십시오.

innodb_lru_scan_depth

  • 설명: InnoDB 버퍼 풀에 대한 플러시 조작을 위한 알고리즘 및 휴리스틱스에 영향을 주는 매개변수입니다.
  • 기본 설정: 1024
  • 최대: 최대 값 없음
  • 최소: 100
  • 다시 시작 필요: True

자세한 정보는 MySQL 무고한 lru_scan_depth 문서의 내용을 참조하십시오.

innodb_read_io_threads

  • 설명: InnoDB에서 읽기 조작을 위한 I/O 스레드 수입니다.
  • 기본 설정: 4
  • 최대: 64
  • 최소: 1
  • 다시 시작 필요: True

자세한 정보는 MySQL 무해 read_io_threads 문서의 내용을 참조하십시오.

innodb_write_io_threads

  • 설명: InnoDB에서 읽기 조작을 위한 I/O 스레드 수입니다.
  • 기본 설정: 4
  • 최대: 64
  • 최소: 1
  • 다시 시작 필요: True

자세한 정보는 MySQL 무고한 write_io_threads 문서의 내용을 참조하십시오.

net_read_timeout

  • 설명: 읽기를 중단하기 전에 연결에서 추가 데이터를 기다리는 시간(초)입니다.
  • 기본 설정: 30
  • 최대:
  • 최소: 1
  • 다시 시작 필요: True

자세한 정보는 MySQL net_read_timeout 문서의 내용을 참조하십시오.

net_write_timeout

  • 설명: 쓰기를 중단하기 전에 블록이 연결에 기록될 때까지 대기하는 시간(초)입니다.
  • 기본 설정: 60
  • 최대:
  • 최소: 1
  • 다시 시작 필요: True

자세한 정보는 net_write_timeout 문서의 내용을 참조하십시오.