SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.11.2008 13:06:19

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Наращивание мощьности.

Здравствуйте.

Я задам вопрос который рано или позно начинает мучать каждого кто администрирует СУБД. Что делать когда сервер не справляется с количеством запросов? Когда-то этот вопрос начал задвать и я себе. На первых порах мы решили просто создать 2 идентичные базы на разных серверах и синхронизировать их по mysqldump, потом 3, потом 4. Метод дубовый и как по мне неправильный. Следующим этапом была репликация. Наверное односторонняя репликация сама по себе вещь хорошая и надежная, но нам нужно было модифицировать обе базы и что бы изменения перетекали между ними. Сделали двухстороннюю репликацию. Все хорошо. но однажды на одном серваке после празников закончилось дисковое пространство и репликация рухнула. В итоге, нам не удалось без потерь данных восстановить репликацию, очень было сложно выбрать эталонную базу, так как изменения были с обоих сторон. С горем по полам эта система продолжает работать правда уже в другом нашем проекте. Наконец были предприняты попытки перейти на кластер. Но эта затея даже не пошла в продакшен, потому что есть некоторые ограничения под которые наша существующая база какраз подпадает.

Что же за такая интересная БД у нас, спросите вы...
размер - 380Мб на сегодняшинй день
количество таблиц - 208
есть таблицы MyISAM, есть InnoDB
база постоянно работает вот с такой нагрузкой -  Queries per second avg: 67.889
в ПХП коде используются тяжелые запросы типа вложеных селектов и многоэтажных джойнов (как говорят программисты сейчас практически нереально передалть работающую систему и упростить запросы)

вот в таком состоянии база, по скорости, работает на твердую 4 ИМХО. Тоесть такие сложные запросы выполняются приблизительно по 2 секунды, бывают моменты когда скорость выполнения возрастает до 10 сек это в пики, а может и больше. Но пиков все больше и что будет через несколько месяцев я не знаю.

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

Спасибо.

Неактивен

 

#2 26.11.2008 15:42:19

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Наращивание мощьности.

> в ПХП коде используются тяжелые запросы типа вложеных селектов и многоэтажных джойнов (как говорят программисты сейчас практически нереально передалть работающую систему и упростить запросы)

Это не позволит использовать кластер, потеряете в десятки раз производительность.

Можете использовать обычную круговую репликацию. За надежностью следить Вам.

Неактивен

 

#3 26.11.2008 18:06:07

_Сергей
Завсегдатай
Зарегистрирован: 26.11.2008
Сообщений: 36

Re: Наращивание мощьности.

rgbeast написал:

Можете использовать обычную круговую репликацию. За надежностью следить Вам.

по большому счету я готов следить за надежностью, если бы я был уверен что в случае сбоя я не потеряю данные которые хранятся с бинарных логах.
В связи с этим меня посетила мысль. А возможен ли такой вариант при котором существует 2и больше мастера и один слейв. На первый взгляд может показаться что это звучит странно, но я ищу способ при котором бы у меня была одна эталонная БД, содержащая в себе все изменения. Суть идея такая:
есть 2 сервера на которых настроена круговая репликация, оба они являются одновременно и мастером и слевом друг для друга, я хочу сюда еще ввести хост который будет только слейвом для тех двух мастеров. При таком варианте у меня по-идее всегда должна быть хотя бы одна полностью актуальная БД со всем изменениями. И тогда в случае краха могу с чистой душой останавливать все слейвы синхронизировать все базы и делать ресет бинарым логам, при этом как бы начинать все с чистого листа и не потерять данные.

Такое вообще релаьно?

Спасибо.

Неактивен

 

#4 26.11.2008 18:46:31

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Наращивание мощьности.

Можно сделать такую конфигурацию

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson