Как да споделям голяма база данни на mysql
Имам голяма база данни MySQL за един от проектите.
Голям, той е около 1 TB (950 GB) и нараства.
Периодично, няколко пъти в годината, това чудо се излива. Причините са различни, най-често това е свързано с рейд (рейд 1) - винтовете излитат, а след синхронизирането индексните таблици умират. И съответно, цялото нещо трябва да бъде възстановено, което създава много неудобства.
Основата се състои само от 7 таблици във формата MyISAM. Основните данни са в една таблица (
InnoDB беше изоставен веднага след първия опит за възстановяване на база данни от 300 GB, това беше кошмар.
Възможно е да промените метода на съхранение по такъв начин, че тази таблица да бъде разбита на английска азбука, т.е. вместо 1 маса 850 GB, получавате 850/26
Това несъмнено ще увеличи скоростта на възстановяване в случай на проблеми, както и ще даде възможност за работа с части от базата данни, независимо от други части (тук имам предвид, че ако сте възстановили таблици: "A", "B", "C ", след това те могат да бъдат върнати на работа).
Посещаемостта (заедно с PS) варира от 150k до 1kk на ден, около 25-50 заявки в секунда достига до базата данни.
Въпроси:
- Какви са клопките в това разделение на основата (32 таблици вместо 1)?
- Как иначе можете да разделите големи бази?
- Има ли начини да се избегне разделянето, освен репликацията и промяната на метода за съхранение, по-специално рейд?
P.S. Ако има литература по тази тема (съхранение и управление на „големи“ количества данни), моля, помогнете с имената.
Благодаря за отговора!
Не знаех за такава възможност, ще тествам и обмислям.
Може би вече имате опит с използването на разделяне и можете да кажете какво ще се случи, ако падне един от файловете на разделената таблица? Както разбирам, всички заявки към тази таблица ще спрат да работят, докато свитият файл не бъде възстановен, докато таблицата не бъде напълно възстановена (тук е записано, че „[с] SELECT, INSERT, UPDATE MySQL ще извърши следните манипулации: отвори всички дялове на всички таблици, участващи в заявката . "Това означава, че ако файлът на 1-ва таблица се провали, например файлът с буквата" A ", таблицата не може да бъде отворена, въпреки че заявката ще използва файла само с буквата "Z"). Така е?