Масштабирование LOAD DATA IN FILE

slach

Новичок
Масштабирование LOAD DATA IN FILE

братцы, помогите разобраться с архитектурой

1) планируется система построенная по SOA принципу
основными компонентами системы будут
Linux Debian Etch + Xen - OS и паравиртуализатор в качестве инструментария развертывания виртуальных OS для облегчения дальнейшего переноса их на раздельное железо

веб-сервер и лоад-балансер = nginx
несколько apllication серверов = fcgi-php5.2.3+apc
mysql5.0.x - сервер БД

2) в данную систему множество GUI\WEB клиентов, делают много конкуретных (т.е. в одни и теже таблицы) LOAD DATA INFILE , плюс некоторое количество INSERT\UPDATE\DELETE

планируется примерно 1000-1500 одновременных коннектов, каждый делает примерно от 100 000 до 200 000 вставок через LOAD DATA INFILE предварительно почистив свои данные через DELETE, с периодичностью 1 раз в 4-6 часов - приемлимая длительность загрузки данных 20-30 минут
плюс еще 2000-3000 коннектов которые делают не очень большие селекты

3) в качестве протокола обмена выбран gziped XML over HTTPS, т.е. веб-сервис построенный на REST архитектуре

4) железо пока только такое - Dual Opteron 200 серии + 4Gb RAM + SATA, потом все будет разнесено на 3-4 сервера с 2G RAM + SCSI

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

вопросы у меня такие
1) как масштабировать LOAD DATA INFILE ??? и DELETE\INSERT\UPDATE??? мне кажется что Master\Slave репликация для MySQL тут не прокатит, NDB кластер, насколько я понимаю платное решение??? циклическая репликация??? а КАК ее сделать?? где про это прочитать?? и что делать с fail-over любой ноды в кольце?? использовать MySQL 5.1 и партионинг???

2) мне сразу похоронить идею с InnoDB ??? Или все таки попробовать использовать "длинные транзакции" вместо атомарных SQL STATEMENTS в MyISAM
что посоветуете почитать по поводу оптимизации InnoDB кроме презентаций Петра Зайцева на MySQLConf2007?

3) насколько я понимаю на указанном железе nginx такое количество HTTPS коннектов спокойно выдерживает, но как быть с трафиком??? где прочитать про оптимизацию nginx и стека TCP/IP под Linux Debian Etch, статьи и презентации Игоря Сысоева про FreeBSD и 100000 коннектов читал, хочется чтото такое же, но под Linux

4) идея с Xen для помощи развертывания кластера правильная??? или лучше всего для этой цели использовать что нибудь типа http://www.mosix.org/ (http://freshmeat.net/projects/mosix/?branch_id=68398&release_id=257876)?

5) каким инструментарием пользоваться в качестве мониторинга производительности и мониторинга ошибок??? пока я остановился на связке splunk, cacti, nagios, innotop, nginx_stat RRD

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

-~{}~ 30.07.07 19:08:

в догонку, несколько ответов на мои вопросы
http://www.mysql.com/news-and-events/newsletter/2003-06/a0000000195.html

получается что поскольку у меня как раз используется PRIMARY KEY рандомный фактически, то мне InnoDB противопоказан
 

Апельсин

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

LOAD DATA INFILE + DELETE лучше где-то аккумулировать и запускать "пакетами".

MySQL кластер тебе не нужен.

Циклическая репликация может быть полезна так как писать можешь на разные машины, но там чтобы нормально сделать опять таки лучше использовать auto_increment + auto_increment_offset для генерации уникальных первичных ключей.

Вот статья про циклическую репликацию:
http://www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html

Ее же переводили на русский язык в PHPinside.

Если один мастер падает либо какие-то maintenance, то перенапраправлять нагрузку на другой сервер. Из-за этого лучше держать каждый из серверов "недонагруженным", чтобы в случае выхода второго сервера из строя, второй мог справится с нагрузкой.

В партиции пока лучше не лезь, 5.1 еще бета и не факт что партиции тебе помогут.
 
Сверху