>  기사  >  데이터 베이스  >  mydumper의 원리에 대한 자세한 소개

mydumper의 원리에 대한 자세한 소개

怪我咯
怪我咯원래의
2017-06-23 13:20:582406검색
mydumper 설치: http://www.cnblogs.com/lizhi221/p/7010174.html
mydumper 소개
MySQL 자체 mysqldump 도구 단일 스레드 작업을 지원하고 여러 테이블을 하나씩 내보냅니다. 병렬 머신이 없으므로 데이터를 빠르게 백업할 수 없습니다.
mydumper는 다중 스레드 작업을 잘 지원할 수 있으며 다중 스레드를 통해 동시에 여러 파일에 쓸 수 있어 기존 처리 속도보다 빠릅니다. . 그 특징 중 하나는 처리 중에 목록을 잠가야 하기 때문에 근무 시간 중에 백업 작업을 수행해야 할 경우 DML 차단이 발생한다는 것입니다. 그러나 일반적으로 현재 MySQL은 마스터와 슬레이브가 있고, 대부분의 백업이 슬레이브에서 이루어지므로 잠금 문제는 고려할 필요가 없다. 이러한 방식으로 mydumper는 백업 작업을 더 잘 완료할 수 있습니다.
mydumper 기능
①멀티 스레드 백업
②멀티 스레드 논리적 백업이므로 백업 후 여러 개의 백업 파일이 생성됩니다
③MyISAM은 언제 백업 테이블에 FTWRL(FLUSH TABLES WITH READ LOCK)을 적용하면 DML 문이 차단됩니다.
④ 백업 데이터의 일관성 보장
⑤ 파일 압축 지원
⑥ binlog 내보내기 지원
7 멀티 스레딩 복구 지원
8데몬 모드 작업, 예약된 스냅샷 및 연속 바이너리 로그 지원
9백업 파일을 청크로 자르기 지원
mydumper 매개변수에 대한 자세한 설명
$ mydumper --helpUsage:
  mydumper [OPTION...] multi-threaded MySQL dumping

Help Options:  -?, --help                  Show help optionsApplication Options:  -B, --database              要备份的数据库,不指定则备份所有库
  -T, --tables-list           需要备份的表,名字用逗号隔开
  -o, --outputdir             备份文件输出的目录
  -s, --statement-size        生成的insert语句的字节数,默认1000000
  -r, --rows                  Try to split tables into chunks of this many rows. This option turns off --chunk-filesize
  -F, --chunk-filesize        Split tables into chunks of this output file size. This value is in MB
  -c, --compress              Compress output files压缩输出文件
  -e, --build-empty-files     如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件)
  -x, --regex                 Regular expression for 'db.table' matching 使用正则表达式匹配'db.table'
  -i, --ignore-engines        Comma delimited list of storage engines to ignore忽略的存储引擎,用逗号分割
  -m, --no-schemas            Do not dump table schemas with the data不备份表结构,只备份数据
  -d, --no-data               Do not dump table data备份表结构,不备份数据
  -G, --triggers              Dump triggers备份触发器
  -E, --events                Dump events
  -R, --routines              Dump stored procedures and functions备份存储过程和函数
  -k, --no-locks              不使用临时共享只读锁,使用这个选项会造成数据不一致
  --less-locking              Minimize locking time on InnoDB tables.减少对InnoDB表的锁施加时间
  -l, --long-query-guard      设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出)
  -K, --kill-long-queries     Kill long running queries (instead of aborting)杀掉长查询 (不退出)
  -D, --daemon                Enable daemon mode启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备
  -I, --snapshot-interval     dump快照间隔时间,默认60s,需要在daemon模式下
  -L, --logfile               使用的日志文件名(mydumper所产生的日志), 默认使用标准输出
  --tz-utc                    SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
  --skip-tz-utc               
  --use-savepoints            使用savepoints来减少采集metadata所造成的锁时间,需要 SUPER 权限
  --success-on-1146           Not increment error count and Warning instead of Critical in case of table doesn't exist
  --lock-all-tables           Use LOCK TABLE for all, instead of FTWRL
  -U, --updated-since         Use Update_time to dump only tables updated in the last U days
  --trx-consistency-only      Transactional consistency only
  -h, --host                  连接的主机名
  -u, --user                  用来备份的用户名
  -p, --password              用户密码
  -P, --port                  连接端口
  -S, --socket                使用socket通信时的socket文件
  -t, --threads               开启的备份线程数,默认是4
  -C, --compress-protocol     压缩与mysql通信的数据
  -V, --version               显示版本号
  -v, --verbose               输出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2
mydumper 기본 프로세스 요약
1. 메인 스레드 FLUSH TABLES WITH READ LOCK, 전역 읽기 전용 잠금을 적용하여 DML 문이 작성되는 것을 방지하고 데이터를 보장합니다. Consistency
2. 현재 시점에서 로그가 기록된 위치와 바이너리 로그 파일명을 읽어서 즉시 포인트 복구를 위해 메타데이터 파일에 기록합니다.
3. 지정할 수 있으며 기본값은 4) 일관된 스냅샷으로 스레드 시작 트랜잭션 읽기 시작
4. 비 InnoDB 테이블을 덤프하고 먼저 비 트랜잭션 엔진 테이블을 내보냅니다
5. 테이블 비트랜잭션 엔진 백업이 완료된 후 전역 읽기 전용 잠금 해제
6, InnoDB 테이블 덤프, 트랜잭션 기반 InnoDB 테이블 내보내기
7, 트랜잭션 종료
Mydumper's less 잠금 모드:
mydu mper는 --less-를 사용합니다. 잠금을 사용하면 잠금 대기 시간을 줄일 수 있습니다. 이때 mydumper의 실행 메커니즘은 대략 다음과 같습니다. 1. 메인 스레드 FLUSH TABLES WITH READ LOCK(전역 잠금) ) 2. 일관된 스냅샷으로 트랜잭션 시작 덤프 스레드
3. LL 덤프 스레드 LOCK TABLES 비 InnoDB(스레드 내부 잠금)
4. 메인 스레드 UNLOCK TABLES
5. LL 덤프 스레드 덤프 비 InnoDB 테이블
6. LL DUmp 스레드 UNLOCK 비 InnoDB
7. 덤프 스레드 덤프 InnoDB 테이블
mydump 어 백업 흐름도


위 내용은 mydumper의 원리에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.