

# 외부 MariaDB 데이터베이스에서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기
<a name="mariadb-importing-data-external-database"></a>

기존 MariaDB 데이터베이스에서 RDS for MariaDB DB 인스턴스로 데이터를 가져올 수 있습니다. 이렇게 하려면 [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 또는 [mariadb-dump](https://mariadb.com/kb/en/mariadb-dump/)를 사용하여 데이터베이스를 복사하고 RDS for MariaDB 인스턴스에 바로 파이핑합니다. `mysqldump` 또는 `mariadb-dump` 명령줄 유틸리티는 한 MariaDB 서버에서 다른 MariaDB 서버로 데이터를 전송하고 백업본을 만드는 데 흔히 사용됩니다. 이 유틸리티는 MariaDB 클라이언트 소프트웨어와 함께 포함되어 있습니다.

MariaDB 11.0.1부터 `mysqldump` 대신 `mariadb-dump`를 사용해야 합니다.

외부 데이터베이스에서 Amazon RDS DB 인스턴스로 데이터를 이동하는 일반적인 `mysqldump` 명령은 다음 예와 같습니다. 값을 실제 정보로 바꿉니다. MariaDB 11.0.1 이상 버전의 경우 `mysqldump`를 `mariadb-dump`로 교체하세요.

```
mysqldump -u local_user \
    --databases database_name \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mariadb -u RDS_user \
        --port=port_number \
        --host=host_name \
        -pRDS_password
```

**중요**  
`-p` 옵션과 입력한 암호 사이에 공백이 없어야 합니다.  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.

다음 권장 사항과 고려 사항을 잘 파악하고 있어야 합니다.
+ 덤프 파일에서 다음 스키마를 제외합니다.
  + `sys`
  + `performance_schema`
  + `information_schema`

  `mysqldump` 및 `mariadb-dump` 유틸리티는 기본적으로 이러한 스키마를 제외합니다.
+ 사용자 및 권한을 마이그레이션해야 하는 경우 이를 다시 생성하는 데이터 제어 언어(DCL)를 생성하는 도구 사용을 고려합니다. 예를 들어 [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html) 유틸리티가 있습니다.
+ 가져오기를 수행하려면 사용자가 DB 인스턴스에 액세스할 수 있어야 합니다. 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 섹션을 참조하세요.

사용되는 파라미터는 다음과 같습니다.
+ `-u local_user` – 사용자 이름을 지정하기 위해 사용합니다. 이 파라미터를 처음 사용할 때, 로컬 MariaDB 데이터베이스에서 `--databases` 파라미터로 식별되는 사용자 계정 이름을 지정합니다.
+ `--databases database_name` – 로컬 MariaDB 인스턴스에서 Amazon RDS로 가져오려는 데이터베이스 이름을 지정합니다.
+ `--single-transaction` – 로컬 데이터베이스에서 로드한 모든 데이터가 단일 시점에서 일치하는지 확인하기 위해 사용합니다. `mysqldump` 또는 `mariadb-dump`가 데이터를 읽는 동안 데이터를 변경하는 다른 프로세스가 있는 경우, 이 파라미터를 사용하여 데이터 무결성을 유지합니다.
+ `--compress` – 데이터를 Amazon RDS로 전송하기 전에 로컬 데이터베이스에서 데이터를 압축하여 네트워크 대역폭 사용을 줄이기 위해 사용합니다.
+ `--order-by-primary` – 기본 키를 기준으로 각 테이블의 데이터를 정렬하여 로드 시간을 줄이기 위해 사용합니다.
+ `--routines` - 복사하려는 데이터베이스에 저장 프로시저 또는 함수와 같은 루틴이 있는 경우 사용합니다. 파라미터를 `0`으로 설정하면 가져오기 프로세스 중에 루틴이 제외됩니다. 그런 다음 나중에 Amazon RDS 데이터베이스에서 루틴을 수동으로 다시 만듭니다.
+ `--triggers` - 복사 중인 데이터베이스에 트리거가 있는 경우 사용합니다. 파라미터를 `0`으로 설정하면 가져오기 프로세스 중에 트리거가 제외됩니다. 그런 다음 Amazon RDS 데이터베이스에서 트리거를 수동으로 다시 만듭니다.
+ `--events` - 복사하려는 데이터베이스에 이벤트가 있는 경우 사용합니다. 파라미터를 `0`으로 설정하면 가져오기 프로세스 중에 이벤트가 제외됩니다. 그런 다음 Amazon RDS 데이터베이스에서 이벤트를 수동으로 다시 만듭니다.
+ `-plocal_password` – 암호를 지정하기 위해 사용합니다. 이 파라미터를 처음 사용할 때, 첫 번째 `-u` 파라미터로 식별되는 사용자 계정 암호를 지정합니다.
+ `-u RDS_user` – 사용자 이름을 지정하기 위해 사용합니다. 이 파라미터를 두 번째로 사용할 때, `--host` 파라미터로 식별되는 MariaDB 인스턴스에 대한 기본 데이터베이스의 사용자 계정 이름을 지정합니다.
+ `--port port_number` - MariaDB DB 인스턴스의 포트를 지정하기 위해 사용합니다. DB 인스턴스를 만들 때 값을 변경하지 않는 한, 기본값은 3306입니다.
+ `--host host_name` - Amazon RDS DB 인스턴스 엔드포인트의 도메인 이름 시스템(DNS) 이름을 지정하기 위해 사용합니다(예:)`myinstance.123456789012.us-east-1.rds.amazonaws.com`. Amazon RDS 콘솔의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.
+ `-pRDS_password` – 암호를 지정하기 위해 사용합니다. 이 파라미터를 두 번째로 사용할 때, 두 번째 `-u` 파라미터로 식별되는 사용자 계정 암호를 지정합니다.

Amazon RDS 데이터베이스에서 저장 프로시저, 트리거, 함수 또는 이벤트를 수동으로 만들어야 합니다. 복사 중인 데이터베이스에 이런 객체가 하나라도 있는 경우에는 `mysqldump` 또는 `mariadb-dump`를 실행할 때 이런 객체를 제외합니다. 이렇게 하려면 `mysqldump` 또는 `mariadb-dump` 명령에 다음 파라미터를 포함합니다.
+ `--routines=0`
+ `--triggers=0`
+ `--events=0`

**예제**

다음 예제에서는 로컬 호스트에 있는 `world` 샘플 데이터베이스를 RDS for MariaDB DB 인스턴스로 복사합니다. 값을 실제 정보로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
sudo mariadb-dump -u local_user \
    --databases world \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mariadb -u rds_user \
        --port=3306 \
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \
        -pRDS_password
```

Windows의 경우:

다음 명령은 Windows 프로그램 메뉴에서 **명령 프롬프트**를 마우스 오른쪽 버튼으로 클릭하고 **관리자 권한으로 실행**을 선택하여 열린 명령 프롬프트에서 실행해야 합니다. 값을 실제 정보로 바꿉니다.

```
mariadb-dump -u local_user ^
    --databases world ^
    --single-transaction ^
    --compress ^
    --order-by-primary  ^
    --routines=0 ^
    --triggers=0 ^
    --events=0 ^
    -plocal_password | mariadb -u RDS_user ^
        --port=3306 ^
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^
        -pRDS_password
```

**참고**  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.