Переключение базы данных на mysql

Некоторые версии дистрибутива SberMobile Server содержат пакет MySQL сервера. Если этот пакет был выбран для установки, сервер будет автоматически использовать базу данных MySQL, и выполнять ниже описанные этапы Вам не нужно.

Если пакет MySQL был установлен, то его файлы находятся в подпапке mysql/ инсталляционной директории SberMobile Server. База данных находится в подпапке mysql/data/.

Инсталлятор настраивает MySQL для автозапуска во время загрузки ОС. Конфигурации SberMobile Server и MySQL по умолчанию оптимизируются для получения максимальной  производительности.

Имейте в виду,что пакет MySQL предварительно оптимизирован для производительности и требования к памяти у него довольно высокие. Вам, возможно, потребуется перенастроить инсталляцию MySQL, если ваш сервер имеет менее 4 Гб оперативной памяти.

Чтобы переключиться на использование MySQL в качестве сервера баз данных, следуйте общим инструкциям из параграфа Переключение на другой движок базы данных. Ниже приводятся специфичные для этого SQL-сервера шаги.

  • JDBC-драйвер MySQL  (MySQL-connector для Java) уже включен в дистрибутив SberMobile Server. Файл драйвера называется MySQL-connector-java-5.X.XX-ga-bin.jar, он находится в подпапке /lib в папке для инсталляции SberMobile Server. Чтобы добиться лучшей производительности и совместимости с поздними версиями  MySQL, можно обновить JDBC-драйвер MySQL до самой последней версии. На момент написания документации, эта версия доступна на http://www.mysql.com/products/connector/j/.
  • В Настройках Общей Конфигурации установите значение  переменной SberMobile Server'а Database Driver в значение com.mysql.jdbc.Driver. Это имя Java-класса для драйвера MySQL.
  • Формат переменной Database URL для MySQL имеет следующий вид: jdbc:mysql://[host][:port][/database], где host - IP-адрес или DNS-имя сервера MySQL (может быть пустая строка или localhost), port - это номер порта, на котором запущен сервер MySQL (пропустите эту часть URL чтобы использовать значение по умолчанию), database - имя базы данных, содержащей данные SberMobile Server'а. В качестве имени базы данных можно использовать server. Например, если Ваш MySQLSQL запущен на машине 192.168.0.1 с портом по умолчанию, используйте следующую строку в качестве URL: jdbc:mysql://192.168.0.1/server.
  • Установите значение переменной Database Dialect в MySQL 5 (MySQL5InnoDBDialect), если Вы используете MySQL 5 или MySQL (MySQLInnoDBDialect) для старых версий.
  • Если вы хотите использовать символы не из Юникода, необходимо указать параметр characterEncoding. Это можно сделать двумя способами:

    • Через URL базы данных: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
    • Через Дополнительные свойства: useUnicode = true, characterEncoding = UTF‌-8

    Если вы используете MySQL 8, необходимо указать следующий параметр: useSSL=false в URL вашей базы данных или через Дополнительные свойства.

    Установка mysql

    Для использования MySQL с SberMobile требуется сделать несколько изменений в настройках MySQL. Обычно эти настройки производятся изменением конфигурационного файла MySQL (по умолчанию my.ini).

    1. Добавьте параметр max_allowed_packet=100M, чтобы разрешить большие запросы.

    2. Установите значение параметра max_connections больше, чем значение общих настроек переменной SberMobile Server'а Минимальный размер пула соединений (например, max_connections=1000).

    3. Установите значение параметра innodb_buffer_pool_size в максимальное значение размера RAM, которое сервер MySQL может использовать. В случае выделенного сервера баз данных это значение стоит поставить в 80% от всей доступной в системе памяти.

    4. Установите значение параметра innodb_log_file_size в 25-50% от innodb_buffer_pool_size.

    5. Добавьте строки character-set-server = utf8 и collation-server = utf8_unicode_ci к конфигурации.

    Конфигурационный файл mysql

    Ниже приведен пример конфигурационного файла MySQL 5.7, подходящего для больших инсталляций SberMobile.

    [mysqld]

    port         = 3306

    # Вы можете использовать настройки сокета из созданного автоматически файла конфигурации.

    socket = /tmp/mysql.sock

    default-storage-engine = INNODB

    datadir = /data/mysql

    max_connections = 1000

    max_allowed_packet = 100M

    innodb_flush_log_at_trx_commit = 0

    innodb_buffer_pool_size = 2G

    innodb_log_file_size = 500M

    innodb_log_buffer_size = 8M

    innodb_lock_wait_timeout = 1200

    innodb_file_per_table = 1

    sort_buffer_size = 20M

    query_cache_size = 100M

    table_open_cache = 10000

    table_definition_cache = 10000

    thread_cache_size = 32

    innodb_thread_concurrency = 0

    character-set-server = utf8

    collation-server = utf8_unicode_ci

    Необходимо изменить /data/mysql на подлинный каталог данных для вашей инсталляции сервера MySQL. В Linux путь каталога файлов MySQL /var/lib/mysql.

    Изменение рамеров буфера

    Инсталляция MySQL в пакете с SberMobile Server для Windows конфигурируется для серверов высокой производительности. Если сервер установлен на низкопроизводителном устройстве (например, на ноутбуке), сервер MySQL может не запуститься из-за проблемы выделенной буферной памяти. В этом случае необходимо уменьшить размеры буфера:

    • Проверьте, что MySQL для SberMobile сервиса/процесса не запущен на сетевом компьютере или остановите его, если он запущен (вы можете контролировать сервис из Control Panel > Administration > Services)
    • Поправьте файл mysql/my.ini, расположенный в дистрибутивной папке SberMobile Server'а
    • Уменьшите innodb_buffer_pool_size, например, установите его на 500M
    • Уменьшите innodb_log_file_size на 25-50% от innodb_buffer_pool_size, например, установите его на 200M
    • Удалите файл регистрации MySQL (mysql/ib_logfile0 и mysql/ib_logfile1)
    • Снова запустите MySQL для сервиса SberMobile