Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>можно ли настроить MySQL 8.0+, чтобы некоторые базы (выборочно) хранились в другом месте (не на с диске)?
SELECT @@datadir;
даст расположение каталога с БД
Каждый подкаталог там — отдельная БД.
Можно попробовать вот что. Перенести каталог некоторой БД физически в другое место, а на его прежнем месте создать junction point или symbolic link с тем же именем на новое расположение.
Получится ли — не знаю.
P.S. Попробовал. Вроде работает, БД вижу, новую таблицу в ней смог создать
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Каждый подкаталог там — отдельная БД.
вот тока в той папке тока часть данных от этой БД ...
если скопировать тока одну папку без файлов в корневеке — то во становить обратно не получится...
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>вот тока в той папке тока часть данных от этой БД ... VYR>если скопировать тока одну папку без файлов в корневеке — то во становить обратно не получится...
Здравствуйте, vvv848165@ya.ru, Вы писали:
PD>>А что за файлы в корне ?
Понятно.
Но вообще-то примонтированная как symlink папка рассматривается как просто папка в этом каталоге. Сервер обращается к ней, а NTFS переадресует вызов к файлам , физически находящимся в другом месте. Все это прозрачно для ПО сервера, если только он специально не борется с этим.
Что же касается файлов в корне, то они там на месте и остаются.
Поэтому мне не вполне понятно, в чем проблема. Если сделать как я сказал — удается работать или нет ? Если потом удалить симлинк и перенести папку на ее родное место — что происходит ?
P.S. Кроме симлинков, есть еще и хардлинки, но на них ограничение — только на том же томе. Грубо говоря, сделать хардлинк — это просто сделать, чтобы файл или каталог был в двух разных каталогах. Тут уж точно не должно быть проблем, но решение ли это для тебя — не знаю.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Поэтому мне не вполне понятно, в чем проблема. Если сделать как я сказал — удается работать или нет ? Если потом удалить симлинк и перенести папку на ее родное место — что происходит ?
удаётся. но нельзя перенести это в другую MySQL (там не вся информация ...) да и вобще структура вроде сохраняется в отдельной папке (не той которая совпадает с именем бд)...
Можно, для начала файл в таблицу лучше врубить, конечно.
Потом, если БД уже есть, сделать дамп старой.
Посмотреть путь, где хранятся БД
datadir
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
Считаем, что БД там лежат
Дальше:
1. Создать новую БД
2. стопнуть сервер
3. подменить /var/lib/mysql/databasename на симлинк на то место, где должно лежать
4. скопировать в то место содержимое "старого" каталога
5.1 (опционально) заполнить данными из дампа (см начало поста)
5.2 (другой вариант), запустить OPTIMIZE TABLE
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>на рабочем сервере наверное так не стоит делать (вдруг что-то пойдёт не так).
Что касается надёжности — то это точно не тот вариант, т.к. её проще сделать через репликацию, конечно.
Но с точки зрения "расширить место" как раз именно так и сделано. Даже больше скажу, некоторые БД вообще по nfs подрублены и физически лежат на другом сервере.
От этого проблем не испытываем, проблемы есть в мускуле, точнее, в том, что СУБД не умеет работать на нескольких серверах и все эти "танцы с бубуном" только ради "большего места", а процы и ОЗУ всё равно на одном сервере используется и производительность страдает.
Я просто не знаю какая проблема решается у вас в проекте, но если надо именно быстродействие, то следующий шаг — это переписывание логики бека, что бы он читал с одного места ( слейвов ), а писал в другое ( мастер ), при соотношении чтение/запись даже 10/1 это можно делать спокойно.
Здравствуйте, VikDD, Вы писали:
VDD>Я просто не знаю какая проблема решается у вас в проекте
былоб хорошо BackUP выборочный делать из MySQL в MySQL.
если на разных серверах — то всё хорошо (даже лучше не надо)
Но вот BackUP с одним сервером (чтобы BackUP просто был на другом винте) — проблема.
(поясню — формат БД не нормализован и со своими особенностями — чтобы сделать эффективный (менее ресурсоёмкий) BackUP лучше сделать специальные запросы в рабочей и BackUP базе чтоб не копировать лишнее)
Здравствуйте, VikDD, Вы писали:
VDD>Из БД в БД в рамках одной СУБД?
для разных серверов одним запросом ничего не сделаешь... (одна субд но на разных серверах)
VDD>Может, есть смысл поднять 2 мускуля на разных дисках и настроить репликацию?
да как так можно установить на 1 PC 2 MySql (вроде не возможно — тока в VM ware наверное, но он так работать не будет)
VDD>Как "лайт версия" (для БД до пары-тройки Гб) вариант mysqldump + zip по крону раз в сутки.
чтото я вобще не понял...
а что у MySQL есть ограничения по размеру?
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>для разных серверов одним запросом ничего не сделаешь... (одна субд но на разных серверах)
Да, так нельзя
VYR>да как так можно установить на 1 PC 2 MySql (вроде не возможно — тока в VM ware наверное, но он так работать не будет) можно
VYR>а что у MySQL есть ограничения по размеру?
На время создания дампа БД лучше лочить, если просто mysqldump запустить, то он лочит таблицы по очереди, но это чревато проблемами с FK
Чем больше БД — тем дольше идёт дамп... до 2-3 Гб это время "допустимо", а потом "очень долго" становится.
Здравствуйте, VikDD, Вы писали:
VYR>>да как так можно установить на 1 PC 2 MySql (вроде не возможно — тока в VM ware наверное, но он так работать не будет) VDD>можно https://mybiblioteka.su/tom2/8-28328.html
офигеть даже под Win похожее возможно... (даже не представлял что похожее возможно)
панацея!!!
а в документации MySQL по поводу изменения INI файла и запуска 2 экземпляра что-нибудь написано?
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>а в документации MySQL по поводу изменения INI файла и запуска 2 экземпляра что-нибудь написано?
Там описано, что можно его (путь файла) передавать, как минимум. Т.е. с каким именно ini-файлом работать конкретному процессу СУБД. Не думаю что Win тут чем-то от Linux будет отличаться.
В конечном счёте — mysql — это такой же процесс сервис/демон, который не лучше остальных в системе и который можно запустить столько раз, сколько админу будет нужно.