MyDumper est un outil de sauvegarde logique MySQL. Il dispose de 2 outils :
mydumper
qui se charge d'exporter une sauvegarde cohérente des bases de données MySQLmyloader
lit la sauvegarde depuis mydumper, se connecte à la base de données de destination et importe la sauvegarde. Les deux outils utilisent des capacités multithreading.
MyDumper est Open Source et maintenu par la communauté, ce n'est pas un produit Percona, MariaDB ou MySQL.
Documentation officielle (travail en cours)
Cette section a été migrée
Obtenez d’abord l’URL correcte dans la section des versions, puis :
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
Pour Ubuntu, vous devez installer les dépendances :
apt-get install libatomic1
Ensuite, vous pouvez télécharger et installer le package :
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
En utilisant paquet
pkg install mydumper
ou depuis les ports
cd /usr/ports/databases/mydumper && make install
En utilisant Homebrew
brew install mydumper
Tenez compte du fait que le fichier mydumper.cnf sera situé sur /usr/local/etc ou /opt/homebrew/etc. Ainsi, vous devrez peut-être exécuter mydumper/myloader avec :
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
Vous devez sélectionner une bibliothèque de développement de fournisseur.
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 est livré par défaut avec les bibliothèques MariaDB 5.5 qui sont très anciennes. Il serait peut-être préférable de télécharger une version plus récente de ces bibliothèques (MariaDB, MySQL, Percona etc).
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
Courir:
cmake .
make
sudo make install
Il faut s'assurer que pkg-config, mysql_config, pcre-config sont tous dans $PATH
Le dump Binlog est désactivé par défaut pour compiler avec, vous devez ajouter -DWITH_BINLOG=ON aux options cmake
Pour construire avec les bibliothèques mysql <5.7, vous devez désactiver SSL en ajoutant -DWITH_SSL=OFF
Vous pouvez télécharger l'image Docker officielle ou créer l'image Docker soit à partir de sources locales, soit directement à partir de sources Github avec le Dockerfile fourni.
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
Gardez à l’esprit que l’objectif principal du Dockerfile est le développement et la construction à partir des sources localement. Il n'est peut-être pas optimal à des fins de distribution, mais peut également fonctionner comme une solution de création et d'exécution rapide avec le one-liner ci-dessus.
Voir Utilisation
Tout cela est fait selon les meilleures pratiques et traditions MySQL :
Pour l'instant, cela ne fournit pas d'instantanés cohérents pour les moteurs non transactionnels - la prise en charge est attendue dans la version 0.2 :)
Once peut utiliser la fonctionnalité --regex, par exemple pour ne pas vider les bases de données mysql, sys et test :
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
Pour vider uniquement les bases de données MySQL et de test :
mydumper --regex ' ^(mysql.|test.) '
Pour ne pas vider toutes les bases de données commençant par test :
mydumper --regex ' ^(?!(test)) '
Pour vider des tables spécifiques dans différentes bases de données (Remarque : le nom des tables doit se terminer par $. problème lié) :
mydumper --regex ' ^(db1.table1$|db2.table2$) '
Si vous souhaitez vider quelques bases de données mais supprimer certaines tables, vous pouvez procéder :
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
Ce qui videra toutes les tables de db1 et db2 mais exclura db1.table1 et db2.table2
Bien entendu, la fonctionnalité regex peut être utilisée pour décrire à peu près n’importe quelle liste de tables.
Vous pouvez exécuter des commandes externes avec --exec comme ceci :
mydumper --exec " /usr/bin/gzip FILENAME "
--exec est une implémentation à thread unique, similaire à celle de Stream. Le programme d'exécution doit être un chemin absolu. FILENAME sera remplacé par le nom de fichier que vous souhaitez traiter. Vous pouvez définir FILENAME à n'importe quel endroit comme argument.
Le fichier par défaut (aka : paramètre --defaults-file) commence à être plus important dans 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
Avant la 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
De à la 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
IMPORTANT : lorsque vous utilisez des options qui ne nécessitent pas d'argument comme : --no-data ou --events, vous devez définir n'importe quelle valeur pour ces variables qui indiqueront toujours : TRUE/ON/ENABLE. C'est une idée fausse si vous pensez que l'ajout --no-data=0
exportera des données :
[mydumper]
no-data=0
N'exportera PAS les données car aucune donnée n'est spécifiée.