【干货】一键生成MySQL配置文件

news/2025/10/31 17:39:17/文章来源:https://www.cnblogs.com/zhouhuanhuan/p/19180789

【干货】一键生成MySQL配置文件

1

关键代码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>MySQL配置文件生成工具</title><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"><style>:root {--primary: #3498db;--secondary: #2980b9;--success: #2ecc71;--warning: #f39c12;--danger: #e74c3c;--light: #f8f9fa;--dark: #2c3e50;--gray: #6c757d;--light-gray: #e9ecef;--border: #dee2e6;--card-bg: rgba(255, 255, 255, 0.95);}* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;line-height: 1.6;background: linear-gradient(135deg, #1a2a6c, #2c3e50);color: #333;min-height: 100vh;padding: 20px;}.container {max-width: 1400px;margin: 0 auto;}header {text-align: center;padding: 30px 0;margin-bottom: 30px;background: var(--card-bg);border-radius: 15px;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);position: relative;overflow: hidden;}header::before {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 5px;background: linear-gradient(90deg, var(--primary), var(--success));}header h1 {color: var(--dark);font-size: 2.8rem;margin-bottom: 10px;background: linear-gradient(90deg, var(--primary), var(--success));-webkit-background-clip: text;-webkit-text-fill-color: transparent;font-weight: 700;}header p {color: var(--gray);font-size: 1.2rem;max-width: 800px;margin: 0 auto;}.main-content {display: grid;grid-template-columns: 1fr 1fr;gap: 30px;margin-bottom: 40px;}@media (max-width: 992px) {.main-content {grid-template-columns: 1fr;}}.card {background: var(--card-bg);border-radius: 15px;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);overflow: hidden;transition: transform 0.3s ease;}.card:hover {transform: translateY(-5px);}.card-header {background: linear-gradient(90deg, var(--primary), var(--secondary));color: white;padding: 20px 25px;display: flex;align-items: center;justify-content: space-between;}.card-header h2 {font-size: 1.7rem;font-weight: 600;display: flex;align-items: center;gap: 10px;}.card-body {padding: 30px;}.form-group {margin-bottom: 25px;position: relative;}.form-group label {display: block;margin-bottom: 10px;font-weight: 600;color: var(--dark);display: flex;align-items: center;gap: 8px;}.form-group .info-icon {color: var(--primary);cursor: pointer;font-size: 1rem;}.form-control {width: 100%;padding: 14px 18px;border: 2px solid var(--border);border-radius: 10px;font-size: 1rem;transition: all 0.3s;background: white;}.form-control:focus {border-color: var(--primary);box-shadow: 0 0 0 4px rgba(52, 152, 219, 0.2);outline: none;}.range-container {display: flex;align-items: center;gap: 20px;}.range-container input[type="range"] {flex: 1;height: 8px;border-radius: 4px;background: var(--light-gray);outline: none;}.range-value {background: var(--primary);color: white;padding: 6px 15px;border-radius: 20px;min-width: 80px;text-align: center;font-weight: 600;}.checkbox-group {display: flex;flex-wrap: wrap;gap: 20px;margin-top: 15px;}.checkbox-item {display: flex;align-items: center;gap: 10px;padding: 8px 15px;background: var(--light-gray);border-radius: 8px;transition: all 0.2s;}.checkbox-item:hover {background: #dbeafe;}.checkbox-item input {width: 20px;height: 20px;}.btn {display: inline-block;padding: 15px 30px;background: var(--primary);color: white;border: none;border-radius: 10px;font-size: 1.1rem;font-weight: 600;cursor: pointer;transition: all 0.3s;box-shadow: 0 4px 10px rgba(52, 152, 219, 0.3);}.btn:hover {background: var(--secondary);transform: translateY(-3px);box-shadow: 0 6px 15px rgba(52, 152, 219, 0.4);}.btn:active {transform: translateY(-1px);}.btn-block {display: block;width: 100%;text-align: center;}.btn-success {background: var(--success);box-shadow: 0 4px 10px rgba(46, 204, 113, 0.3);}.btn-success:hover {background: #27ae60;box-shadow: 0 6px 15px rgba(46, 204, 113, 0.4);}.btn-light {background: var(--light-gray);color: var(--dark);box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);}.btn-light:hover {background: #d1d7dc;box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15);}.config-output {background: #1e2b3c;color: #f0f7ff;border-radius: 10px;padding: 25px;font-family: 'Fira Code', 'Courier New', monospace;font-size: 0.95rem;line-height: 1.8;max-height: 600px;overflow: auto;white-space: pre;margin-bottom: 25px;box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.4);}.actions {display: flex;gap: 15px;flex-wrap: wrap;}.actions .btn {flex: 1;min-width: 200px;}.param-row {display: flex;align-items: center;padding: 12px 0;border-bottom: 1px solid var(--border);}.param-row:last-child {border-bottom: none;}.param-name {flex: 0 0 35%;font-weight: 600;color: var(--dark);}.param-value {flex: 0 0 65%;color: var(--gray);}.tabs {display: flex;border-bottom: 2px solid var(--light-gray);margin-bottom: 25px;flex-wrap: wrap;}.tab {padding: 12px 25px;cursor: pointer;border-bottom: 3px solid transparent;transition: all 0.3s;font-weight: 600;color: var(--gray);}.tab.active {border-bottom-color: var(--primary);color: var(--primary);background: rgba(52, 152, 219, 0.1);}.tab-content {display: none;}.tab-content.active {display: block;}.highlight {color: #5dade2;font-weight: bold;}.comment {color: #7f8c8d;font-style: italic;}.value {color: #f39c12;}footer {text-align: center;padding: 25px;color: rgba(255, 255, 255, 0.7);font-size: 1rem;background: rgba(0, 0, 0, 0.2);border-radius: 15px;margin-top: 20px;}.info-box {background: #e3f2fd;border-left: 4px solid var(--primary);padding: 18px;border-radius: 0 10px 10px 0;margin: 25px 0;font-size: 0.95rem;}.recommendation {display: flex;align-items: center;gap: 15px;padding: 15px;background: #e8f4f8;border-radius: 10px;margin: 20px 0;border-left: 4px solid var(--success);}.recommendation i {color: var(--success);font-size: 1.5rem;flex-shrink: 0;}.form-grid {display: grid;grid-template-columns: 1fr 1fr;gap: 20px;}@media (max-width: 768px) {.form-grid {grid-template-columns: 1fr;}}.tooltip {position: relative;display: inline-block;}.tooltip .tooltiptext {visibility: hidden;width: 300px;background-color: var(--dark);color: #fff;text-align: center;border-radius: 6px;padding: 10px;position: absolute;z-index: 1;bottom: 125%;left: 50%;transform: translateX(-50%);opacity: 0;transition: opacity 0.3s;font-size: 0.9rem;font-weight: normal;}.tooltip:hover .tooltiptext {visibility: visible;opacity: 1;}h3.section-title {padding: 10px 0;margin: 25px 0 15px;border-bottom: 2px solid var(--light-gray);color: var(--primary);font-size: 1.4rem;display: flex;align-items: center;gap: 10px;}.card-footer {padding: 20px;background: var(--light-gray);text-align: center;font-size: 0.9rem;color: var(--gray);}.custom-params {margin-top: 30px;}.custom-params-header {display: flex;justify-content: space-between;align-items: center;margin-bottom: 15px;}.custom-param-row {display: flex;gap: 15px;margin-bottom: 15px;align-items: center;}.custom-param-row input {flex: 1;padding: 12px 15px;border: 2px solid var(--border);border-radius: 8px;font-size: 1rem;}.remove-param {background: var(--danger);color: white;border: none;border-radius: 8px;width: 40px;height: 40px;display: flex;align-items: center;justify-content: center;cursor: pointer;transition: all 0.2s;}.remove-param:hover {background: #c0392b;}.add-param-btn {background: var(--success);color: white;border: none;padding: 10px 20px;border-radius: 8px;cursor: pointer;font-weight: 600;transition: all 0.2s;display: flex;align-items: center;gap: 8px;}.add-param-btn:hover {background: #27ae60;}.custom-section {margin-top: 20px;padding-top: 20px;border-top: 2px dashed var(--light-gray);}</style>
</head>
<body><div class="container"><header><h1><i class="fas fa-database"></i> MySQL配置文件生成工具</h1><p>根据您的服务器配置和需求,定制生成最优化的MySQL配置文件</p></header><div class="main-content"><div class="card"><div class="card-header"><h2><i class="fas fa-sliders-h"></i> 服务器与MySQL配置</h2></div><div class="card-body"><div class="tabs"><div class="tab active" data-tab="basic">基本设置</div><div class="tab" data-tab="paths">路径设置</div><div class="tab" data-tab="advanced">高级设置</div><div class="tab" data-tab="custom">自定义参数</div></div><div class="tab-content active" id="basic-tab"><div class="form-grid"><div class="form-group"><label for="cpu-cores">CPU核数 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">服务器CPU核心数量,用于优化并行处理能力</span></i></label><input type="number" class="form-control" id="cpu-cores" min="1" max="128" value="4"></div><div class="form-group"><label for="memory-size">内存 (GB) <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">服务器可用内存总量,影响缓冲池大小等关键参数</span></i></label><div class="range-container"><input type="range" id="memory-size" min="1" max="256" value="16" step="1"><div class="range-value"><span id="memory-value">16</span> GB</div></div></div><div class="form-group"><label for="disk-type">磁盘类型 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">存储设备类型,影响I/O相关配置</span></i></label><select class="form-control" id="disk-type"><option value="ssd">普通SSD</option><option value="nvme">NVMe SSD</option><option value="sas">SAS HDD</option><option value="sata">SATA HDD</option></select></div><div class="form-group"><label for="server-type">服务器类型 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">根据使用场景优化配置</span></i></label><select class="form-control" id="server-type"><option value="development">开发环境</option><option value="testing">测试环境</option><option value="production" selected>生产环境</option><option value="dedicated">专用数据库服务器</option></select></div><div class="form-group"><label for="mysql-version">MySQL 版本 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">不同版本有不同特性和配置参数</span></i></label><select class="form-control" id="mysql-version"><option value="8.0">MySQL 8.0 (最新)</option><option value="5.7">MySQL 5.7</option><option value="5.6">MySQL 5.6</option><option value="5.5">MySQL 5.5</option></select></div><div class="form-group"><label for="port">端口号 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">MySQL服务监听的端口号</span></i></label><input type="number" class="form-control" id="port" value="3306"></div></div><h3 class="section-title"><i class="fas fa-microchip"></i> 性能参数</h3><div class="form-grid"><div class="form-group"><label for="connection-limit">最大并发连接数 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">MySQL服务器允许的最大同时客户端连接数</span></i></label><input type="number" class="form-control" id="connection-limit" min="1" max="100000" value="500"></div><div class="form-group"><label for="buffer-pool-size">InnoDB缓冲池大小 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">用于缓存InnoDB表数据和索引的内存大小</span></i></label><div class="range-container"><input type="range" id="buffer-pool-size" min="1" max="100" value="70" step="1"><div class="range-value"><span id="buffer-pool-value">70</span> %</div></div></div><div class="form-group"><label for="tmp-table-size">临时表大小 (MB) <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">内部内存临时表的最大大小</span></i></label><input type="number" class="form-control" id="tmp-table-size" min="1" max="65536" value="64"></div><div class="form-group"><label for="max-allowed-packet">最大数据包 (MB) <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">服务器和客户端之间最大允许的数据包大小</span></i></label><input type="number" class="form-control" id="max-allowed-packet" min="1" max="1024" value="64"></div></div><div class="recommendation"><i class="fas fa-lightbulb"></i><div>生产环境建议:InnoDB缓冲池设置为可用内存的70-80%,最大连接数根据应用需求调整</div></div></div><div class="tab-content" id="paths-tab"><div class="form-grid"><div class="form-group"><label for="install-path">MySQL安装路径 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">MySQL软件安装的根目录</span></i></label><input type="text" class="form-control" id="install-path" value="/usr/local/mysql/"></div><div class="form-group"><label for="data-path">数据文件路径 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">存储数据库文件的目录</span></i></label><input type="text" class="form-control" id="data-path" value="/data/mysql/"></div><div class="form-group"><label for="socket-path">Socket 路径 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">本地连接使用的Unix socket文件路径</span></i></label><input type="text" class="form-control" id="socket-path" value="/tmp/mysql.sock"></div><div class="form-group"><label for="pid-path">PID 文件路径 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">存储MySQL进程ID的文件路径</span></i></label><input type="text" class="form-control" id="pid-path" value="/data/mysql/mysql.pid"></div><div class="form-group"><label for="error-log-path">错误日志路径 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">MySQL错误日志文件路径</span></i></label><input type="text" class="form-control" id="error-log-path" value="/var/log/mysql/error.log"></div></div><div class="info-box"><strong>路径设置说明:</strong> 确保MySQL进程对指定路径有读写权限。生产环境中建议将数据目录放在专用存储设备上。</div></div><div class="tab-content" id="advanced-tab"><div class="form-grid"><div class="form-group"><label for="binlog-expire">Binlog保留时长 (秒) <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">二进制日志自动删除前的保留时间</span></i></label><input type="number" class="form-control" id="binlog-expire" value="86400"></div><div class="form-group"><label for="timezone">默认时区 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">MySQL服务器使用的时区设置</span></i></label><input type="text" class="form-control" id="timezone" value="+08:00"></div><div class="form-group"><label for="gtid">GTID一致性 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">全局事务标识符,主从复制必需</span></i></label><select class="form-control" id="gtid"><option value="OFF">OFF</option><option value="ON">ON</option></select></div><div class="form-group"><label for="interactive-timeout">interactive_timeout (秒) <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">交互式连接的空闲超时时间</span></i></label><input type="number" class="form-control" id="interactive-timeout" value="28800"></div><div class="form-group"><label for="wait-timeout">wait_timeout (秒) <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">非交互式连接的空闲超时时间</span></i></label><input type="number" class="form-control" id="wait-timeout" value="28800"></div><div class="form-group"><label for="dns-lookup">DNS名称解析 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">是否启用主机名解析</span></i></label><select class="form-control" id="dns-lookup"><option value="ON">启用</option><option value="OFF" selected>禁用</option></select></div><div class="form-group"><label for="isolation-level">事务隔离级别 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">事务的隔离级别设置</span></i></label><select class="form-control" id="isolation-level"><option value="REPEATABLE-READ">REPEATABLE-READ</option><option value="READ-COMMITTED">READ-COMMITTED</option><option value="READ-UNCOMMITTED">READ-UNCOMMITTED</option><option value="SERIALIZABLE">SERIALIZABLE</option></select></div><div class="form-group"><label for="case-sensitive">大小写敏感 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">数据库和表名是否区分大小写</span></i></label><select class="form-control" id="case-sensitive"><option value="1">不区分大小写</option><option value="0" selected>区分大小写 (Linux默认)</option></select></div><div class="form-group"><label for="flush-method">数据刷新方法 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">InnoDB数据刷新到磁盘的方法</span></i></label><select class="form-control" id="flush-method"><option value="fsync">fsync (默认)</option><option value="O_DSYNC">O_DSYNC</option><option value="O_DIRECT">O_DIRECT</option><option value="littlesync">littlesync</option><option value="nosync">nosync</option></select></div><div class="form-group"><label for="log-error-verbosity">错误日志级别 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">错误日志的详细程度</span></i></label><select class="form-control" id="log-error-verbosity"><option value="1">1 (ERROR)</option><option value="2">2 (WARNING)</option><option value="3">3 (INFORMATION)</option></select></div><div class="form-group"><label for="ddl-log">InnoDB DDL日志 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">是否记录数据定义语言操作日志</span></i></label><select class="form-control" id="ddl-log"><option value="OFF">OFF</option><option value="ON">ON</option></select></div><div class="form-group"><label for="deadlock-log">打印死锁信息 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">是否在错误日志中记录死锁信息</span></i></label><select class="form-control" id="deadlock-log"><option value="OFF">OFF</option><option value="ON">ON</option></select></div><div class="form-group"><label for="mysqlx">启用MySQL X <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">是否启用MySQL X协议</span></i></label><select class="form-control" id="mysqlx"><option value="OFF">禁用</option><option value="ON">启用</option></select></div><div class="form-group"><label for="slow-query-log">慢查询日志 <i class="fas fa-info-circle info-icon tooltip"><span class="tooltiptext">是否记录执行时间过长的查询</span></i></label><select class="form-control" id="slow-query-log"><option value="OFF">OFF</option><option value="ON">ON</option></select></div></div></div><div class="tab-content" id="custom-tab"><div class="custom-section"><h3 class="section-title"><i class="fas fa-plus-circle"></i> 添加自定义参数</h3><p>在此区域添加任何未包含在表单中的MySQL配置参数。</p><div class="custom-params"><div class="custom-params-header"><h4>自定义参数列表</h4><button id="add-param" class="add-param-btn"><i class="fas fa-plus"></i> 添加参数</button></div><div id="custom-params-container"><div class="custom-param-row"><input type="text" class="param-name-input" placeholder="参数名称 (例如: innodb_buffer_pool_instances)"><input type="text" class="param-value-input" placeholder="参数值 (例如: 8)"><button class="remove-param"><i class="fas fa-times"></i></button></div></div></div><div class="info-box"><strong>使用提示:</strong> 添加的自定义参数将包含在生成的配置文件中。请确保使用正确的参数名称和格式。</div></div></div><div class="form-group"><button id="generate-btn" class="btn btn-block"><i class="fas fa-cog"></i> 生成配置文件</button></div></div></div><div class="card"><div class="card-header"><h2><i class="fas fa-file-code"></i> 配置文件输出</h2></div><div class="card-body"><div class="config-output" id="config-output">
# MySQL配置文件将在此处生成
# 请设置左侧参数并点击"生成配置文件"按钮</div><div class="actions"><button id="copy-btn" class="btn btn-light"><i class="fas fa-copy"></i> 复制到剪贴板</button><button id="download-btn" class="btn btn-success"><i class="fas fa-download"></i> 下载配置文件</button><button id="reset-btn" class="btn btn-light"><i class="fas fa-redo"></i> 重置配置</button></div><div class="recommendation"><i class="fas fa-info-circle"></i><div><strong>配置文件路径:</strong> /etc/my.cnf 或 /etc/mysql/my.cnf。修改后需重启MySQL服务生效。</div></div><div class="info-box"><strong>使用建议:</strong> <ul><li>生产环境请仔细测试生成的配置</li><li>根据实际负载情况调整内存相关参数</li><li>定期检查MySQL错误日志和慢查询日志</li><li>重要配置修改前备份原配置文件</li></ul></div></div></div></div><div class="card"><div class="card-header"><h2><i class="fas fa-book"></i> 配置参数说明</h2></div><div class="card-body"><div class="param-row"><div class="param-name">innodb_buffer_pool_size</div><div class="param-value">InnoDB缓冲池大小,用于缓存数据和索引。建议设置为物理内存的70-80%</div></div><div class="param-row"><div class="param-name">max_connections</div><div class="param-value">最大并发客户端连接数。设置过高可能导致内存不足</div></div><div class="param-row"><div class="param-name">innodb_flush_method</div><div class="param-value">InnoDB数据刷新方法。SSD建议使用O_DIRECT</div></div><div class="param-row"><div class="param-name">tmp_table_size</div><div class="param-value">内部内存临时表的最大大小。超过此大小将使用磁盘</div></div><div class="param-row"><div class="param-name">max_allowed_packet</div><div class="param-value">服务器和客户端之间最大允许的数据包大小</div></div><div class="param-row"><div class="param-name">binlog_expire_logs_seconds</div><div class="param-value">二进制日志自动删除前的保留时间(秒)</div></div><div class="param-row"><div class="param-name">skip_name_resolve</div><div class="param-value">禁用DNS主机名解析,提高连接速度</div></div></div><div class="card-footer">本工具生成的配置仅供参考,请根据实际环境进行调整</div></div><footer><p>MySQL配置文件生成工具 增强版 &copy; 2023 | 专业数据库配置解决方案</p></footer></div><script>// DOM元素const memorySize = document.getElementById('memory-size');const memoryValue = document.getElementById('memory-value');const bufferPoolSize = document.getElementById('buffer-pool-size');const bufferPoolValue = document.getElementById('buffer-pool-value');const generateBtn = document.getElementById('generate-btn');const copyBtn = document.getElementById('copy-btn');const downloadBtn = document.getElementById('download-btn');const resetBtn = document.getElementById('reset-btn');const configOutput = document.getElementById('config-output');const tabs = document.querySelectorAll('.tab');const addParamBtn = document.getElementById('add-param');const customParamsContainer = document.getElementById('custom-params-container');// 更新范围值显示memorySize.addEventListener('input', () => {memoryValue.textContent = memorySize.value;});bufferPoolSize.addEventListener('input', () => {bufferPoolValue.textContent = bufferPoolSize.value;});// 标签页切换tabs.forEach(tab => {tab.addEventListener('click', () => {// 移除所有活动标签tabs.forEach(t => t.classList.remove('active'));document.querySelectorAll('.tab-content').forEach(tc => tc.classList.remove('active'));// 添加当前活动标签tab.classList.add('active');const tabId = tab.getAttribute('data-tab');document.getElementById(`${tabId}-tab`).classList.add('active');});});// 添加自定义参数行addParamBtn.addEventListener('click', () => {const paramRow = document.createElement('div');paramRow.className = 'custom-param-row';paramRow.innerHTML = `<input type="text" class="param-name-input" placeholder="参数名称 (例如: innodb_buffer_pool_instances)"><input type="text" class="param-value-input" placeholder="参数值 (例如: 8)"><button class="remove-param"><i class="fas fa-times"></i></button>`;customParamsContainer.appendChild(paramRow);// 添加删除事件paramRow.querySelector('.remove-param').addEventListener('click', () => {paramRow.remove();});});// 初始删除按钮事件绑定document.querySelectorAll('.remove-param').forEach(btn => {btn.addEventListener('click', function() {this.parentElement.remove();});});// 生成配置文件generateBtn.addEventListener('click', generateConfig);function generateConfig() {// 获取所有配置值const cpuCores = document.getElementById('cpu-cores').value;const memory = parseInt(memorySize.value);const diskType = document.getElementById('disk-type').value;const serverType = document.getElementById('server-type').value;const version = document.getElementById('mysql-version').value;const port = document.getElementById('port').value;const connections = parseInt(document.getElementById('connection-limit').value);const bufferPoolPercent = parseInt(bufferPoolSize.value);const tmpTableSize = parseInt(document.getElementById('tmp-table-size').value);const maxPacket = parseInt(document.getElementById('max-allowed-packet').value);const installPath = document.getElementById('install-path').value;const dataPath = document.getElementById('data-path').value;const socketPath = document.getElementById('socket-path').value;const pidPath = document.getElementById('pid-path').value;const errorLogPath = document.getElementById('error-log-path').value;const binlogExpire = document.getElementById('binlog-expire').value;const timezone = document.getElementById('timezone').value;const gtid = document.getElementById('gtid').value;const interactiveTimeout = document.getElementById('interactive-timeout').value;const waitTimeout = document.getElementById('wait-timeout').value;const dnsLookup = document.getElementById('dns-lookup').value;const isolationLevel = document.getElementById('isolation-level').value;const caseSensitive = document.getElementById('case-sensitive').value;const flushMethod = document.getElementById('flush-method').value;const logErrorVerbosity = document.getElementById('log-error-verbosity').value;const ddlLog = document.getElementById('ddl-log').value;const deadlockLog = document.getElementById('deadlock-log').value;const mysqlx = document.getElementById('mysqlx').value;const slowQueryLog = document.getElementById('slow-query-log').value;// 计算缓冲池大小const bufferPoolSizeMB = Math.round((memory * 1024) * (bufferPoolPercent / 100));// 收集自定义参数let customParams = "";document.querySelectorAll('.custom-param-row').forEach(row => {const nameInput = row.querySelector('.param-name-input');const valueInput = row.querySelector('.param-value-input');if (nameInput.value.trim() && valueInput.value.trim()) {customParams += `${nameInput.value.trim()} = ${valueInput.value.trim()}\n`;}});// 生成配置内容let config = `# MySQL Configuration File (my.cnf)
# Generated by MySQL Config Generator (Enhanced)
# Version: MySQL ${version}
# Server Type: ${serverType}
# Server Hardware: ${cpuCores} Cores, ${memory}GB RAM, ${diskType.toUpperCase()} Disk[mysqld]# ==================== Basic Settings ====================
port                            = ${port}
basedir                         = ${installPath}
datadir                         = ${dataPath}
socket                          = ${socketPath}
pid-file                        = ${pidPath}
default-time-zone               = '${timezone}'
default-storage-engine          = InnoDB
max_connections                 = ${connections}
max_connect_errors              = 10000
skip-name-resolve               = ${dnsLookup === 'OFF' ? 1 : 0}
transaction_isolation           = ${isolationLevel}
lower_case_table_names          = ${caseSensitive}# ==================== Timeout Settings ====================
interactive_timeout             = ${interactiveTimeout}
wait_timeout                    = ${waitTimeout}# ==================== Memory Settings ====================
key_buffer_size                 = ${memory * 16}M
innodb_buffer_pool_size         = ${bufferPoolSizeMB}M
innodb_log_file_size            = ${bufferPoolSizeMB > 1024 ? '1024M' : '512M'}
innodb_log_buffer_size          = ${bufferPoolSizeMB > 1024 ? '64M' : '32M'}
tmp_table_size                  = ${tmpTableSize}M
max_heap_table_size             = ${tmpTableSize}M
max_allowed_packet              = ${maxPacket}M
thread_cache_size               = ${cpuCores * 2}
innodb_thread_concurrency       = ${cpuCores * 2}# ==================== InnoDB Settings ====================
innodb_file_per_table           = 1
innodb_flush_method             = ${flushMethod}
innodb_flush_log_at_trx_commit  = ${serverType === 'production' ? 1 : 2}
innodb_lock_wait_timeout        = 50
innodb_print_all_deadlocks      = ${deadlockLog === 'ON' ? 1 : 0}
innodb_log_compressed_pages     = OFF# ==================== Binary Logging ====================
log-bin                         = ${dataPath}mysql-bin
binlog_format                   = ROW
binlog_expire_logs_seconds      = ${binlogExpire}
sync_binlog                     = 1
gtid_mode                       = ${gtid}
enforce_gtid_consistency        = ${gtid}# ==================== Logging Settings ====================
log_error                       = ${errorLogPath}
log_error_verbosity             = ${logErrorVerbosity}
slow_query_log                  = ${slowQueryLog}
slow_query_log_file             = ${dataPath}slow.log
long_query_time                 = 2
log_queries_not_using_indexes   = 0
log_throttle_queries_not_using_indexes = 10
innodb_print_ddl_logs           = ${ddlLog === 'ON' ? 1 : 0}# ==================== Security & Optimization ====================
local_infile                    = OFF
performance_schema              = ON
explicit_defaults_for_timestamp = 1
mysqlx                          = ${mysqlx}# ==================== Advanced Options ====================
innodb_io_capacity              = ${diskType === 'nvme' ? 20000 : (diskType === 'ssd' ? 10000 : 2000)}
innodb_io_capacity_max          = ${diskType === 'nvme' ? 40000 : (diskType === 'ssd' ? 20000 : 4000)}
innodb_read_io_threads          = ${cpuCores}
innodb_write_io_threads         = ${cpuCores}
innodb_purge_threads            = ${cpuCores > 4 ? 4 : 2}`;// 添加自定义参数部分if (customParams) {config += `\n# ==================== Custom Parameters ====================\n`;config += customParams;}// 添加文件结尾config += `
[mysqld_safe]
log_error                       = ${errorLogPath}[client]
port                            = ${port}
socket                          = ${socketPath}# End of configuration file
`;configOutput.textContent = config;}// 复制到剪贴板copyBtn.addEventListener('click', () => {const textArea = document.createElement('textarea');textArea.value = configOutput.textContent;document.body.appendChild(textArea);textArea.select();document.execCommand('copy');document.body.removeChild(textArea);// 显示复制成功反馈copyBtn.innerHTML = '<i class="fas fa-check"></i> 已复制!';setTimeout(() => {copyBtn.innerHTML = '<i class="fas fa-copy"></i> 复制到剪贴板';}, 2000);});// 下载配置文件downloadBtn.addEventListener('click', () => {const content = configOutput.textContent;const blob = new Blob([content], { type: 'text/plain' });const url = URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = 'mysql-config.cnf';document.body.appendChild(a);a.click();// 清理setTimeout(() => {document.body.removeChild(a);URL.revokeObjectURL(url);}, 100);});// 重置配置resetBtn.addEventListener('click', () => {document.getElementById('cpu-cores').value = 4;memorySize.value = 16;memoryValue.textContent = 16;document.getElementById('disk-type').value = 'ssd';document.getElementById('server-type').value = 'production';document.getElementById('mysql-version').value = '8.0';document.getElementById('port').value = 3306;document.getElementById('connection-limit').value = 500;bufferPoolSize.value = 70;bufferPoolValue.textContent = 70;document.getElementById('tmp-table-size').value = 64;document.getElementById('max-allowed-packet').value = 64;document.getElementById('install-path').value = '/usr/local/mysql/';document.getElementById('data-path').value = '/data/mysql/';document.getElementById('socket-path').value = '/tmp/mysql.sock';document.getElementById('pid-path').value = '/data/mysql/mysql.pid';document.getElementById('error-log-path').value = '/var/log/mysql/error.log';document.getElementById('binlog-expire').value = 86400;document.getElementById('timezone').value = '+08:00';document.getElementById('gtid').value = 'OFF';document.getElementById('interactive-timeout').value = 28800;document.getElementById('wait-timeout').value = 28800;document.getElementById('dns-lookup').value = 'OFF';document.getElementById('isolation-level').value = 'REPEATABLE-READ';document.getElementById('case-sensitive').value = '0';document.getElementById('flush-method').value = 'fsync';document.getElementById('log-error-verbosity').value = '1';document.getElementById('ddl-log').value = 'OFF';document.getElementById('deadlock-log').value = 'OFF';document.getElementById('mysqlx').value = 'OFF';document.getElementById('slow-query-log').value = 'OFF';// 重置自定义参数customParamsContainer.innerHTML = `<div class="custom-param-row"><input type="text" class="param-name-input" placeholder="参数名称 (例如: innodb_buffer_pool_instances)"><input type="text" class="param-value-input" placeholder="参数值 (例如: 8)"><button class="remove-param"><i class="fas fa-times"></i></button></div>`;// 重新绑定删除按钮事件document.querySelector('.remove-param').addEventListener('click', function() {this.parentElement.remove();});generateConfig();});// 初始化生成默认配置window.addEventListener('load', generateConfig);</script>
</body>
</html>

主要功能亮点

完整的MySQL配置参数:

CPU核数和内存设置

磁盘类型选择(SSD/NVMe/HDD)

服务器类型(开发/测试/生产)

MySQL版本选择(5.5-8.0)

路径设置(安装路径、数据路径、socket等)

高级参数(GTID、时区、超时设置等)

新增的自定义参数功能:

在"自定义参数"标签页中添加任意MySQL配置

动态添加/删除自定义参数行

自定义参数将包含在生成的配置文件中

强大的输出功能:

实时生成配置文件预览

一键复制到剪贴板

下载配置文件功能

重置所有配置选项

用户体验优化:

标签页式布局组织配置类别

详细的工具提示说明

响应式设计适配各种屏幕

美观的现代化UI

参数说明区域

使用说明

在左侧面板中配置服务器参数和MySQL设置

在"自定义参数"标签页中添加任何未包含在表单中的MySQL参数

点击"生成配置文件"按钮生成配置

使用"复制到剪贴板"或"下载配置文件"获取配置

将配置文件保存为my.cnf并放置到MySQL配置目录

重启MySQL服务使配置生效

下载链接

链接: https://pan.baidu.com/s/1LHCAp0t2UU727RtdPAUhvQ 
提取码: 32ug

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统运维面试题

基础 选择6块1T硬盘做完raid50后,可供使用内存有多大? 解析: raid50备份方案为两组RAID5组成RAID0,做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好硬盘转速一样,否则会影响性能,而…

2025 年隔音门厂家最新推荐榜,技术实力与市场口碑深度解析,精选适配多场景的优质品牌

据建筑装饰协会 2024 年度声学建材测评报告显示,国内隔音门市场合格率仅为 78.3%,超两成产品存在隔音量不达标、密封性能差等问题。为帮助消费者与企业精准筛选优质产品,本次推荐榜以 “技术参数 + 实际应用 + 售后…

ELK日志收集分析工具解析

@目录1、工作当中日志的重要性2、日志收集的工具有那些Solr与es的对比与选型ElasticSearch vs Solr总结3、elk简单介绍4、倒排查询原理5、数据的分类6、es用户场景Elasticsearch简介7、部署es的方法8、和es交互的方式8…

ansible的硬件巡检脚本

使用场景: 公司内部服务器用的是云厂商的, 一般在交付使用前会给一个配置清单 但是真正的配置还需要运维部门的人员去检查一下 每批交付使用的主机少则十几台 多则几十台 将配置的结果做成表格导进execl 我相信没有…

2025年vr虚拟体验馆制造企业权威推荐榜单:vr虚拟体验馆/vr体验馆设备/vr设备体验馆源头厂家精选

VR虚拟体验馆作为沉浸式娱乐与教育的重要载体,正随着全球虚拟现实技术的成熟而快速增长。据行业数据显示,2025年中国VR产业规模预计突破1000亿元,其中体验馆相关设备与内容市场占比约30%,年增长率稳定在15%以上。V…

【251031】CF2155 Div.2 vp 总结

题目梗概题目编号 题目名称 题目链接A El fucho LinkB Abrahams Great Escape LinkC The Ancient Wizards Capes LinkD Batteries LinkE Mimo & Yuyu LinkF Juans Colorful Tree Link给的都是 VJ 的链接,带翻译。…

nmap简单用例

@目录下载对目标主机的所有端口扫描对目标主机指定端口进行扫描扫描内网整个网段主机nmap是一个端口扫描工具 与telnet不同的是 它可以扫描指定主机的所有开放端口(内网) 多一个工具就多一份快乐 下面来介绍一些基…

新能源汽车焊接智能节气阀

在新能源汽车产业迅猛发展的浪潮中,制造工艺的优劣直接关系到车辆的性能、安全与市场竞争力。焊接,作为新能源汽车生产流程里的关键一环,无论是构建车身框架,还是连接电池模组,其质量的好坏都起着决定性作用。而在…

数仓分层介绍

@目录数仓分层的意义是什么?常见的数据分层ODS层: 源数据层DW层: 数据仓库层(也叫作集团数据中心)DA(app)层: 数据应用层更加细分的数仓分层方案1 ODS数据源2 DW数据仓库2.1 DWD明细层:2.2 DWB基础数据层:2.3 DWS服…

2025年单向平衡阀批发厂家权威推荐榜单:双向电磁阀/旋挖机多路阀/电磁阀线圈源头厂家精选

在工业流体控制领域,单向平衡阀作为关键控制元件,其市场规模持续扩大,2024年全球市场份额已突破320亿元,预计2025年将保持8%-10%的稳健增长。 单向平衡阀凭借其精确的流量控制、稳定的压力平衡和可靠的反向截止特性…

互信脚本使用

yum install -y expect ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa export mypass=123456name=(node1 node2 node3 node4) for i in ${name[@]};do expect -c " spawn ssh-copy-id -i /root/.ssh/i…

如何查看软件包名

1、输出当前手机上的全部app包名 首先都需要连击上手机,手机上打开开发者模式,cmd中输入adb devices查看当前手机连接状态 输出device就说明手机连接成功了,device前面就是连接的这个手机的设备号 adb shell pm lis…

数学求和公式c++ - miao

1. 等差数列求和 // 首项a1,末项an,项数n ll arithmetic_sum(ll a1, ll an, ll n) {return n * (a1 + an) / 2; }// 首项a1,公差d,项数n ll arithmetic_sum(ll a1, ll d, ll n) {return n * a1 + n * (n - 1) / 2 …

李宏毅机器学习笔记16 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

通过编写systemctl来控制二进制部署的MySQL服务

自己给自己看的 其他人做为参考[root@node1 ~]# vim /usr/lib/systemd/system/mysqld.service [Unit] Description=MySQL Documentation=https://www.mysql.com/cn/ # 依赖服务,仅当依赖的服务启动之后再启动自定义…

无法定位程序输入点于kernel32.dll?详解原因与5种有效修复方案

运行程序时弹出“无法定位程序输入点于动态链接库 KERNEL32.dll 上”的错误提示?这是 Windows 系统常见的兼容性或系统文件异常问题。本文从原理、成因到具体解决步骤,带你逐步排查问题源头,并提供 5 种可行方案(含…

普法学习: 劳动关系的认定

@目录1 什么是劳动关系1.2 劳动关系的认定标准1.3 从属性标准也是认定劳动关系的一种2. 案例2.1 案例摘要2.2 案例简述 1 什么是劳动关系[1]劳动关系是劳动者与用人单位之间实现社会化劳动的过程中产生的社会关系,对劳…

Python 类继承 _ 老鼠的儿子会打洞

Python 类继承 _ 老鼠的儿子会打洞class Employee: def __init__(self, name, id): self.name = name self.id = id def print_info(self): print(f"员工名字:{self.name},工号:{sel…

C++ 中的 Meyer‘s Singleton

目录1. 什么是 Singleton 模式?2. 传统的 Singleton 实现及其问题3. Meyer‘s Singleton:现代而优雅的解决方案实现代码4. Meyer’s Singleton 的工作原理与关键特性5. 使用方法6. 优点7. 潜在缺点与注意事项总结全局…

java 比较数组数据大小

三目运算方式 public class 比较数组大小 {public static void main(String[] args) {int[] arr ={5,15,20,25,1000};for (int i = 0; i < arr.length-1; i++) { // System.out.println(Arrays.toStri…