2011-01-08 5 views
5

У меня есть два экземпляра mysql на одном компьютере. Установки находятся в каталоге/usr/loca/mysql1 и/usr/local/mysql2.изменение пути my.cnf по умолчанию в mysql

У меня есть отдельные файлы my.cnf, расположенные в/etc/mysql1 и/etc/mysql2. Я установил первый экземпляр моего sql с использованием исходного дистрибутива и с параметром --prefix =/usr/local/mysql1. Второй я получил от копирования и pastinf той же директории в/usr/local/mysql2.

Когда я запустил mysql daemon на /usr.local/mysql/libexec, он считывает файл my.cnf в/etc/mysql1. И если я запускаю демон mysql в/usr/local/mysql2, он читает тот же файл my.cnf. У меня есть отдельные номера портов и файлы .sock, определенные в файле .cnf в этих двух местах.

Я могу прочитать файл my.cnf во втором месте, используя параметр --defaults-file =/etc/mysql2/my.cnf при запуске mysqld. Мне не нужно вводить это каждый раз при каждом запуске демона.

Если у меня будет больше экземпляров, как я могу указать правильный файл my.cnf для чтения каждому демона mysql. Что такое retionale за ссылками mysqld с файлом my.cnf.

Как я могу предопределить местоположение файла my.cnf для каждого экземпляра.

+0

Просто напишите два разных сценария запуска mysqld (или mysqlmanager), которые отделяют каждый от другого – ajreal

+0

Какая у вас ОС? –

ответ

6

Как вы уже обнаружили, MySQL имеет скомпилированное местоположение поиска для своего файла конфигурации. Хотя вы можете перекомпилировать себя, изменив это, вы также обнаружили --defaults-file вариант mysqld, который инструктирует его использовать совершенно другой путь конфигурации. В сочетании с --data-dir это означает, что вы можете запускать несколько экземпляров MySQL, привязанных к различным портам (и адресам, если понравилось) и работать с совершенно отдельными наборами данных, при работе с теми же двоичными файлами и библиотеками.

Традиционно большинство дистрибутивов операционной системы связывают один сценарий инициализации для запуска экземпляра MySQL по умолчанию; то есть тот, который установлен в «обычном» месте и со стандартным путем конфигурации. Несмотря на то, что это подходит для наиболее распространенного случая, то, что вам нужно, немного отличается, поэтому вам нужно создать отдельные сценарии для запуска отдельных экземпляров.

Если вы планируете развертывать большое количество экземпляров MySQL на одном компьютере (и я должен был бы спросить, почему), тогда вы можете написать собственный сценарий инициализации, который имеет какой-то способ «обнаружения» каждого из них (возможно, путем проверки какого-либо каталога, содержащего «общий» макет), а затем перебирает их, начиная каждую из них. Конечно, один и тот же сценарий инициализации должен быть способен обнаруживать и закрывать каждый из них.

0

Я думаю, что единственный верный способ - скомпилировать исходный код с опцией префикса. Либо это, либо создайте скрипт bash, который запустит mysql2 с параметром -defaults-file, а затем используйте его, чтобы запустить его.

Однако, «создание» другой установки так, как вы делали, не очень хорошо. Когда вы компилируете пакет, PREFIX жестко закодирован в исполняемый файл. Поэтому всякий раз, когда он ищет ресурс, он начинается с этого префикса, если только не будет указано с параметрами командной строки.

Итак, если бы я был вами, я бы просто перекомпилировал исходный код с новым префиксом.