LINUX.ORG.RU

Запись в БД из скрипта. Что делать если сервер временно не доступен?

 ,


0

1

Скрипт запускается по крону, формирует массив, значения из которого заносятся в цикле в базу mysql на удаленном сервере:

echo "INSERT INTO table (value1,value2) VALUES ('${Array[$i]}', '$Date');" \
| mysql -uuser -ppas -h some.host database

Иногда связь с сервером пропадает:

ERROR 2003 (HY000): Can't connect to MySQL server on  (110)

На ум приходят такие варианты:

1) пытаться записывать значения в цикле до тех пор пока они будут записаны, то есть исчезнет ошибка. Но тут есть проблема, что связи может не быть долго, а скрипт должен выполнится до конца.

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

★★
Ответ на: комментарий от kachan

В данных, зачем их хранить в «10 местах» если они уже есть в базе?

Такое впечатление, что мы разный тред читаем. Ничего, что в топикстарте как раз и стоит задача c гарантией сохранить данные в базу?

Откуда ты выкопал «10 мест»? JSON-так — место промежуточного хранения, куда скрипт с гарантией может быстро положить данные и откуда данные с гарантией уйдут потом в БД. После чего во временном хранилище будут удалены.

Их не нужно накапливать, они уже есть.

Ты сейчас про какую задачу? А то в топикстарте данные-то есть, но проблема их гарантированно сохранить.

дело в том что все скрипты будут это делать, место закончится, и что дальше?

Почему оно кончится? Потому что MySQL-сервер будет убит и не станет подниматься в течении года?

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Откуда ты выкопал «10 мест»? JSON-так — место промежуточного хранения, куда скрипт с гарантией может быстро положить данные и откуда данные с гарантией уйдут потом в БД. После чего во временном хранилище будут удалены.

Будь у тебя больше 10-20к записей я думаю ты бы понял. Я работал с базой в которой сумарное количество актуальных записей по одной сущности больше 2х милиардов (еще раз повторюсь, только одна сущность). И если бы мы на ~300 наших кронов создавали сохранение в файлы то уже давно бы вся система навернулась, будь бы отключен коннект к бд хоть на 5 минут.

Ты сейчас про какую задачу?
Скрипт запускается по крону, формирует массив, значения из которого заносятся в цикле в базу mysql на удаленном сервере:

Про эту, данные есть раз есть откуда формировать.

Почему оно кончится? Потому что MySQL-сервер будет убит и не станет подниматься в течении года?

Будь у тебя хоть 10тб под это, оно закончится будь у тебя нормальные обьёмы данных.

kachan ★★
()
Ответ на: комментарий от KRoN73

Но всё же, я не хочу показаться грубым и гнуть свою линию. Покажите мне задачу в которой надо вот кровь из носу записать данные после работы крона и которые нельзя будет сгенерить по прошествию времени.

kachan ★★
()
Ответ на: комментарий от kachan

которые нельзя будет сгенерить по прошествию времени.

объемы данных маленькие, но каждый раз уникальные и привязанные к дате (ежедневные), в базу заносятся для дальнейшего удобного анализа.

nerve ★★
() автор топика
Ответ на: комментарий от kachan

Я работал с базой в которой сумарное количество актуальных записей по одной сущности больше 2х милиардов

Ну и какое отношение это имеет к задаче топикстартера?

KRoN73 ★★★★★
()
Ответ на: комментарий от kachan

Что мешает генерить данные за

вы как-то не так поняли или я не понимаю.

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

что мешает генерить такие данные? уникальность данных.

nerve ★★
() автор топика
Ответ на: комментарий от kachan

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

Ыгсперд по хайлоаду и большим таблицам когда нибудь слышал слово «метрики» ? Ыгсперд ... знал бы чего это люди гибнут за металл бьются за гарантированную доставку онных :)

anonymous
()
Ответ на: комментарий от anonymous

Дампы никто теперь не сохраняет за время? «метрики» при чём?

kachan ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.