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

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

Ниже приведён скрипт, выполняющий синхронизацию при помощи rsync и удаляющий лишние индексы, поля и данные из дампа при помощи sed. Обработанный дамп сохраняется в базу MySQL; с целью минимизации даунтайма сервиса используется 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.

Добавить в закладки
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • БобрДобр
  • Мистер Вонг
  • Yandex.Закладки
  • Текст 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Писали
  • СМИ 2
  • Моё Место
  • 100 Закладок
  • Ваау!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - IN.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA
  • Slashdot
  • Magnolia
  • Blogmarks
  • Current
  • Meneame
  • Oknotizie
  • Diigo
  • Funp
  • Hugg
  • Dealspl.us
  • N4G
  • Mister Wong
  • Faves
  • Yigg
  • Fresqui
  • Care2
  • Kirtsy
  • Sphinn

Связанные записи

2
Янв
2009

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

  1. Ангелина says:

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

  2. Юрий says:

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

Подписаться на RSS-ленту комментариев к статье «Автоматическое обновление баз HostIP» Trackback URL: http://blog.sjinks.org.ua/linux/469-automatic-update-for-hostip-database/trackback/

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

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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

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