Видео смотреть бесплатно

Смотреть кино видео

Официальный сайт seoturbina 24/7/365

Смотреть видео бесплатно

solomenikm 02.02.2010 19:39

How-to`sBackup баз mysql с помощью mysqlhotcopy

Задался целью сделать backup баз на локальный компьютер с помощью mysqlhotcopy, но вот беда - mysqlhotcopy не может копировать их на удаленную машину. Решил проблему скриптом.

Для всего этого нам понадобяться две программы sshpass и rsync. Установка на убунту sudo aptitude install sshpass rsync
А вот собсвенно сам скрипт:
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash

REMOTE_USER=root
# root пользователь сервера

REMOTE_PASS=******
# root пароль сервера

REMOTE_HOST=localhost
# адрес сервера

REMOTE_PORT=2222
# порт сервера

REMOTE_DB_USER=root
# Пользователь базы

REMOTE_DB_PASS=******
# Пароль к базе

REMOTE_TEMP_BACKUP_DIR=/var/temp_backup_mysql
# Временная папка для копии баз данных

LOCAL_BACKUP_DIR=/home/user/backup/mysql
# Backup-папка

mkdir -p $LOCAL_BACKUP_DIR
# Если Backup-папки нет - создаем

sshpass -p $REMOTE_PASS ssh -p $REMOTE_PORT $REMOTE_USER@$REMOTE_HOST "
mkdir -p $REMOTE_TEMP_BACKUP_DIR
mysqlhotcopy --user=$REMOTE_DB_USER --password=$REMOTE_DB_PASS db_1 db_2 db_3 $REMOTE_TEMP_BACKUP_DIR
"
# подключаемся по ssh к удаленному серверу. Предварительно устанавливаем ( sudo aptitude install sshpass ) sshpass чтобы можно было передавать пароль при подключении по ssh. Создаем временную папку. Выполняем копирование баз (db_1 db_2 db_3) во временную папку.

rsync -e "sshpass -p $REMOTE_PASS ssh -p$REMOTE_PORT" --progress --archive --delete-after --verbose $REMOTE_USER@$REMOTE_HOST:/$REMOTE_TEMP_BACKUP_DIR/ $LOCAL_BACKUP_DIR
# С помощью rsync ( sudo aptitude install rsync ) Копируем содержимое папки с базой на локальную машину.

sshpass -p $REMOTE_PASS ssh -p $REMOTE_PORT $REMOTE_USER@$REMOTE_HOST "rm -r $REMOTE_TEMP_BACKUP_DIR"
# Удаляем временную папку на сервере



Буду очень признателен за коментарии и дополнения относительно этого скрипта, т.к. Backup - наше все :)

P.S. ВАЖНО!!! Не делайте так если у вас базы innodb


Тэги: backup bash mysql rsync
+ 3 -
Похожие Поделиться

cppmm 02.02.2010 20:49 #
+ 1 -
Надо будет запомнить. Удобный ход. А то на работе использую bakula, а дома руками бекапил, потому как разворачивать там bakula накладно. :)
digiwhite 02.02.2010 20:49 #
+ 0 -
Вы могли бы рассказать, каким образом делать бэкап, скажем, "простым копированием". Смысл в чем, у меня есть БД mysql, вот надо все базы "затарить" да перелить на другой жесткий диск. Каким образом это сделать без всяких сторонних инструментов.

ЗЫ: и да, у меня не продакшен, а так, дома. Так что никакие дополнительные инструменты ставить не хочу.
solomenikm 02.02.2010 21:01 #
+ 0 -
Если вам нет нужды это все делать по ssh, то можно это сделать выполнив следующую команду: mysqlhotcopy --user=db_user --password=db_pass db_1 db_2 db_3 /var/backup/mysql после чего скопировать ее содержимое и кинуть куда следует на другой машине (/var/lib/mysql). Можно и тупо скопировать все файлы из /var/lib/mysql одной машины на другую, черевато глюками, что делать в случаи отказа базы при таком методе переноса я написал в своей статье тут: http://welinux.ru/post/2173/, по большому счету нужно тупо переустановить mysql-server.
cppmm 02.02.2010 21:04 #
+ 1 -
# mysqldump -u root -p > dumpfile.sql
Enter password:
# bzip2 dumpfile.sql
# scp dumpfile.sql.bz2 login@backuphost:/path/to/backupdir/dumpfile_ddmmccyy.sql.bz2
Password:

Вот, примерно так. Это ручками.
digiwhite 02.02.2010 21:17 #
+ -1 -
А пароль все время запрашивает? Или его можно ввести сразу, чтобы тогда можно было бы в крон повесить это все.
cppmm 02.02.2010 21:24 #
+ 2 -
Чтобы не спрашивало, надо указывать ту базу, которую надо букапить. Например:
# mysqldump -u root --password=password databasename > dumpfile.sql
digiwhite 02.02.2010 21:58 #
+ 0 -
Угу, понял, спасибо! :)
solomenikm 02.02.2010 21:09 #
+ 0 -
Да, я в пост уже дописал, но повторюсь, что мой способ копирования не годен для innodb.
Murz 21.07.2010 11:43 #
+ 0 -
А по каким причинам он для innodb не подходит и каким образом тогда innodb копировать можно?
Задача у меня состоит в поддерживании актуальной резервной копии базы на другом сервере (раз в сутки синхронизировать), но полностью все данные гонять не хочется между серверами, хотелось бы только изменения гонять чтобы трафик экономить.
Но базы есть как myisam так и innodb.

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн