@stopkilling_dolphins

Как организовать передачу данных на mysql сервер?

Есть локальная база данных и есть база данных на nic.ru
Необходимо регулярно передавать данные из трех таблиц на локальном ресурсе в идентичные три таблицы на хостинге.
Хостинг ограничивает удаленные подключения к mysql, только через ssh-туннель.
Как лучше организовать передачу данных? Через репликацию?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
Репликация наложит на Вас ограничения:
- БД на сервере будет Read Only
- Если вы что-то не так сделаете на локальной базе, то изменения улетят в удаленную, будете восстанавливать.
- Может потребоваться дополнять эти таблицы, а удаление записей на мастере, повлечет удаление записей на реплике.

1. Выгружайте каждую таблицу. Есть 2 способа, если у Вас есть права выгружать результаты запросов в файл и если их нет.
Первый: https://mariadb.com/kb/en/library/select-into-outfile/
SELECT * INTO OUTFILE '/path/to/file.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM tablename
WHERE ID > N;


Второй способ выгрузить таблицу:
mysql -h host -u user -p password -e "SELECT * FROM tablename WHERE ID > N;" > /path/to/file.txt


2. Подключаетесь к серверу по ssh, или устанавливаете ssh туннель:
ssh user@example.com -L 3306:127.0.0.1:3306 -N

3. Загружаете каждую таблицу с помощью mysqlimport:
mysqlimport -h host -u user -p password target_database /path/to/file.txt


При этом, в случае конфликта записей вы получите соответствующие предупреждения. По окончании загрузки у Вас будет видна статистика: сколько записей загружено успешно, сколько ошибочно.

В целом вот такой вариант я использовал для накопления статистических таблиц с посещениями сайта на 1c-bitrix, в отдельной локальной БД, т.к. housekeeping записей был настроен на хостинге раз в 30 дней, а статистика для анализа требовалась более чем за полгода. Главное в этом методе - наличие ID поля, по которому можно идентифицировать позицию, а также договоренность о том, что ID остается неизменным.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@stopkilling_dolphins Автор вопроса
Спасибо, отказался от идеи с репликацией, копирую данные через scp
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы