MyDumper es una herramienta de copia de seguridad lógica de MySQL. Tiene 2 herramientas:
mydumper
que es responsable de exportar una copia de seguridad consistente de las bases de datos MySQLmyloader
lee la copia de seguridad de mydumper, se conecta a la base de datos de destino e importa la copia de seguridad. Ambas herramientas utilizan capacidades de subprocesos múltiples.
MyDumper es de código abierto y lo mantiene la comunidad, no es un producto de Percona, MariaDB o MySQL.
Documentación Oficial (trabajo en progreso)
Esta sección ha sido migrada.
Primero obtenga la URL correcta de la sección de lanzamientos y luego:
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
Para ubuntu, necesitas instalar las dependencias:
apt-get install libatomic1
Luego puede descargar e instalar el paquete:
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
Usando paquete
pkg install mydumper
o desde puertos
cd /usr/ports/databases/mydumper && make install
Usando cerveza casera
brew install mydumper
Tenga en cuenta que el archivo mydumper.cnf estará ubicado en /usr/local/etc o /opt/homebrew/etc. Por lo tanto, es posible que necesites ejecutar mydumper/myloader con:
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
Debe seleccionar una biblioteca de desarrollo de proveedor.
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 viene por defecto con bibliotecas MariaDB 5.5 que son muy antiguas. Quizás sea mejor descargar una versión más reciente de estas bibliotecas (MariaDB, MySQL, Percona, etc.).
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
Correr:
cmake .
make
sudo make install
Hay que asegurarse de que pkg-config, mysql_config, pcre-config estén todos en $PATH
El volcado de Binlog está deshabilitado de forma predeterminada para compilarlo, debe agregar -DWITH_BINLOG=ON a las opciones de cmake
Para compilar con bibliotecas mysql < 5.7, debe deshabilitar SSL agregando -DWITH_SSL=OFF
Puede descargar la imagen oficial de Docker o puede crear la imagen de Docker desde fuentes locales o directamente desde fuentes de Github con el Dockerfile proporcionado.
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
Tenga en cuenta que el objetivo principal que aborda Dockerfile es el desarrollo y la compilación desde el código fuente localmente. Puede que no sea óptimo para fines de distribución, pero también puede funcionar como una solución rápida de compilación y ejecución con la frase anterior.
Ver uso
Todo esto se hace siguiendo las mejores prácticas y tradiciones de MySQL:
Por ahora, esto no proporciona instantáneas consistentes para motores no transaccionales; se espera soporte para eso en 0.2 :)
Una vez puede usar la funcionalidad --regex, por ejemplo, para no volcar bases de datos mysql, sys y de prueba:
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
Para volcar solo mysql y probar bases de datos:
mydumper --regex ' ^(mysql.|test.) '
Para no volcar todas las bases de datos que comienzan con prueba:
mydumper --regex ' ^(?!(test)) '
Para volcar tablas específicas en diferentes bases de datos (Nota: el nombre de las tablas debe terminar con $. Problema relacionado):
mydumper --regex ' ^(db1.table1$|db2.table2$) '
Si desea volcar un par de bases de datos pero descartar algunas tablas, puede hacer:
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
Lo que volcará todas las tablas en db1 y db2 pero excluirá db1.table1 y db2.table2.
Por supuesto, la funcionalidad de expresiones regulares se puede utilizar para describir prácticamente cualquier lista de tablas.
Puedes ejecutar comandos externos con --exec así:
mydumper --exec " /usr/bin/gzip FILENAME "
--exec es una implementación similar a la de Stream, de un solo subproceso. El programa ejecutivo debe ser una ruta absoluta. NOMBRE DE ARCHIVO será reemplazado por el nombre de archivo que desea que se procese. Puede establecer FILENAME en cualquier lugar como argumento.
El archivo predeterminado (también conocido como: parámetro --defaults-file) está empezando a ser más importante en 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
Antes de 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
Desde hasta 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
IMPORTANTE: cuando use opciones que no requieren un argumento como: --no-data o --events, debe establecer cualquier valor para esas variables que siempre indicarán: VERDADERO/ON/ENABLE. Es un MAL CONCEPTO si cree que agregar --no-data=0
exportará datos:
[mydumper]
no-data=0
NO exportará los datos ya que no se especifican datos.