На разделе где расположена mysql - закончилось место, как можно перенести часть баз.
Какие вообще есть варианты ?
Какие вообще есть варианты ?
10.04.2019 20:38:25
На разделе где расположена mysql - закончилось место, как можно перенести часть баз.
Какие вообще есть варианты ? |
|
|
10.04.2019 20:41:41
Решение
1. Если раздела LVM то просто расширить место добавлением диска. 2. Почитить внутри mysql самую большую таблицу (можно глянуть через phpmyadmin или что то подобное) - обычно сатстистика или что такое разростается. 3. СОЗДАНИЕ СИМВОЛИЧЕСКИХ ССЫЛОК - и перенести туда одну из БД |
|
|
10.04.2019 20:44:37
Немного про 3й вариант:
1. Если таблицы MyISAM тут никаких проблем: таблицы MyISAM хранит в виде трёх файлов: tbl_name.frm - описание структуры таблицы, tbl_name.myd (myData) - данные, хранящиеся в таблице, tbl_name.myi (myIndex) - индексы. Если MySQL сервер остановить, то путём простого копирования этих файлов можно перенести таблицу на другой сервер. Это иногда намного удобнее и быстрее, чем сдампить таблицу на одном сервере и залить дамп на другом 2. Если InnoDB то: Из коробки InnoDB хранит все таблицы в общем пуле ibdata и описанный в вопросе трюк невозможен. Однако, если MySQL сервер настроен на использование file-per-table tablespaces, для каждой таблицы будет создаваться отдельная пара файлов (вида tbl_name.frm - структура и tbl_name.ibd - даныне и индексы). Помимо описанного трюка, это даёт другие преимущества, вроде быстрого выполнения запросов TRUNCATE TABLE и возможности получить обратно дисковое пространство, занятое таблицей, при её удалении (в случае использования ibdata* дисковое пространство при удалении таблиц не освобождается). Настройка выглядит так (в my.cnf): [mysqld] innodb_file_per_table=1 При остановленном MySQL сервере файлы .frm и .ibd можно копировать и переносить, как и в случае MyISAM, а если нужно скопировать таким образом таблицу, не останавливая сервер, нужно прибегнуть к хитрости - сбросить на диск кеш и "выгрузить" таблицу (таблицы), которые хотим скопировать: FLUSH TABLES table_one, table_two FOR EXPORT; Теперь файлы .frm и .ibd можно копировать на лету - разумеется, с момента FLUSH до окончания копирования работать с данной таблицей нельзя (но можно с остальными). "Подключение" перенесённой на другой сервер таблицы InnoDB выглядит так: Создаём на новом месте в базе с таким же именем (это важно), как у базы, в которой находилась переносящаяся таблица, таблицу с такой же структурой, как переносящаяся (пустую) Выполняем ALTER TABLE tbl_name DISCARD TABLESPACE; Подкладываем скопированные файлы tbl_name.frm и tbl_name.ibd Выполняем ALTER TABLE tbl_name IMPORT TABLESPACE; Вуаля, таблица перенесена! Перед тем, как впервые воспользоваться этой инструкцией для операций с живыми данными, |
||||
|
||||