MySQL Shell - Dump Utility - mysqlsh

Share

Last Updated on 3월 3, 2023 by Jade(정현호)

안녕하세요  
이번 포스팅에서는 데이터 Load/Unload 와 몇가지 기능을 제공하는 추가적인 유틸리티인 MySQL Shell 에 대해서 확인 해보려고 합니다.   

MySQL Shell

MySQL Shell 은 MySQL 용 고급 클라이언트 및 코드 편집기입니다 mysql 클라이언트 와 유사한 SQL 기능 외에도 MySQL Shell은 JavaScript 및 Python에 대한 스크립팅 기능을 제공하고 MySQL 작업을 위한 API를 포함합니다.

MySQL Shell의 여러 기능 중에 Utility 기능이 있으며 그중에서도 Dump  와 Load utility 에 대해서 확인 해보려고 합니다.

MySQL Shell은 MySQL Server 5.7 과 8.0 버전 에서 사용이 가능 합니다.

MySQL Shell 8.0 is highly recommended for use with MySQL Server 8.0 and 5.7

     

dump utility

MySQL Shell 은 여러가지 기능을 담고 있으며 그 중 추가적인 Utility 기능을 제공 하고 있습니다.

dump utility 는 MySQL Shell 8.0.21(MySQL Server 가 아닌) 에 도입된 기능으로 util.dumpInstance, util.dumpSchemas 을 지원하며 MySQL Shell 8.0.22 에서 util.dumpTables 기능이 추가 되었습니다.

Utility 기능 중 dump utility 와 mysqldump 는 유사한 기능이며 몇 가지 차이를 확인 해 본다면

dump utility 는

• 멀티 스레드(multi-thread) 로 동작이 가능
• 기능 내 기본 기능으로 압축을 지원하며 기본값이 압축을 함(알고리즘 zstd)
• Oracle Cloud 내 이전을 고려한 Oracle Cloud의 object storage 와 연결하여 사용 가능
• Oracle MySQL Database Service(MDS) 로의 이관(이전) 을 대비한 MDS 호환성 기능 지원

이와 같은 차이(장점)이 있으며 대표적으로 멀티 스레드로 동작할 수 있기 때문에 기존의 mysqldump에 비해 빠르다는게 특징 입니다.

성능에 대해서는 4개의 도구(mysqldump, mysqlpump, mydumper, MySQL Shell)를  Benchmarks 한 자료를 참조 해보시면 좋을것 같습니다

Ref. mysqlserverteam.com/mysql-shell-dump-load-part-2-benchmarks


[Data Dump]



[Data Load]

      

mysql shell 설치

설치는 각 배포판 별로 아래와 같이 설치를 진행하시면 됩니다.

• 우분투

user# wget https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb

user# sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb

user# sudo apt update
user# sudo apt -y install mysql-shell 


• RHEL/CentOS 7 기준

user# sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

user# sudo yum install -y mysql-shell


[참고] 아래와 같이 rpm-gpg 에러가 발생되면서 yum 으로 설치나 패키지 버전이 안될 경우
- 에러 메세지 내역

경고: /var/cache/yum/x86_64/7/mysql-tools-community/packages/mysql-....rpm: 
Header V4 RSA/... Signature, key ID ...: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql


The GPG keys listed for the "MySQL Tools Community" 
repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


Failing package is: mysql-...
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql


MySQL은 최근에 gpg 키를 업데이트 된 것으로 확인 됩니다.

그래서 아래와 같이 새로운 키를 import 후에 다시 yum 으로 설치 또는 패키지 버전 업데이트를 시도 해보시기 바랍니다.

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022


특정 버전을 설치하려고 할 경우에 rpm(패키지)를 직접 다운로드 받아서 설치하거나, Linux Generic(바이너리 압축 해제 방식) 으로 설치를 하여도 됩니다.


예를 들어 Linux Generic 으로 설치를 진행할 경우 아래와 같이 다운로드 및 압축 해제 , PATH 환경 변수 설정으로 사용할 수 있습니다.

# 1) 파일 다운로드
wget https://downloads.mysql.com/archives/get/p/43/file/mysql-shell-8.0.25-linux-glibc2.12-x86-64bit.tar.gz

# 2) 압축 해제
tar zxvf mysql-shell-8.0.25-linux-glibc2.12-x86-64bit.tar.gz

# 3) PATH 환경 변수 추가
vi ~/.bash_profile

export PATH=$PATH:/경로/경로/bin


# 4) 환경변수 다시 적용
source ~/.bash_profile

                                     

dump

설치가 완료 가 되었으면 dump 를 수행하도록 하겠습니다.
       

3가지 유형을 지원

dump 유틸리티는 3가지의 타입 을 제공하고 있습니다.

- util.dumpInstance(outputUrl[, options])
- util.dumpSchemas(schemas, outputUrl[, options])
- util.dumpTables(schema, tables, outputUrl[, options])

util.dumpInstance 는 MySQL 데이터베이스 전체 단위로 data dump 를 수행하며, util.dumpSchemas 는 논리 스키마(database, schema) 단위로 data dump 를 수행하고 util.dumpTables는 테이블 별 data dump 를 하게 됩니다.
     

수행 방식

mysql shell 은 대부분의 명령어가 수행 할 수 있는 방법이 2가지를 지원 합니다.

1) OS의 쉘 형에서 바로 수행

[root]# mysqlsh root@localhost -e '명령어'


2) mysqlsh 내에서 수행

[root]# mysqlsh root@localhost
 JS > util.dumpInstance...


3) dump 수행시 옵션

덤프 제어 옵션 으로 는 아래와 같은 옵션이 존재 합니다.

dryRun: [ true | false ]

실제 실행여부 전에 MySQL 데이터베이스와의 호환성 체크를 위한 기능으로 사용하면(true)실제로 dump 는 수행되지는 않습니다(기본값 : false)

showProgress: [ true | false ]
덤프 수행시 진행 정보 출력 유무에 관련된 내용으로 true 일 경우 표시하게 되며 false 일 경우 내용을 숨기게 됩니다(기본값 : true)

threads: int
덤프 수행시 사용할 병렬 스레드 수 이고 기본값은 4입니다.

maxRate : "string"
덤프 중 데이터 읽기 처리량 대해서 스레드 당 초당 최대 바이트 수 를 지정 하는 옵션 입니다.
k,M,G 와 같은 용량의 접미사를 사용할 수 있습니다(예 100M)
기본 값은 0 으로 제한은 없습니다.

defaultCharacterSet: "string"
MySQL Shell 이 덤프를 위해 MySQL 서버에 접속한 세션에서 사용할 문자 집합에 대한 설정 입니다.
기본값은 utf8mb4 입니다.

consistent: [ true | false ]
일관성 있는 데이터 덤프를 수행 여부에 대한 옵션 으로 기본 값은 true 입니다.

true 가 설정되면 유틸리티는 FLUSH TABLES WITH READ LOCK 문을 사용하여 Global Read Lock을 설정합니다.(유틸리티를 실행하는 데 사용된 유저에게 RELOAD 권한이 있는 경우)
또는 LOCK TABLES 문을 사용하여 테이블 잠금을 하게 됩니다(사용한 유저에게 RELOAD 권한이 없지만 LOCK TABLES가 있는 경우)

각 스레드에 대한 트랜잭션은 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ 및 START TRANSACTION WITH CONSISTENT SNAPSHOT 을 사용하여 시작하게 됩니다.

모든 스레드가 트랜잭션을 시작하면 인스턴스가 백업을 위해 잠금이 되며 그리고 global read lock이 해제됩니다.

• 덤프 수행시 락 잠금과 해제에 대한 진행 내역

Acquiring global read lock
Global read lock acquired
Initializing - done
Gathering information - done
All transactions have been started
Locking instance for backup
Global read lock has been released
Writing global DDL files
Running data dump using 8 threads.
NOTE: Progress information uses estimated values and may not be accurate.
Writing schema metadata - done
Writing DDL - done
Writing table metadata - done
Starting data dump <-- 덤프 시작


추가로 덤프 출력 옵션이 있습니다.
그중에서는 대표적으로 compression 이 있습니다.

compression: "string"
덤프 파일 생성시 사용할 압축 유형입니다. 기본값은 zstd 압축(zstd) 을 사용하는 것 이며, 그외 gzip 압축을 사용 하거나 none 을 통해 압축을 하지 않을수도 있습니다.

기본 설정인 zstd 를 이용하여 압축하게 되면 아래와 같은 확장자를 확인 할 수 있습니다.

test@tb_test@@0.tsv.zst.idx
test@tb_test@@0.tsv.zst

       

Dump 수행

dumpInstance

먼저 3가지 명령어 모두 중간에 대문자가 포함되어 있으며 대소문자를 구분함으로 중간의 대문자는 대문자로 입력 해야 합니다.

dumpInstance / dumpSchemas  /  dumpTables

먼저 백업 받을 디렉토리를 생성 후 덤프를 진행 하도록 하겠습니다. 덤프를 받을 디렉토리에 다른 파일이 있다면 아래 처럼 에러가 발생 합니다.

Util.dumpInstance: Cannot proceed with the dump, the specified directory ... already exists at the target location ... and is not empty.



• OS 에서 dumpInstance 바로 수행

# 디렉토리 먼저 생성
[root]# rm -rf /root/backup/inst_dump
[root]# mkdir -p /root/backup/inst_dump


# dumpInstance 수행
[root]# mysqlsh root@localhost -e \
'util.dumpInstance("/root/backup/inst_dump"
,{ocimds: true, threads: 8, showProgress: true, 
compatibility: ["force_innodb", "strip_definers",
"strip_restricted_grants", "strip_tablespaces"]})'


•mysqlsh 내에서 dumpInstance 실행

[root]# mysqlsh root@localhost
MySQL Shell 8.0.23

Copyright (c) 2016, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
Creating a session to 'root@localhost'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 21 (X protocol)
Server version: 8.0.23 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.

 JS > util.dumpInstance("/root/backup/inst_dump",
 {ocimds: true, threads: 8,
 showProgress: true, 
 compatibility: ["force_innodb", "strip_definers",
 "strip_restricted_grants", "strip_tablespaces"]})

dumpInstance 수행시에는 기본 필요사항으로 덤프를 받을 경로(outputUrl) 이며, 그외에는 옵션이며 위의 옵션에 대한 설명을 참조하시면 됩니다.

ocimds , compatibility 옵션은 On-premise 환경에서 Oracle Cloud MDS(MySQL Database Service) 로 마이그레이션 하기 위해 사용되는 옵션으로 일반적인 경우에는 사용하지 않아도 됩니다.

mysqlsh 접속하여 사용할 경우 접속 종료는 \quit 를 입력하여 종료 할 수 있습니다.


dumpSchemas

• OS 에서 바로 수행

# 디렉토리 부터 생성
[root]# mkdir -p /root/backup/schema_dump/employees


# dumpSchemas 를 수행
[root]# mysqlsh root@localhost -e \
'util.dumpSchemas(["employees"],
"/root/backup/schema_dump/employees",
{threads:8})'


•mysqlsh 내에서 실행

# 디렉토리 부터 생성 
[root]# mkdir -p /root/backup/schema_dump/employeess

# mysqlsh 을 통한 접속
[root]# mysqlsh root@localhost

# dumpSchemas 수행
JS > util.dumpSchemas(["employees"],
"/root/backup/schema_dump/employees",
{threads:8})



dumpTables

• OS 에서 바로 수행

# 디렉토리 생성
[root]# mkdir -p /root/backup/table_dump/employees_tables

# dumpTables 수행
[root]# mysqlsh root@localhost -e \
'util.dumpTables("employees", 
[ "emp", "dept" ],
"/root/backup/table_dump/employees_tables",\
{threads:8})'


•mysqlsh 내에서 실행

# 디렉토리 생성
[root]# mkdir -p /root/backup/table_dump/employees_tables

# mysqlsh 을 통한 접속
[root]# mysqlsh root@localhost

# dumpTables 수행
JS > util.dumpTables("employees",
[ "emp", "dept" ],
"/root/backup/table_dump/employees_tables",
{threads:8})

       

compression

MySQL Shell Dump Utility 수행시 기본값으로 압축이 수행되며 zstd 알고리즘을 통해 압축을 하게 됩니다.

Zstandard 의 줄임말로 Zstd 는 zlib 수준 압축 비율을 사용하며 실시간 압축을 수행하면서도 빠른 무손실 압축 알고리즘 입니다.

압축 관련되어 몇가지를 확인 해보려고 하며 테스트에 사용할 테이블 사이즈등은 아래와 같습니다.

+--------------+------------+------------+---------------+----------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | DATA_SIZE(MB) | INDEX_SIZE(MB) |
+--------------+------------+------------+---------------+----------------+
| test         | sbtest1    |   29592720 |       6428.00 |         445.94 |
+--------------+------------+------------+---------------+----------------+


각각 수행을 해보도록 하겠습니다.

• zstd ( compress 는 기본값으로 zstd 입니다)

[root]# rm -rf /root/backup/schema_dump/test_zstd
[root]# mkdir -p /root/backup/schema_dump/test_zstd

[root]# mysqlsh root@localhost -e \
'util.dumpTables("test",[ "sbtest1" ], 
 "/root/backup/schema_dump/test_zstd",
{threads:8,"compression": "zstd"})'
Please provide the password for 'root@localhost': ****
Save password for 'root@localhost'? [Y]es/[N]o/Ne[v]er (default No):
Acquiring global read lock
< ... 중략 ...>
Starting data dump
101% (30.00M rows / ~29.59M rows), 658.12K rows/s, 132.10 MB/s uncompressed, 59.39 MB/s compressed
Dump duration: 00:00:40s
Total duration: 00:00:40s
Schemas dumped: 1
Tables dumped: 1
Uncompressed data size: 5.92 GB
Compressed data size: 2.67 GB
Compression ratio: 2.2
Rows written: 30000008
Bytes written: 2.67 GB
Average uncompressed throughput: 147.66 MB/s
Average compressed throughput: 66.51 MB/s


• gzip

[root]# rm -rf /root/backup/schema_dump/test_gzip
[root]# mkdir -p /root/backup/schema_dump/test_gzip

[root]# mysqlsh root@localhost -e \
'util.dumpTables("test",["sbtest1"],
"/root/backup/schema_dump/test_gzip",
{threads:8,"compression": "gzip"})'
Please provide the password for 'root@localhost': ****
Save password for 'root@localhost'? [Y]es/[N]o/Ne[v]er (default No):
Acquiring global read lock
<... 중략 ...>
Starting data dump
101% (30.00M rows / ~29.59M rows), 581.54K rows/s, 113.24 MB/s uncompressed, 58.54 MB/s compressed
Dump duration: 00:00:52s
Total duration: 00:00:52s
Schemas dumped: 1
Tables dumped: 1
Uncompressed data size: 5.92 GB
Compressed data size: 3.06 GB
Compression ratio: 1.9
Rows written: 30000008
Bytes written: 3.06 GB
Average uncompressed throughput: 112.46 MB/s
Average compressed throughput: 58.21 MB/s


수행한 2개의 차이를 보면 zstd 는 40초 , gzip 은 52초 가 소요되었습니다. 소요 시간은 각 시스템 마다 성능에 따른 차이가 있으므로 감안하시면 됩니다
차이가 있다는 정도로 보시면 될것 같습니다.

테스트한 테이블의 용량은 6873MB(인덱스 포함) 이었으며 압축 후 각각의 용량은 아래와 같습니다.

[root]# du -sh /root/backup/schema_dump/test_zstd/
2.5G	/root/backup/schema_dump/test_zstd/

[root]# du -sh /root/backup/schema_dump/test_gzip/
2.9G	/root/backup/schema_dump/test_gzip/


결과적으로 zstd 가 gzip 보다 빠른 수행시간 및 압축률을 보이고 있습니다.

그렇다면 동일한 환경에서 mysqdump + gzip 의 경우는 용량 2.8GB 수행시간은 약 7분 25초 소요 되었습니다.
용량은 큰 차이를 보이는것은 아니나 수행시간에서는 큰 차이가 난다는 것을 확인 할 수 있습니다.

물론 mysql shell dump utility 는 병렬 처리(스레드) 를 수행하였기 때문에 빠른 반면에 그만큼 CPU 사용도 많이 될수 있음을 고려 해야 합니다.

테스트 시스템에서 zstd 방식으로 dump utility 수행시 CPU 사용율의 그래프 이며 CPU 수 이상으로 thread 를 지정하고 수행한 내역 입니다
(테스트 시스템은 VM 이며 성능은 일반 Production 시스템에 비해 많이 낮음)

thread 를 많이 주는 만큼 빠르게 dump 를 수행할 수는 있으나 CPU 자원소모가 클수 있으므로 CPU Core 를 감안해서 thread 수를 지정 해야 합니다.

또는 백업 전용 Replica 인스턴스에서 수행을 하거나 또는 시스템이 여유로운 시간대 수행을 고려 할 수도 있습니다
            

Option for Cloud

MySQL Shell 은 버전업이 되면서 기능이 계속 추가 되고 있으며, 그 중에서도 Cloud 오브젝트 스토리지 지원에 대한 기능을 추가 되고 있습니다.

처음에는 Oracle Cloud Infrastructure(OCI)의 오브젝트 스토리지와 연계해서 사용할 수 있도록 추가 되었고, 그 다음 Microsoft Azure Storage 에 Dump 와 Load 할 수 있는 기능을 추가 하였으며, MySQL Shell 8.0.32 버전에서는 AWS S3 오브젝트 스토리지를 사용할 수 있는 Options for S3-compatible Services 이 추가 되었습니다.

It is now possible to configure MySQL Shell's AWS S3 support with AWS environment variables. For more information, see S3-compatible Storage.



MySQL Shell 에서 AWS S3 를 사용하기 위해서는 먼저 AWS S3 를 사용할 수 있도록 아래와 같은 작업이 필요 합니다.

  • 스토리지 생성 및 접속 가능하도록 설정
  • AWS API(AWS-CLI) 를 이용할 수 있도록 별도의 계정 생성 및 AccessKey 발급
  • 계정에서 AWS S3 를 사용할 수 있도록 권한부여
  • AWS-CLI 설치 및 config 와 credentials 생성



준비가 되었다면 아래와 같이 실행하여 dump된 파일을 Local 디렉토리가 아닌 Cloud Storage 로 바로 전송 및 저장할 수 있습니다.

mysqlsh root@127.0.0.1:3306 -e \
'util.dumpSchemas(["test"],"",{s3BucketName: "test-storage", s3Profile: "rds-iam"})'



설정된 config  파일에 따라서 S3 사용 옵션이 달라지게 되며 사용할 수 있는 옵션을 아래와 같습니다.

  • s3BucketName
  • s3CredentialsFile
  • s3ConfigFile
  • s3Profile
  • s3Region
  • s3EndpointOverride


config 파일과 Credential 파일의 위치 및 파일명이 기본값이라면, 기재 하지 않아도 인식하여 파일을 참조하게 됩니다.
또한 Region 에 대한 정보도 config 파일에 입력되어 있다면 Shell 에서 입력하지 않아도 됩니다.

Profile 이 default profile 을 사용한다면 명시적으로 profile 명을 지정하지 않아도 되며, 위의 예제에서는 default profile 이 아니라서 별도의 지정한 profile 명을 입력하였습니다.

위의 예제에서 일반적인 로컬에 dump를 받을 경우 첫번째 인자인 스키마 명(예제에서는 test) 다음 두번째 인자에는 dump 파일을 생성할 경로 정보가 입력이 되지만, Cloud Storage 에 저장하기 위해서 S3 정보가 입력 하였다면 예제 처럼 두번째 인자의 세부 경로를 "" 로 지정하면 됩니다.

네트워크를 통해서 파일이 전송되는 만큼 OS의 커널파라미터에서 네트워크 관련된 설정을 상향조정(튜닝) 한다면 조금 더 빠른 전송에 도움이 되게 됩니다.


Cloud Storage 사용에 관한 추가적인 매뉴얼 내용은 다음 링크를 참조하시면 됩니다.

                    

load

Dump 된 파일을 다시 데이터베이스에 적재 할 때는 loadDump 명령어를 통해 진행 하게 됩니다.
loadDump 시 지정한 디렉토리내에 존재하는 파일을 모두 load 하게 됩니다.

load 하기전에 먼저 local_infile=ON 로 설정을 해야 합니다.
mysql> set global local_infile=ON;

# OS 에서 직접 실행
mysqlsh root@localhost -e 'util.loadDump("/root/backup/inst_dump", {threads: 8,ignoreExistingObjects:true,resetProgress:true})'

or

# mysqlsh 에서 실행
util.loadDump("/root/backup/inst_dump", {threads: 8,ignoreExistingObjects:true,resetProgress:true})


위와 같이 실행하면 되며

- ignoreExistingObjects:true 옵션은 테이블이 존재시 무시하고 데이터를 load 를 하라는 옵션 입니다. default 는 false 로 테이블이 존재시 에러가 발생하며 진행 되지 않습니다.

- resetProgress:true 는 중단 후 다시 수행할 때 처음 부터 다시 진행할지 아니면 이어서 할지에 대해서 설정하는 옵션 입니다.
테이블 단위로 입력시 테이블 중복으로 중단되었다면 resetProgress:true 를 사용하여 진행 하시면 됩니다.

중단 된 이후 다시 시작시 아래 와 같이 메세지를 확인 하실 수 있습니다.

NOTE: Load progress file detected. Load will be resumed from where it was left, assuming no external updates were made.
You may enable the 'resetProgress' option to discard progress for this MySQL instance and force it to be completely reloaded


- schema : 옵션은 위의 예제에서 사용 되지는 않았으나 load 시 원본과 다른 데이터베이스(스키마)로 로딩하려고 할 경우 schema 옵션을 사용하면 됩니다 
schema: "데이터베이스명"

- ignoreVersion : 다른 메이저 버전에서 dump 한 파일에 대해서 load 할 경우 해당 옵션을 사용해야 load 할 수 있습니다.
    

Note

Dump Utility 수행시 Dump 범위에 따라서 dumpInstance , dumpSchemas , dumpTables 를 구분하여 사용하였으나 loadDump 는 별도로 구분 없이 사용 합니다.

           

Option for Cloud

dump 유틸리티에서 처럼 loadDump 에서도 Cloud 스토리지에 있는 dump파일을 통해서 local 또는 remote 인스턴스에 로딩을 할 수 있습니다.

• 명령문 예시

mysqlsh admin@rds-xxx-xxxx.ap-northeast-2.rds.amazonaws.com:3306 -e \
'util.loadDump("",{s3BucketName: "test-storage", s3Profile: "rds-iam",showProgress: true,resetProgress:true})'


설정된 config  파일에 따라서 S3 사용 옵션이 달라지게 되며 사용할 수 있는 옵션을 아래와 같습니다.

  • s3BucketName
  • s3CredentialsFile
  • s3ConfigFile
  • s3Profile
  • s3Region
  • s3EndpointOverride


config 파일과 Credential 파일의 위치 및 파일명이 기본값이라면, 기재 하지 않아도 인식하여 파일을 참조하게 됩니다.
또한 Region 에 대한 정보도 config 파일에 입력되어 있다면 Shell 에서 입력하지 않아도 됩니다.

Profile 이 default profile 을 사용한다면 명시적으로 profile 명을 지정하지 않아도 되며, 위의 예제에서는 default profile 이 아니라서 별도의 지정한 profile 명을 입력하였습니다.


위의 예제에서 일반적인 로컬에 Load 를 실행할 경우 Dump 된 파일의 디렉토리 경로를 입력하게 되지만, Cloud Storage 에 저장된 파일을 통해서 Load 를 하게 됨에 따라서 예제 처럼 두번째 인자의 세부 경로를 "" 로 지정하면 됩니다.

네트워크를 통해서 파일을 가져오면서 Loading 을 하는 형태로 Loading 하는 인스턴스의 대상이 Local DB가 아니라 Remote DB 라면 네트워크의 Input 과 Output 모두를 사용하게 됩니다.

네트워크를 통해서 데이터가 전송되기 때문에 OS의 커널파라미터에서 네트워크 관련된 설정을 상향조정(튜닝) 한다면 조금 더 빠른 전송에 도움이 되게 됩니다.




정리

MySQL Shell 은 다양한 기능을 제공을 하고 있고 이전 MySQL 8.0 업그레이드 포스팅에서는 util.checkForServerUpgrade 를 사용하여 업그레이드 사전체크를 수행 하였습니다.

Dump utility 는 기존의 유틸리티에 비해 빠르며 압축이 기본 제공되는 장점을 가지고 있으며 Oracle  Cloud로 Migration 시 부가적인 기능 도 같이 지원 되고, Dump 저장을 다른 클라우드 스토리지에도 지원이 됨에 따라서 앞으로 더 많이 사용 될 것 으로 예상 되며, 포스팅 글은 여기에서 마무리 하도록 하겠습니다.
            

Reference

Reference link
 • dev.mysql.com/doc/mysql-shell

 • dev.mysql.com/doc/mysql-shell/dump-instance-schema
 • dev.mysql.com/mysql-shell-utilities-load-dump
 • mysqlserverteam.com/mysql-shell-dump-part-1-demo
 • mysqlserverteam.com/mysql-shell-dump-part-2-benchmarks
 • blogs.oracle.com/mysql-shell-dump-load-and-compression


관련된 다른 글

 

 

 

 

 

 

 

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x