Автоматическое обновление баз HostIP

Обновление через rsync и фильтрация лишних данных

HostIP.info — сервис, позволяющий определить физическое местоположение по IP-адресу. Бесплатная альтернатива MaxMind. Одним из достоинств данного сервиса является то, что он предоставляет возможность хранить геолокационную базу данных на своём сервере. Очевидно, что базу данных нужно обновлять время от времени.

Большим недостатком базы данных является то, что она содержит много лишней информации, например, индексы, которые могут никогда не понадобиться обычному приложению, поле cron, содержащее дату и время я так и не понял, чего. Если всю ненужную информацию отфильтровать, получается хорошая относительно компактная база.

Ниже приведён скрипт, выполняющий синхронизацию при помощи rsync и удаляющий лишние индексы, поля и данные из дампа при помощи sed. Обработанный дамп сохраняется в базу ; с целью минимизации даунтайма сервиса используется RENAME TABLE.

[-]
Download sync_hostip.sh
#! /bin/sh

RSYNC=/usr/bin/rsync
MYSQL=/usr/bin/mysql
# Имя пользователя MySQL
MYSQL_USER=root
# Пароль пользователя MySQL
MYSQL_PASS=pass
# Имя базы данных
MYSQL_DB=geolocation
SED=/bin/sed
# Абсолютный путь к скрипту, исключая имя скрипта
MYDIR=/opt/hostip

cd $MYDIR
$RSYNC -aqz rsync://hostip.info/hostip/mysql ./
cd $MYDIR/mysql
cat hip_all.sql | $SED -r -e '{ s/  KEY `.*$//g; T L1; d; : L1 s/  `cron`.*$//g; T L2; d; : L2 }' -e "{ s/(  PRIMARY KEY  .*),/\1/g; s/,'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}'//g; }" | $SED -r -e '{ /CREATE TABLE/,/^\).*;/ N; N; s/,\n\)/\n\)/; }' > hip2.sql
$MYSQL -u$MYSQL_USER -p$MYSQL_PASS -D$MYSQL_DB < hip2.sql
echo "ALTER TABLE ip4 ADD KEY ip(ip); DROP TABLE IF EXISTS geo_ip; RENAME TABLE ip4 TO geo_ip; DROP TABLE IF EXISTS geo_countries; RENAME TABLE countries TO geo_countries; DROP TABLE IF EXISTS geo_country_cities; RENAME TABLE cityByCountry TO geo_country_cities" | $MYSQL -u$MYSQL_USER -p$MYSQL_PASS -D$MYSQL_DB
rm -f hip2.sql
cd $MYDIR

Данный скрипт успешно работает на ExtremeMember.com.

Автор: ; опубликовано в: Linux; метки: HostIP, Linux, MySQL
2
Янв
2009

RSS Комментарии к статье «Автоматическое обновление баз HostIP» (3)  »

  1. Ангелина

    Не плохо работает

  2. Юрий

    Обяязаательно опробую, но заранее спасиибо огромаадное! Давненько заглядываюсь на эту тему.

  3. borderlands

    Спасибо, посмотрим!

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Автоматическое обновление баз HostIP»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा