orlov0562
@orlov0562
I'm cool!

Как поделить большую mysql базу?

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

У меня на одном из проектов есть большая MySQL база.
Большая, это около 1 Тб ( 950 Гб ) и она растет.

Периодически, несколько раз в год, это чудо сыпется. Причины бывают разные, чаще всего это связано с рейдом (raid 1) - вылетают винты, а после синхронизации умирают таблицы индексов. И соответственно приходится все это дело восстанавливать, что доставляет массу неудобств.

База состоит всего из 7 таблиц формата MyISAM. Основные данные находятся в одной таблице (~ 850 Гб).

От InnoDB отказались сразу же после первой попытки восстановления 300 Гб базы, это был кошмар.

Есть возможность изменить способ хранения таким образом, чтобы данную таблицу разбить по англ алфавиту, т.е. вместо 1 таблицы 850 Гб, получится 850 / 26 ~ 32 Гб

Это несомненно увеличит скорость восстановления в случае проблем, а так же даст возможность работать с частями базы, независимо от других частей (тут я имею ввиду, что если восстановили таблицы: "A", "B", "C", то их можно вернуть в работу).

Посещаемость (вместе с ПС) колеблется от 150к до 1кк в день, к базе попадает, около 25-50 запросов в секунду.

Вопросы:
- Какие есть подводные камни, в таком делении базы (32 табл вместо 1)?
- Каким еще образом можно делить большие базы?
- Есть ли способы избежать разделения, кроме репликации и изменения способа хранения, в частности рейда?

P.S. Если есть литература, на эту тему (хранение и управление "большими" объемами данных), прошу помочь с названиями.

Спасибо!
  • Вопрос задан
  • 4020 просмотров
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
Наверное, стоит лучше использовать партиционирование вместо ручного биения по таблицам
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы