Оглавление | ||
---|---|---|
|
MySQL/MariaDB-сервер (далее - MySQL) используется как постоянное хранилище для большинства данных биллинговой системы. Доступ к нему со стороны приложений биллинга осуществляется посредством сетевого соединения, поэтому MySQL может быть установлен на отдельной машине с любой поддерживаемой ОС. Для небольших баз, либо тестовых целей возможна установка MySQL на одну машину с сервером биллинга и другими серверными приложениями - весь процесс установки описан под этот случай и все конфигурации по умолчанию также ориентированы на этот случай.
Для работы биллинга необходим MySQL/MariaDB-сервер версии 5.5 и новее. Служба MySQL-сервера должна быть запущена до момента старта всех серверных приложений биллинга.
После установки MySQL-сервера (см. далее) произведите его настройку в соответствии требованиями и рекомендациями по настройке MySQL-сервера с нашего WiKi.
Якорь | ||||
---|---|---|---|---|
|
...
Блок кода | ||||
---|---|---|---|---|
| ||||
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8_unicode_ci&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false
db.user=bill
db.pswd=bgbilling |
Если база данных MySQL и приложение приложения биллинга установлены на одной машине, то ничего менять не надо. В противном случае вместо 127.0.0.1 указывается IP-адрес машины с БД. Параметры db.user и db.pswd определяют имя пользователя и пароль, под которыми приложение будет подключаться к базе данных. Возможна настройка отдельного пользователя MySQL для каждого серверного приложения биллинга, это позволит сразу видеть источник запроса на MySQL-сервере.
Обратите внимание на параметры URL characterEncoding и connectionCollation - значения должны соответствовать реальной картине с кодировками (см. ниже).
Пользователь bill с паролем bgbilling создаётся при начальном создании БД при установке сервера биллинга (скрипт dump.sql).
Обратите внимание на параметры characterEncoding и connectionCollation - значения должны соответствовать реальной картине с кодировками (также см. ниже).
Установка
Linux
Подсказка |
---|
|
...
Блок кода | ||
---|---|---|
| ||
apt-get install software-properties-common dirmngr apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8 add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirrorams2.truenetworkmirrors.rudigitalocean.com/mariadb/repo/10.2/debian stretch main' apt-get update apt-get install mariadb-server mariadb-client |
...
Блок кода | ||
---|---|---|
| ||
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [client] # Кодировка по-умолчанию при подключении консольным клиентом и mysqldump default-character-set = utf8mb4 [mysqld] # Кодировка сервера character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # Интерфейс, на котором будет открыт порт #bind-address = 127.0.0.1 # Каталог для хранения БД, высокие требования по надёжности и скорости #datadir = /var/lib/mysql # каталог для хранения временных файлов, желательно чтобы это был tmpfs #tmpdir = /tmp #log-error = /var/lib/mysql/mysqld.log # PID файл процесса #pid-file = /var/run/mysqld/mysqld.pid # Логирование запросов, выполняющихся длительное время #log-slow-queries = /var/log/slowquery.log #long_query_time = 1 # Ограничение на максимальное число соединений с БД max_connections = 1000 # Тип хранилища таблиц по-умолчанию default-storage-engine = InnoDB # Режим разбора SQL-запросов sql_mode = # Отключаем DNS резолвинг для устанавливаемых соединений skip-name-resolve # Максимальный размер пакета с запросом, принимаемого сервером max_allowed_packet = 64M # Для каждой таблицы InnoDB - отдельный файл innodb_file_per_table=1 # Путь к каталогу под журнал транзакций, можно вынести на отдельный диск #innodb_log_group_home_dir = # Размер главного буфера InnoDB, он должен составлять порядка 70-80% от RAM сервера для выделенного сервера БД. # Если же на сервере присутсвуютприсутствуют другие приложения - то с учетом того, чтобы хватило памяти всем. innodb_buffer_pool_size = 512M # Размер каждого файла журнала в группе журналов (указывается в мегабайтах), # рекомендуемое значение - 25% от innodb_buffer_pool_size, но в пределах 64M-512M innodb_log_file_size = 128M # кол-во файлов в группе журналов innodb_log_files_in_group = 2 innodb_log_buffer_size = 16M # Вызов sync диска не на каждой транзакции, а раз в секунду - ускорение работы, меньше зависимость от скорости диска innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT # Число одновременно работающих потоков InnoDB, рекомендуемые границы: 16 - 256 innodb_thread_concurrency = 128 # Время ожидания прекращения блокировки (записи) прежде чем будет произведен откат транзакции innodb_lock_wait_timeout = 120 # Максимальное кол-во одновременно открытых таблиц table_open_cache = 1024 # Максимальный размер временной таблицы, которая будет расположена в RAM max_heap_table_size = 64M tmp_table_size = 64M # Буферы на каждый поток read_buffer_size = 2M read_rnd_buffer_size = 8M sort_buffer_size = 8M join_buffer_size = 8M key_buffer_size = 32M # Размер кэша запросов query_cache_size = 64M # максимальный раз, при котором результат запроса будет помещен в кэш query_cache_limit = 4M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 64M [mysqldump] # Маскимально возможный размера пакета при снятии дампов утилитой mysqldump max_allowed_packet = 64M [mysqld_safe] # Лимит количества открытых файлов (в дополнение к лимиту ОС) open-files-limit = 4096 |
...
Примечание |
---|
|
См. также wiki.
Кодировки
Рекомендуемая для использования кодировка для новых инсталляций - utf8mb4.
...
Если collation установлен именно "utf8_unicode_ci" — также обратите внимание на параметр "connectionCollation=utf8_unicode_ci" в db.url в data.properties (см. выше). Здесь и в других местах его приходится дополнительно прописывать, т.к. для MySQL collation по-умолчанию для utf8 является utf8_general_ci.
Дополнительная конфигурация службы Linux
Для стабильной работы MySQL/MariaDB в Linux рекомендуется увеличить лимиты открытых пользователем файлов (файловых дескрипторов). Для этого в файле /etc/security/limits.conf необходимо указать:
Блок кода | ||
---|---|---|
| ||
mysql soft nofile 10000
mysql hard nofile 10000 |
В некоторых дистрибутивах (например, RHEL/CentOS 7) systemd не использует PAM и лимиты из файла limits.conf игнорируются. Поэтому в дополнение к редактированию limits.conf рекомендуется создать файл дополнительной конфигурации для сервиса systemd. Например, если файл сервиса (каталог /lib/systemd/system) называется mysqld.service, то создаем каталог /etc/systemd/system/mysqld.service.d и в нем файл с именем override.conf и содержимым:
Блок кода | ||
---|---|---|
| ||
[Service]
LimitNOFILE=10000 |
При использовании ntp мы также рекомендуем настроить сервис MySQL/MariaDB так, чтобы он стартовал после выполнения синхронизации времени. Поэтому общее содержимое override.conf может быть таким:
Блок кода | ||
---|---|---|
| ||
[Unit]
After=time-sync.target
[Service]
LimitNOFILE=10000 |
Действия при смене datadir
...