Sk8er
@Sk8er
Жесток, опасен, вспыльчив. Щеголь.

На чём делать бекап с удалённого сервера

Появилась нужда делать бекапы с удалённого сервера (с Ubuntu) на мой локальный сервер (тоже Ubuntu), где хранятся сайты, о чём уже спрашивал на Хабре :)

С файлами проблему решил с помощью rsync. Но вот как быть с mysql?

Гуглил — ничего интересного не нашёл. Понравился SypexDumper, но он только для локальных бекапов, а мне нужно делать с удалённого сервера.
Ещё читал про mysqldump, но он, как я понял, тоже для локального сервера.

Подскажите что стоит использовать. Желательно сразу давать ссылки на мануалы. :)

И да, сразу скажу, что на удалённом сервере я ограничен в правах. Так что устанавливать сторонние пакеты не могу.
  • Вопрос задан
  • 8209 просмотров
Пригласить эксперта
Ответы на вопрос 11
shadowalone
@shadowalone
Если можете подключаться к mysql удаленно, то пойдет тот же mysqldump.
Но проще делать дамп локально, а потом уже тянуть, тем же rsync
Ответ написан
Комментировать
@bondbig
Сливать mysqldump'ом в локальную директорию, дальше тот же rsync или scp, предварительно запаковав в tar.gz (по желанию). Скрипт на три строчки.
Unix-way предполагает совместное использование нескольких маленьких утилит для решения составных задач.
Ответ написан
smidth
@smidth
Программист-фрилансер
Делайте бекапы всех бд скриптом и сохраняйте в папку которая синхронизируется.
Вот здесь неплохой пример реализации написан bezumkin.ru/sections/hosting/261/
Ответ написан
Комментировать
AotD
@AotD
PHP, Redis, Postgresql
Ставим backupninja на локальный сервер.
Настраиваем ходилку на удаленный сервер по ssh ключику
Настраиваем правила бекапа для файлов и mysql
Радуемся :)
Ответ написан
eleventyseven
@eleventyseven
.Net разработчик
automysqlbackup
Пока нареканий нет. Мануал
Ответ написан
sledopit
@sledopit
Ещё читал про mysqldump, но он, как я понял, тоже для локального сервера.

та ну. а что же тогда в ман страничке вот эта опция делает?
·   --host=host_name, -h host_name
    Dump data from the MySQL server on the given host. The default host is localhost.
Ответ написан
MpaK999
@MpaK999
Буду!
Я вот этой библиотекой пользуюсь github.com/meskyanichi/backup возможность бэкапить разные базы, файлы, все это архивировать, сливать на сервисы а-ля S3, Dropbox и просто по ftp на удаленный сервер и отправлять сообщения о результатах работы на почту и мессенджеры.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Ну сделайте тот же сипекс дампер и потом rsync
Ответ написан
Комментировать
saaivs
@saaivs
Посмотрите на сервис mysqlbackuponline.com/. Если на удаленном сервере есть phpMyAdmin — это то что вам нужно, т.к. ничего дополнительно настраивать на сервере не нужно. В противном случае нужен доступ по SSH или должны быть открыты соответствующие порты и предоставлен доступ для mysqldump.
Ответ написан
Комментировать
KawaiDesu
@KawaiDesu
ssh remote.host "mysqldump DATABASE --opt --dump-date --single-transaction | gzip -f" > remote.host-dump.sql.gzip

Опции на мой вкус, gzip тоже не обязателен. Упрощённый вариант выглядит так:

ssh remote.host "mysqldump database" > remote.host-dump.sql
Ответ написан
Комментировать
@elliot
Я таким скриптом пользуюсь.

На выгоде получаются сжатые данные — по файлу на базу.
А скопировать по ssh или ftp на локальную машину можно.

#!/bin/bash


##########################################################
# Common options
##########################################################

# Linux bin paths, change this if it can not be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
TAR="$(which tar)"
RM="$(which rm)"


HOST="$(hostname)"
BACKUP_DIRECTORY="/var/www/_DUMP"






##########################################################
# MySQL options
##########################################################
MYSQL_USER="root" # Username
MYSQL_HOST="localhost" # Hostname
MYSQLDUMP_OPTIONS="--opt --default_character_set utf8"
MYSQL_BACKUP_DIR="$BACKUP_DIRECTORY/mysql" # Main directory where backup will be stored
MYSQL_SKIP_BACKUP_DATABASE_LIST="test information_schema mysql" # don't backup these databases


# get MYSQL_PASSWORD
read -s -p "Enter root MySQL password: " MYSQL_PASSWORD
echo "" 1>&2





#############################################################
# Backup MySQL databases
############################################################

# create backup dir
[ ! -d $MYSQL_BACKUP_DIR ] && mkdir -p $MYSQL_BACKUP_DIR || :


# Get MySQL database list
MYSQL_DATABASE_LIST="$($MYSQL -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD -Bse 'show databases')"

for db in $MYSQL_DATABASE_LIST
do
skipdb=-1

    if [ "$MYSQL_SKIP_BACKUP_DATABASE_LIST" != "" ];
    then
for i in $MYSQL_SKIP_BACKUP_DATABASE_LIST
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
fi

if [ "$skipdb" == "-1" ] ; then
FILE="$MYSQL_BACKUP_DIR/$db.$HOST.sql.gz"

     echo "Dump database: $db"

     # do all job in pipe,
     # connect to mysql using mysqldump for select mysql database
     # and pipe it out to gz file in backup dir
        $MYSQLDUMP $MYSQLDUMP_OPTIONS -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $db | $GZIP -9 > $FILE

        echo "Done."
    fi
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы