https://github.com/percona/percona-xtrabackup/releases
https://github.com/amwork2010/docker-xtrabackup
docker run --volumes-from my-database -v /var/backups/mysql:/target --rm martinhelmich/xtrabackup
Dockerfile:
FROM debian:stretch-slim
RUN apt-get -qq update && \
apt-get -qq install wget lsb-release gnupg2 && \
wget -q https://repo.percona.com/apt/percona-release_latest.stretch_all.deb && \
dpkg -i percona-release_latest.stretch_all.deb && \
apt-get -qq update && \
apt-get -qq install percona-xtrabackup-24 && \
apt-get -qq purge wget && \
apt-get -qq autoclean && apt-get -qq autoremove && rm -rf /tmp/* /var/cache/apt/* /var/cache/depconf/*
COPY entrypoint.sh /entrypoint.sh
VOLUME /var/backup/mysql
ENTRYPOINT [ "/entrypoint.sh" ]
entrypoint.sh:
#!/usr/bin/env bash
[[ -n "${DEBUG}" ]] && set -x
set -e
XTRABACKUP="$(command -v xtrabackup)"
if [[ ! -x "${XTRABACKUP}" ]]; then
echo "${XTRABACKUP} is not executable!"
exit 1
fi
if [[ ! -d "${XTRABACKUP_SOURCE_DIR}" || ! "$(ls -A ${XTRABACKUP_SOURCE_DIR})" ]]; then
echo "directory '${XTRABACKUP_SOURCE_DIR}' doesn't seem to contain a database"
echo "check your env variable '\${XTRABACKUP_SOURCE_DIR}' please"
exit 1
fi
if [[ -n "${@}" ]]; then
# if custom cmd is provided, run xtrabackup with it
${XTRABACKUP} ${@}
else
# run default backup routine
${XTRABACKUP} \
--no-version-check \
--backup \
--datadir=${XTRABACKUP_SOURCE_DIR} \
--target-dir=${XTRABACKUP_TARGET_DIR}
${XTRABACKUP} \
--no-version-check \
--prepare \
--target-dir=${XTRABACKUP_TARGET_DIR}
fi
exit 0
签名:这个人很懒,什么也没有留下!