7.8 Запуск нескольких экземпляров MySQL на одном компьютере
В некоторых случаях может потребоваться запустить несколько экземпляров MySQL на одном компьютере. Возможно, вы хотите протестировать новую версию MySQL, не затрагивая существующую производственную настройку. Или вы можете предоставить различным пользователям доступ к разным серверам mysqld, которые они управляют самостоятельно. (Например, вы можете быть поставщиком интернет-услуг, который хочет предоставить независимые установки MySQL для разных клиентов.)
Можно использовать различные двоичные файлы сервера MySQL для каждого экземпляра, или использовать один и тот же двоичный файл для нескольких экземпляров, или любое сочетание этих двух подходов. Например, вы можете запустить один сервер из MySQL 9.1 и один из MySQL 9.2, чтобы увидеть, как разные версии обрабатывают заданную рабочую нагрузку. Или вы можете запустить несколько экземпляров текущей производственной версии, каждый из которых управляет различным набором баз данных.
Используете ли вы отдельные двоичные файлы сервера или нет, каждый запущенный экземпляр должен быть настроен с уникальными значениями для нескольких параметров операционной системы. Это устраняет возможность конфликтов между экземплярами. Параметры могут быть заданы в командной строке, в файлах параметров или путём установки переменных среды. См. Раздел 6.2.2, «Указание параметров программы». Чтобы увидеть значения, используемые данным экземпляром, подключитесь к нему и выполните SHOW
VARIABLES оператор.
Основным ресурсом, управляемым экземпляром MySQL, является каталог данных. Каждый экземпляр должен использовать отдельный каталог данных, местоположение которого задаётся с помощью параметра --datadir=. Методы настройки каждого экземпляра с собственным каталогом данных и предупреждения о рисках, связанных с отсутствием этого, см. в Разделе 7.8.1, «Настройка нескольких каталогов данных».dir_name
Помимо использования различных каталогов данных, для каждого экземпляра сервера должны иметь разные значения несколько других параметров:
-
--portуправляет номером порта для TCP/IP-соединений. В качестве альтернативы, если у хоста несколько сетевых адресов, вы можете установить системную переменнуюbind_address, чтобы каждый сервер прослушивал другой адрес. -
--socket={file_name|pipe_name}--socketуправляет путем к файлу Unix-соккета в Unix или именем именованной трубы в Windows. В Windows необходимо указывать разные имена труб только для тех серверов, которые настроены для поддержки соединений по именованным трубам. -
--shared-memory-base-name=nameЭтот параметр используется только в Windows. Он обозначает имя разделяемой памяти, используемое сервером Windows, чтобы разрешить клиентам подключаться с помощью разделяемой памяти. Необходимо указывать разные имена разделяемой памяти только для тех серверов, которые настроены для поддержки соединений через разделяемую память.
-
Этот параметр указывает имя файла, в который сервер записывает свой идентификатор процесса.
Если вы используете следующие параметры файлов журналов, их значения должны отличаться для каждого сервера:
Дополнительные сведения о параметрах файлов журналов см. в Разделе 7.4, «Журналы сервера MySQL».
Для повышения производительности можно задать следующий параметр по-разному для каждого сервера, чтобы распределить нагрузку между несколькими физическими дисками:
Наличие разных временных каталогов также облегчает определение, какой сервер MySQL создал тот или иной временный файл.
Если у вас есть несколько установок MySQL в разных местах, вы можете указать базовый каталог для каждой установки с помощью параметра --basedir=. Это заставит каждый экземпляр автоматически использовать другой каталог данных, файлы журналов и файл PID, потому что значение по умолчанию для каждого из этих параметров является относительным по отношению к базовому каталогу. В этом случае единственными другими параметрами, которые вам нужно указать, являются dir_name--socket и --port параметры. Предположим, что вы устанавливаете разные версии MySQL, используя tar двоичные дистрибутивы файлов. Они устанавливаются в разных местах, поэтому вы можете запустить сервер для каждой установки, используя команду bin/mysqld_safe в соответствующем базовом каталоге. mysqld_safe определяет правильный параметр --basedir для передачи в mysqld, и вам нужно указать только параметры --socket и --port для mysqld_safe.
Как обсуждается в следующих разделах, можно запускать дополнительные серверы, указывая соответствующие параметры команды или устанавливая переменные среды. Однако, если вам нужно запускать несколько серверов на более постоянной основе, удобнее использовать файлы параметров, чтобы указать для каждого сервера те значения параметров, которые должны быть уникальными для него. Параметр --defaults-file пригодится для этой цели.
© 2025 Oracle
Licensed under the GPLv2 License.