UNPKG

@voicenter-team/mysql-dynamic-cluster

Version:

Galera cluster with implementation of dynamic choose mysql server for queries, caching, hashing it and metrics

305 lines 8.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.schema = void 0; const AmqpInterfaces_1 = require("../types/AmqpInterfaces"); const LoggerInterfaces_1 = require("../types/LoggerInterfaces"); const binaryType = 'base64'; exports.schema = { defaultPoolSettings: { user: { doc: 'default cluster username', format: String, default: '', env: "MYSQL_DEFAULT_USER" }, password: { doc: 'default cluster password', format: String, default: '', env: "MYSQL_DEFAULT_PASSWORD" }, database: { doc: 'default cluster database', format: String, default: '', env: "MYSQL_DEFAULT_DATABASE" }, port: { doc: 'default cluster port', format: Number, default: 3306, env: "MYSQL_DEFAULT_PORT" }, connectionLimit: { doc: 'default cluster connection limit', format: Number, default: 100, env: "MYSQL_DEFAULT_CONNECTION_LIMIT" }, validators: { doc: 'default cluster validators', format: Array, default: [ { key: 'wsrep_ready', operator: '=', value: 'ON' }, { key: 'wsrep_local_state_comment', operator: '=', value: 'Synced' }, { key: 'Threads_running', operator: '<', value: 50 } ] }, loadFactors: { doc: 'default cluster load factors', format: Array, default: [ { key: 'Connections', multiplier: 2 }, { key: 'wsrep_local_recv_queue_avg', multiplier: 10 } ] }, timerCheckRange: { doc: 'default cluster check range', format: Object, default: { start: 5000, end: 15000 } }, timerCheckMultiplier: { doc: 'default cluster check multiplier', format: Number, default: 1.3 }, queryTimeout: { doc: 'default cluster query timeout', format: Number, default: 2 * 60 * 1000, env: 'MYSQL_DEFAULT_QUERY_TIMEOUT', }, slowQueryTime: { doc: 'default cluster slow query timeout', format: Number, default: 1, env: 'MYSQL_DEFAULT_QUERY_SLOW', }, redisFactor: { doc: 'default cluster redis factor', format: Number, default: 1, env: 'MYSQL_DEFAULT_REDIS_FACTOR', } }, showMetricKeys: { doc: 'show metric keys', format: Boolean, default: false, env: "MYSQL_SHOW_METRIC_KEYS" }, serviceMetrics: { database: { doc: 'database name', format: String, default: 'swagger_realtime', env: "MYSQL_SERVICE_METRICS_DATABASE" }, table: { doc: 'table name', format: String, default: 'Service', env: "MYSQL_SERVICE_METRICS_TABLE" } }, clusterHashing: { nextCheckTime: { doc: 'next check cluster time', format: Number, default: 5000, env: "MYSQL_CLUSTER_CHECK_TIME" }, dbName: { doc: 'name of database for cluster nodes', format: String, default: 'mysql_dynamic_cluster', env: "MYSQL_CLUSTER_DB_NAME" } }, redisInstant: { doc: 'redis connection instant', format: '*', default: false, env: "MYSQL_REDIS_INSTANT" }, hosts: { doc: 'use hashing cluster', format: Array, default: [], env: "MYSQL_HOSTS" }, useClusterHashing: { doc: 'use hashing cluster', format: Boolean, default: true, env: "MYSQL_USE_CLUSTER_HASHING" }, clusterName: { doc: 'name of cluster', format: String, default: 'demo', env: "MYSQL_CLUSTER_NAME" }, errorRetryCount: { doc: 'execute retry count', format: Number, default: 2, env: "MYSQL_RETRY_COUNT" }, redis: { enabled: { doc: 'enable Redis cache', format: Boolean, default: false, env: "MYSQL_REDIS_ENABLE" }, keyPrefix: { doc: 'prefix for redis keys', format: String, default: "mdc:", env: "MYSQL_REDIS_PREFIX" }, expire: { doc: 'redis key expire time in seconds', format: Number, default: 1000000, env: "MYSQL_REDIS_EXPIRE" }, expiryMode: { doc: 'redis key expire time in seconds', format: ['EX'], default: "EX", env: "MYSQL_REDIS_EXPIRE_MODE", }, algorithm: { doc: 'redis hash algorithm', format: ['md5', 'sha256'], default: "md5", env: "MYSQL_REDIS_ALGORITHM", }, encoding: { doc: 'redis hash encoding', format: ['base64', 'hex'], default: binaryType, env: "MYSQL_REDIS_ENCODING" }, clearOnStart: { doc: 'clear reids cache on start', format: Boolean, default: false, env: "MYSQL_REDIS_CLEAR_ON_START" } }, logs: { level: { doc: 'Log output level', format: [...Object.values(LoggerInterfaces_1.LOGLEVEL)], default: LoggerInterfaces_1.LOGLEVEL.INFO, env: "LOGGER_LOG_LEVEL" }, output: { doc: 'Where to output logs. Options are: console, file. Multiple can be separated by comma (",")', format: String, default: 'console', env: "LOGGER_LOG_OUTPUT" }, }, amqp_logs: { topic: { doc: 'Amqp topic', format: String, default: 'MYSQL_CLUSTER_LOGS', env: 'LOG_AMQP_TOPIC', }, connection_master: { host: { doc: 'Amqp host', format: String, default: '', env: 'LOG_AMQP_HOST_MASTER', }, port: { doc: 'Amqp port', format: Number, default: 5672, env: 'LOG_AMQP_PORT_MASTER', }, username: { doc: 'Amqp username', format: String, default: '', env: 'LOG_AMQP_USERNAME_MASTER', }, password: { doc: 'Amqp password', format: String, default: '', env: 'LOG_AMQP_PASSWORD_MASTER', }, vhost: { doc: 'Amqp vhost', format: String, default: '/', env: 'LOG_AMQP_VHOST_MASTER', }, ssl: { doc: 'Amqp ssl', format: Boolean, default: false, env: 'LOG_AMQP_SSL_MASTER', }, heartbeat: { doc: 'Amqp heartbeat', format: Number, default: 5, env: 'LOG_AMQP_HEARTBEAT_MASTER', } }, exchage: { name: { doc: 'Amqp exchange name', format: String, default: 'Logs', env: 'LOG_AMQP_EXCHANGE_NAME', }, type: { doc: 'Amqp exchange type', format: [...Object.values(AmqpInterfaces_1.ExchangeType)], default: AmqpInterfaces_1.ExchangeType.TOPIC, env: 'LOG_AMQP_EXCHANGE_TYPE', } }, queue: { name: { doc: 'Amqp queue name', format: String, default: 'MYSQL_CLUSTER_LOGS', env: 'LOG_AMQP_QUEUE_NAME', } }, bindings: { enabled: { doc: 'binding queue to exchange', format: Boolean, default: true, env: 'LOG_AMQP_BINDINGS_ENABLED', }, pattern: { doc: 'Amqp topic route', format: String, default: 'mysql_logs', env: 'LOG_AMQP_BINDINGS_PATTERN', } }, prefetch: { doc: 'Amqp prefetch number', format: Number, default: 0, env: 'LOG_AMQP_prefetch', } } }; //# sourceMappingURL=schema.js.map