MyDumper ist ein logisches MySQL-Backup-Tool. Es verfügt über 2 Werkzeuge:
mydumper
der für den Export einer konsistenten Sicherung der MySQL-Datenbanken verantwortlich istmyloader
liest das Backup von mydumper, stellt eine Verbindung zur Zieldatenbank her und importiert das Backup. Beide Tools nutzen Multithreading-Funktionen.
MyDumper ist Open Source und wird von der Community gepflegt. Es handelt sich nicht um ein Percona-, MariaDB- oder MySQL-Produkt.
Offizielle Dokumentation (in Arbeit)
Dieser Abschnitt wurde migriert
Holen Sie sich zunächst die richtige URL aus dem Abschnitt „Releases“ und gehen Sie dann wie folgt vor:
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
Für Ubuntu müssen Sie die Abhängigkeiten installieren:
apt-get install libatomic1
Anschließend können Sie das Paket herunterladen und installieren:
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
Durch die Verwendung von pkg
pkg install mydumper
oder von Häfen
cd /usr/ports/databases/mydumper && make install
Durch die Verwendung von Homebrew
brew install mydumper
Berücksichtigen Sie, dass sich die Datei mydumper.cnf unter /usr/local/etc oder /opt/homebrew/etc befindet. Daher müssen Sie möglicherweise mydumper/myloader ausführen mit:
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
Sie müssen eine Entwicklungsbibliothek eines Anbieters auswählen.
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 wird standardmäßig mit MariaDB 5.5-Bibliotheken geliefert, die sehr alt sind. Möglicherweise ist es besser, eine neuere Version dieser Bibliotheken herunterzuladen (MariaDB, MySQL, Percona usw.).
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
Laufen:
cmake .
make
sudo make install
Man muss sicherstellen, dass pkg-config, mysql_config, pcre-config alle in $PATH sind
Der Binlog-Dump ist standardmäßig deaktiviert. Zum Kompilieren müssen Sie -DWITH_BINLOG=ON zu den cmake-Optionen hinzufügen
Um mit MySQL-Bibliotheken < 5.7 zu erstellen, müssen Sie SSL durch Hinzufügen von -DWITH_SSL=OFF deaktivieren
Sie können das offizielle Docker-Image herunterladen oder das Docker-Image entweder aus lokalen Quellen oder direkt aus Github-Quellen mit der bereitgestellten Docker-Datei erstellen.
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
Bedenken Sie, dass der Hauptzweck der Docker-Datei die lokale Entwicklung und Erstellung aus dem Quellcode ist. Es ist möglicherweise nicht optimal für Verteilungszwecke, kann aber mit dem oben genannten Einzeiler auch als schnelle Build-and-Run-Lösung funktionieren.
Siehe Verwendung
Dies alles erfolgt nach den besten MySQL-Praktiken und -Traditionen:
Dies bietet vorerst keine konsistenten Snapshots für nicht-transaktionale Engines – Unterstützung dafür wird in 0.2 erwartet :)
Einmal kann die Funktionalität von --regex verwendet werden, um beispielsweise keine MySQL-, Sys- und Testdatenbanken zu sichern:
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
Um nur MySQL- und Testdatenbanken zu sichern:
mydumper --regex ' ^(mysql.|test.) '
Um nicht alle Datenbanken zu sichern, die mit test beginnen:
mydumper --regex ' ^(?!(test)) '
So sichern Sie bestimmte Tabellen in verschiedenen Datenbanken (Hinweis: Der Name der Tabellen sollte mit $ enden. Verwandtes Problem):
mydumper --regex ' ^(db1.table1$|db2.table2$) '
Wenn Sie ein paar Datenbanken sichern, aber einige Tabellen verwerfen möchten, können Sie Folgendes tun:
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
Dadurch werden alle Tabellen in db1 und db2 ausgegeben, db1.table1 und db2.table2 werden jedoch ausgeschlossen
Natürlich kann die Regex-Funktionalität verwendet werden, um so ziemlich jede Liste von Tabellen zu beschreiben.
Sie können externe Befehle mit --exec wie folgt ausführen:
mydumper --exec " /usr/bin/gzip FILENAME "
--exec ist eine Single-Threaded-Implementierung, die der von Stream ähnelt. Das Exec-Programm muss ein absoluter Pfad sein. FILENAME wird durch den Dateinamen ersetzt, den Sie verarbeiten möchten. Sie können FILENAME an einer beliebigen Stelle als Argument festlegen.
Die Standarddatei (auch bekannt als: --defaults-file-Parameter) wird in MyDumper immer wichtiger
[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
Vor 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
Von bis 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
WICHTIG: Wenn Sie Optionen verwenden, die kein Argument wie --no-data oder --events erfordern, müssen Sie einen beliebigen Wert für diese Variablen festlegen, der immer Folgendes anzeigt: TRUE/ON/ENABLE. Es ist ein Irrglaube, wenn Sie glauben, dass durch das Hinzufügen von --no-data=0
Daten exportiert werden:
[mydumper]
no-data=0
Die Daten werden NICHT exportiert, da keine Daten angegeben werden.