Системный администратор. Все для системного администратора: библиотека электронных книг, полезные статьи, мануалы.
mysqldump [параметры] [база_данных] > /[директория_для_дампа]/[имя_дампа].sql
Обязательными параметрами являются имя пользователя и пароль. Если пароль не указать в явном виде (с помощью ключа -pPASSWORD), то его необходимо будет ввести с клавиатуры.
С полным перечнем параметров можно ознакомиться с помощью справки (man mysqldump в консоли Unix) или запустив mysqldump --help.
Несколько наиболее часто встречающихся примеров использования утилиты mysqldump:
создание дампа одной базы данных на удаленном хосте:
mysqldump -uroot -h8.8.8.8 -p database > /tmp/database.sql
создание дампа одной базы данных на локальном хосте:
mysqldump -uroot -p database > /tmp/database.sql
создание дампа нескольких баз данных:
mysqldump -uroot -p -B database1 database2 database3 > /tmp/databases.sql
создание дампа всех баз данных:
mysqldump -uroot -p -A > /tmp/databases.sql
создание дампа + сжатие полученного дампа в архив gz:
mysqldump uroot -p -A | gzip > /tmp/databases.sql
развертывание sql-дампа базы:
mysql -uroot -p database < /tmp/database.sql
развертывание gz архива с sql-дампом одной базы:
zcat /tmp/database.sql.gz | mysql -uroot -p database
развертывание gz архива с sql-дампом всех баз:
zcat /tmp/database.sql.gz | mysql -uroot -p
Пример bash-скрипта для создания резервной копии баз данных утилитой mysqldump:
#!/bin/bash
DATE="$(date +%Y%m%d)"
logger -t mysql-backup 'start mysql backup'
/usr/bin/mysqldump --user=USER --password=PASSWORD --all-databases | gzip > /usr/local/backup/mysql$DATE.sql.gz 2>&1
logger -t mysql-backup 'finish mysql backup'
#mysql
👉 @i_odmin#!/bin/bash
# Скрипт делает резервную копию БД
# если сервер MySQL не запущен, то выходим
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
ping_output=`$MYADMIN ping 2>&1`; ping_alive=$(( ! $? ))
if [ $ping_alive = 0 ]; then
logger -t mysql-backup 'MYADMIN ping FAIL'
exit
fi
BACKUP="/usr/bin/innobackupex-1.5.1 --no-lock"
workdir="/usr/local/tmp/"
DofW=`date +'%u'`
full=0
incr=0
# если суббота - делаем полный бекап, иначе инкрементальный
if [ "$DofW" = "6" ];
then
full=1
logger -t mysql_backup 'make full backup'
else
incr=1
logger -t mysql_backup 'make incremental backup'
fi
if [ $full == '1' ];
then
logger -t mysql_backup 'start mysql full backup'
dump="mysql"`date +%Y%m%d`"full.tar"
ext=".gz"
# при распаковке использовать ключ -i, например tar -ixvf backup.tar
$BACKUP --user=USER --password=PASSWORD --stream=tar ./ | pigz -p 5 > ${workdir}${dump}${ext}
logger -t mysql_backup 'finish mysql full backup, start rsync'
# с помощью rsync копируем резервную копию на удаленный сервер
rsync --bwlimit=5000 ${workdir}${dump}${ext} 192.168.0.4::backup
logger -t mysql_backup 'finish rsync'
rm -f ${workdir}/mysql*
fi
if [ $incr == '1' ];
then
logger -t mysql_backup 'start mysql incremental backup'
# получаем значение LSN из последнего лога бекапа
LSN=`cat /usr/local/sbin/innobackupex.log | grep "The latest check point (for incremental):" | awk -F"'" '{print $2}' | tail -n 1`
echo $LSN > /usr/local/sbin/lsn
dump="mysql"`date +%Y%m%d`"incr"
archiv="mysql"`date +%Y%m%d`"incr.tar.gz"
ext=".tar.gz"
$BACKUP --user=USER --password=PASSWORD --incremental --incremental-lsn=$LSN --stream=xbstream ./ > ${workdir}${dump}.xbstream
logger -t mysql_backup 'finish mysql incremental backup, start tar'
cd ${workdir}
`tar -czf $archiv $dump.xbstream`
rm -f ${workdir}/*.xbstream
logger -t mysql_backup 'finish tar, start rsync'
# с помощью rsync копируем резервную копию на удаленный сервер
rsync --bwlimit=5000 ${workdir}${dump}${ext} 192.168.0.4::backup
logger -t mysql_backup 'finish rsync'
rm -f ${workdir}/mysql*
fi
#Percona #XtraBackup
👉 @database_info