Автоматическое обновление баз HostIP
Обновление через rsync и фильтрация лишних данных
HostIP.info — сервис, позволяющий определить физическое местоположение по IP-адресу. Бесплатная альтернатива MaxMind. Одним из достоинств данного сервиса является то, что он предоставляет возможность хранить геолокационную базу данных на своём сервере. Очевидно, что базу данных нужно обновлять время от времени.
Большим недостатком базы данных является то, что она содержит много лишней информации, например, индексы, которые могут никогда не понадобиться обычному приложению, поле cron, содержащее дату и время я так и не понял, чего. Если всю ненужную информацию отфильтровать, получается хорошая относительно компактная база.
Ниже приведён скрипт, выполняющий синхронизацию при помощи rsync и удаляющий лишние индексы, поля и данные из дампа при помощи sed. Обработанный дамп сохраняется в базу MySQL; с целью минимизации даунтайма сервиса используется RENAME TABLE.
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.
Автор: Vladimir; опубликовано в: Linux; метки: HostIP, Linux, MySQLЯнв
2009
Комментарии к статье «Автоматическое обновление баз HostIP» (3) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Автоматическое обновление баз HostIP»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


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