MyDumper는 MySQL 논리 백업 도구입니다. 여기에는 2가지 도구가 있습니다.
mydumper
myloader
mydumper에서 백업을 읽고 대상 데이터베이스에 연결한 후 백업을 가져옵니다. 두 도구 모두 멀티스레딩 기능을 사용합니다.
MyDumper는 오픈 소스이며 커뮤니티에서 유지 관리하며 Percona, MariaDB 또는 MySQL 제품이 아닙니다.
공식 문서(작업 진행 중)
이 섹션은 이전되었습니다.
먼저 릴리스 섹션에서 올바른 URL을 얻은 다음:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el7.x86_64.rpm
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el8.x86_64.rpm
우분투의 경우 종속성을 설치해야 합니다.
apt-get install libatomic1
그런 다음 패키지를 다운로드하여 설치할 수 있습니다.
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
wget https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
dpkg -i mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
pkg를 사용하여
pkg install mydumper
또는 포트에서
cd /usr/ports/databases/mydumper && make install
홈브루를 사용하여
brew install mydumper
mydumper.cnf 파일이 /usr/local/etc 또는 /opt/homebrew/etc에 위치한다는 점을 고려하십시오. 따라서 다음을 사용하여 mydumper/myloader를 실행해야 할 수도 있습니다.
mydumper --defaults-file=/opt/homebrew/etc/mydumper.cnf
myloader --defaults-file=/opt/homebrew/etc/mydumper.cnf
apt-get install cmake g++ git
yum install -y cmake gcc gcc-c++ git make
sudo port install cmake pkgconfig
apt-get install libglib2.0-dev zlib1g-dev libpcre3-dev libssl-dev libzstd-dev
yum install -y glib2-devel openssl-devel pcre-devel zlib-devel libzstd-devel
zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel
sudo port install glib2 pcre
하나의 공급업체 개발 라이브러리를 선택해야 합니다.
apt-get install libmysqlclient-dev
apt-get install libperconaserverclient20-dev
apt-get install libmariadbclient-dev
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel
CentOS 7은 기본적으로 매우 오래된 MariaDB 5.5 라이브러리와 함께 제공됩니다. 이러한 라이브러리(MariaDB, MySQL, Percona 등)의 최신 버전을 다운로드하는 것이 더 나을 수도 있습니다.
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
달리다:
cmake .
make
sudo make install
pkg-config, mysql_config, pcre-config가 모두 $PATH에 있는지 확인해야 합니다.
Binlog 덤프는 기본적으로 비활성화되어 컴파일하기 위해 cmake 옵션에 -DWITH_BINLOG=ON을 추가해야 합니다.
mysql libs < 5.7에 대해 빌드하려면 -DWITH_SSL=OFF를 추가하여 SSL을 비활성화해야 합니다.
공식 Docker 이미지를 다운로드하거나 제공된 Dockerfile을 사용하여 로컬 소스에서 또는 Github 소스에서 직접 Docker 이미지를 빌드할 수 있습니다.
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
Dockerfile이 다루는 주요 목적은 개발이며 소스에서 로컬로 빌드하는 것입니다. 배포 목적으로는 최적이 아닐 수도 있지만 위의 단일 라이너를 사용하여 빠른 빌드 및 실행 솔루션으로 작동할 수도 있습니다.
사용법 보기
이는 모두 최고의 MySQL 관행과 전통에 따라 수행됩니다.
이는 현재 비트랜잭션 엔진에 대해 일관된 스냅샷을 제공하지 않습니다. 이에 대한 지원은 0.2에서 예상됩니다. :)
예를 들어 mysql, sys 및 테스트 데이터베이스를 덤프하지 않으려면 --regex 기능을 사용할 수 있습니다.
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
mysql 및 테스트 데이터베이스만 덤프하려면 다음을 수행하십시오.
mydumper --regex ' ^(mysql.|test.) '
test로 시작하는 모든 데이터베이스를 덤프하지 않으려면 다음을 수행하십시오.
mydumper --regex ' ^(?!(test)) '
특정 테이블을 다른 데이터베이스에 덤프하려면(참고: 테이블 이름은 $.로 끝나야 합니다. 관련 문제):
mydumper --regex ' ^(db1.table1$|db2.table2$) '
몇 개의 데이터베이스를 덤프하고 일부 테이블을 삭제하려면 다음을 수행할 수 있습니다.
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
db1 및 db2의 모든 테이블을 덤프하지만 db1.table1 및 db2.table2는 제외됩니다.
물론 정규식 기능을 사용하면 거의 모든 테이블 목록을 설명할 수 있습니다.
다음과 같이 --exec를 사용하여 외부 명령을 실행할 수 있습니다.
mydumper --exec " /usr/bin/gzip FILENAME "
--exec는 Stream과 유사한 단일 스레드 구현입니다. Exec 프로그램은 절대 경로여야 합니다. FILENAME은 처리하려는 파일 이름으로 대체됩니다. FILENAME을 어느 위치에서나 인수로 설정할 수 있습니다.
기본 파일(일명: --defaults-file 매개변수)이 MyDumper에서 더 중요해지기 시작했습니다.
[mydumper]
host = 127.0.0.1
user = root
password = p455w0rd
database = db
rows = 10000
[myloader]
host = 127.0.0.1
user = root
password = p455w0rd
database = new_db
innodb-optimize-keys = AFTER_IMPORT_PER_TABLE
v0.14.0-1 이전:
[mydumper_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[myloader_variables]
long_query_time = 300
innodb_flush_log_at_trx_commit = 0
v0.14.0-1부터:
[mydumper_session_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mydumper_global_variables]
sync_binlog = 0
slow_query_log = OFF
[myloader_session_variables]
long_query_time = 300
[myloader_global_variables]
sync_binlog = 0
innodb_flush_log_at_trx_commit = 0
[ ` db ` . ` table ` ]
where = column > 20
limit = 10000
[ ` myd_test ` . ` t ` ]
columns_on_select=qty,price+20
columns_on_insert=qty,price
중요: --no-data 또는 --events와 같이 인수가 필요하지 않은 옵션을 사용하는 경우 항상 TRUE/ON/ENABLE을 나타내는 변수에 값을 설정해야 합니다. --no-data=0
을 추가하면 데이터가 내보내질 것이라고 생각하는 것은 오해입니다.
[mydumper]
no-data=0
데이터 없음이 지정되었으므로 데이터를 내보내지 않습니다.