Mydumper-Installation: http://www.cnblogs.com/lizhi221/p/7010174.html
mydumper-Einführung
MySQLs eigenes MySQLdump-Tool unterstützt Single-Threading-Arbeit, Exportieren Sie mehrere Tabellen einzeln und ohne Parallelmaschine, was eine schnelle Datensicherung unmöglich macht.
Als praktisches Tool kann mydumper die Arbeit mit mehreren Threads gut unterstützen. Es kann Daten aus Tabellen lesen und Daten gleichzeitig mit mehreren Threads parallel in verschiedene Dateien schreiben . , was es in Bezug auf die Verarbeitungsgeschwindigkeit schneller als herkömmliches MySQLdump macht. Eines seiner Merkmale besteht darin, dass die Liste während der Verarbeitung gesperrt werden muss. Wenn wir also während der Arbeitszeit Sicherungsarbeiten durchführen müssen, führt dies zu einer DML-Blockierung. Im Allgemeinen verfügt das aktuelle MySQL jedoch über einen Master und einen Slave, und die meisten Sicherungen werden auf dem Slave durchgeführt, sodass das Sperrproblem nicht berücksichtigt werden muss. Auf diese Weise kann mydumper die Sicherungsaufgabe besser abschließen.
mydumper-Funktionen
①Multi-Threading Sicherung
② Da es sich um eine logische Multithread-Sicherung handelt, werden nach der Sicherung mehrere Sicherungsdateien generiert
③ Wenden Sie FTWRL auf an MyISAM-Tabelle während der Sicherung ( FLUSH TABLES WITH READ LOCK), blockiert DML-Anweisungen
④ Stellen Sie die Konsistenz der Sicherungsdaten sicher
⑤ Support-Datei Komprimierung
⑥Unterstützt den Export von Binlog
⑦Unterstützt Multi-Thread-Wiederherstellung
⑧Unterstützt das Arbeiten im Daemon-Modus , Timing-Snapshots und kontinuierliche Binärprotokolle
⑨Unterstützt das Schneiden von Sicherungsdateien in Blöcke
Detaillierte Erklärung von mydumper Parameter
$ 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
Nach dem Login kopieren
Zusammenfassung des Hauptprozesses von mydumper
1. Der Hauptthread FLUSH TABLES WITH READ LOCK wendet einen globalen Lesezugriff an Sperre, um das Schreiben von DML-Anweisungen zu verhindern.
2. Lesen Sie den Namen der Binärprotokolldatei und den Speicherort des Protokolls zum aktuellen Zeitpunkt und zeichnen Sie ihn in der Metadatendatei auf sofortige Punktwiederherstellung
3 >
4. Nicht-InnoDB-Tabellen sichern, zuerst die Nicht-Transaktions-Engine-Tabellen exportieren
5. Hauptthread UNLOCK TABLES Nachdem die Nicht-Transaktions-Engine-Sicherung abgeschlossen ist , globale Lesesperre aufheben
6. InnoDB-Tabellen sichern, InnoDB-Tabellen basierend auf Transaktionen exportieren
Transaktionsende
Mydumpers Less-Locking-Modus:
Mydumper verwendet --less-locking, um das Warten auf Sperren zu reduzieren Zu diesem Zeitpunkt ist der Ausführungsmechanismus von mydumper ungefähr
1. Hauptthread FLUSH TABLES WITH READ LOCK (globale Sperre)
2. Dump Thread START TRANSACTION WITH CONSISTENT SNAPSHOT;
3. LL Dump Thread LOCK TABLES non-InnoDB (thread internal lock)
4. Hauptthread UNLOCK TABLES
5. LL Dump Thread Dump Nicht-InnoDB-Tabellen
6. LL DUmp Thread UNLOCK Nicht-InnoDB
7 , Dump Thread Dump InnoDB-Tabellen
mydumper Backup-Flussdiagramm
Das obige ist der detaillierte Inhalt vonAusführliche Einführung in das Prinzip von mydumper. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!