当前位置: 首页 > article >正文

把闲置NAS变成数据中枢:Docker部署MySQL全流程与Python连接实战

把闲置NAS变成数据中枢Docker部署MySQL全流程与Python连接实战家里那台吃灰的NAS除了存电影和备份照片还能干点更有技术含量的事吗当然可以今天我们就来彻底激活它的潜力将它打造成家庭数据处理的大脑中枢。想象一下智能家居设备的状态实时记录、自动化脚本采集的数据集中存储、个人博客的动态内容管理全部通过NAS上的MySQL数据库统一调度。这种高效、低成本的解决方案正是技术爱好者梦寐以求的自主数据王国。1. 为什么选择NAS作为数据库主机在云计算大行其道的今天自建数据库似乎成了复古行为。但当你真正计算过云数据库三年使用成本后可能会重新考虑这个选择。我的群晖DS220两年电费不到200元而同等容量的云数据库月租就超过这个数。NAS的24小时低功耗运行特性让它成为家庭数据中心的理想载体。性能方面现代NAS早已不是当年的网络硬盘。以搭载Intel Celeron J4025的型号为例Docker容器中MySQL的QPS每秒查询数能达到800-1200完全满足智能家居数据记录每秒约5-10次写入个人博客内容存储日均数百次查询Python自动化脚本的数据存取间歇性批量操作注意如果预期有高频复杂查询如每分钟上万次事务建议还是选择云数据库或专用服务器。NAS的优势在于持续稳定的轻量级服务。2. Docker化MySQL部署详解2.1 准备工作空间规划与性能调优在NAS的Docker中部署MySQL前需要做好这些准备存储规划创建专用存储卷/volume1/docker/mysql/data建议分配最小50GB空间1亿条记录约占用10GB使用SSD缓存加速如有内存分配为MySQL容器保留至少1GB内存修改my.cnf关键参数[mysqld] innodb_buffer_pool_size512M query_cache_size128M网络配置固定内网IP或使用NAS的DNS服务开放3306端口时建议修改为非常用端口如330602.2 容器部署实战步骤通过Portainer或命令行完成部署docker run -d \ --namemysql-server \ -e MYSQL_ROOT_PASSWORD你的强密码 \ -e MYSQL_DATABASEhome_db \ -e MYSQL_USERsmart_home \ -e MYSQL_PASSWORD用户密码 \ -v /volume1/docker/mysql/data:/var/lib/mysql \ -v /volume1/docker/mysql/config:/etc/mysql/conf.d \ -p 33060:3306 \ --restart unless-stopped \ mysql:8.0 \ --character-set-serverutf8mb4 \ --collation-serverutf8mb4_unicode_ci关键参数说明参数作用推荐值MYSQL_ROOT_PASSWORDroot账户密码16位含大小写数字特殊字符MYSQL_DATABASE初始创建的数据库按用途命名如iot_data--restart自动重启策略unless-stoppedutf8mb4字符编码支持emoji和生僻字2.3 安全加固措施部署完成后立即执行修改root账户ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 新密码; FLUSH PRIVILEGES;创建专用应用账户CREATE USER ha_user192.168.1.% IDENTIFIED BY 专用密码; GRANT SELECT, INSERT ON home_automation.* TO ha_user192.168.1.%;启用自动备份在NAS上设置定时任务# 每日3点全量备份 docker exec mysql-server mysqldump -u root -p密码 --all-databases /backup/mysql_$(date %Y%m%d).sql3. Python连接NAS数据库的工程实践3.1 连接方案选型对比Python连接MySQL主要有三种方式pymysql- 纯Python实现import pymysql conn pymysql.connect( hostnas.yourdomain.com, port33060, userha_user, password密码, databasehome_db, charsetutf8mb4 )mysql-connector- 官方驱动import mysql.connector config { host: 192.168.1.100, port: 33060, database: sensor_data, user: python_app, password: 密码, connection_timeout: 10 } conn mysql.connector.connect(**config)SQLAlchemy- ORM方案from sqlalchemy import create_engine engine create_engine( mysqlpymysql://user:passwordnas:33060/dbname?charsetutf8mb4, pool_size5, pool_recycle3600 )性能对比测试结果1000次查询方案耗时(ms)内存占用(MB)适用场景pymysql120045简单查询脚本mysql-connector95060需要预编译语句SQLAlchemy150085复杂对象映射3.2 智能家居数据采集实例用Python实现传感器数据入库import pymysql from datetime import datetime def log_sensor_data(sensor_id, temp, humidity): try: with pymysql.connect( hostnas.local, useriot_writer, password密码, dbsmart_home, port33060 ) as conn: with conn.cursor() as cursor: sql INSERT INTO sensor_readings (sensor_id, temperature, humidity, recorded_at) VALUES (%s, %s, %s, %s) cursor.execute(sql, ( sensor_id, round(temp, 1), int(humidity), datetime.now().strftime(%Y-%m-%d %H:%M:%S) )) conn.commit() except Exception as e: print(f数据库写入失败: {e}) # 可添加本地缓存逻辑配套的MySQL表结构设计CREATE TABLE sensor_readings ( id int NOT NULL AUTO_INCREMENT, sensor_id varchar(32) NOT NULL COMMENT 设备ID, temperature decimal(3,1) DEFAULT NULL COMMENT 摄氏度, humidity tinyint unsigned DEFAULT NULL COMMENT 百分比, recorded_at datetime NOT NULL COMMENT 记录时间, PRIMARY KEY (id), KEY idx_sensor_time (sensor_id,recorded_at) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;3.3 连接池与异常处理最佳实践高并发场景下的优化方案from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker # 初始化连接池 engine create_engine( mysqlpymysql://user:passnas:33060/db?charsetutf8mb4, pool_size5, max_overflow10, pool_timeout30, pool_recycle3600 ) SessionLocal sessionmaker(bindengine) # 使用上下文管理器自动处理连接 def get_temperature_stats(): try: db SessionLocal() result db.execute( SELECT AVG(temperature) as avg_temp, MAX(temperature) as max_temp, MIN(temperature) as min_temp FROM sensor_readings WHERE recorded_at NOW() - INTERVAL 1 DAY ) return result.fetchone() except Exception as e: print(f查询异常: {e}) raise finally: db.close()常见错误处理策略连接超时增加connect_timeout参数断连重试实现retry装饰器连接泄漏使用with语句确保关闭查询阻塞设置max_execution_time4. 数据生态整合实战4.1 与Home Assistant深度集成在configuration.yaml中添加recorder: db_url: mysql://ha_user:密码nas_ip:33060/home_assistant?charsetutf8mb4 purge_keep_days: 30 commit_interval: 30优化建议单独创建home_assistant数据库为HA创建只写账户设置定期清理策略如保留30天数据4.2 自动化数据报表系统使用PythonMatplotlib生成可视化报表import matplotlib.pyplot as plt import pandas as pd from sqlalchemy import create_engine engine create_engine(mysqlpymysql://report:密码nas:33060/smart_home) def generate_daily_report(): df pd.read_sql( SELECT DATE(recorded_at) as day, AVG(temperature) as avg_temp, AVG(humidity) as avg_humi FROM sensor_readings GROUP BY day ORDER BY day DESC LIMIT 7 , engine) fig, (ax1, ax2) plt.subplots(2, 1, figsize(10, 6)) df.plot(xday, yavg_temp, axax1, kindbar, colorred) df.plot(xday, yavg_humi, axax2, kindline, markero) plt.savefig(/volume1/web/reports/latest.png) plt.close()设置NAS的计划任务每天凌晨执行报表生成0 3 * * * /usr/bin/python3 /volume1/scripts/generate_report.py4.3 多设备数据同步方案通过MySQL主从复制实现多NAS数据同步在主NAS上启用二进制日志[mysqld] log-binmysql-bin server-id1在从NAS上配置复制CHANGE MASTER TO MASTER_HOST主NAS_IP, MASTER_PORT33060, MASTER_USERrepl_user, MASTER_PASSWORD密码, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS154; START SLAVE;验证复制状态SHOW SLAVE STATUS\G关键监控指标Seconds_Behind_Master应接近0Slave_IO_Running和Slave_SQL_Running必须为Yes5. 性能监控与日常维护5.1 关键指标监控体系在NAS上部署PrometheusGranfanamysqld_exporter配置exporters: mysql: data_source_name: monitor:密码(nas:33060)/核心监控指标查询吞吐量queries/sec连接数threads_connected缓冲池命中率innodb_buffer_pool_hit_rate复制延迟seconds_behind_master设置报警规则groups: - name: mysql.rules rules: - alert: HighCPUUsage expr: rate(process_cpu_seconds_total{jobmysql}[1m]) 0.8 for: 5m5.2 自动化维护脚本数据库优化脚本示例#!/usr/bin/env python3 import pymysql import logging logging.basicConfig(filename/var/log/mysql_maintenance.log, levellogging.INFO) def optimize_tables(): try: conn pymysql.connect(hostlocalhost, port33060, usermaintenance, password密码) with conn.cursor() as cursor: cursor.execute(SHOW DATABASES) for (db_name,) in cursor.fetchall(): if db_name in (sys, information_schema, performance_schema): continue cursor.execute(fUSE {db_name}) cursor.execute(SHOW TABLES) for (table,) in cursor.fetchall(): logging.info(fOptimizing {db_name}.{table}) cursor.execute(fOPTIMIZE TABLE {table}) conn.commit() except Exception as e: logging.error(f维护失败: {e}) finally: conn.close() if __name__ __main__: optimize_tables()设置每月1号凌晨执行0 2 1 * * /usr/bin/python3 /volume1/scripts/mysql_optimize.py5.3 灾难恢复演练定期测试备份可用性创建测试容器docker run -d --namemysql-test \ -e MYSQL_ROOT_PASSWORDtemp_pwd \ -v /tmp/testdata:/var/lib/mysql \ mysql:8.0还原备份docker exec -i mysql-test mysql -uroot -ptemp_pwd /backup/mysql_latest.sql验证数据docker exec mysql-test mysql -uroot -ptemp_pwd -e SHOW DATABASES;清理测试环境docker stop mysql-test docker rm mysql-test rm -rf /tmp/testdata

相关文章:

把闲置NAS变成数据中枢:Docker部署MySQL全流程与Python连接实战

把闲置NAS变成数据中枢:Docker部署MySQL全流程与Python连接实战 家里那台吃灰的NAS,除了存电影和备份照片,还能干点更有技术含量的事吗?当然可以!今天我们就来彻底激活它的潜力,将它打造成家庭数据处理的&q…...

5分钟快速上手Mermaid Live Editor:免费在线图表编辑器完全指南

5分钟快速上手Mermaid Live Editor:免费在线图表编辑器完全指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-li…...

从AVX512到Tensor Core:聊聊那些‘纸上算力’和‘实际跑分’为啥总对不上

从AVX512到Tensor Core:揭秘理论算力与实际性能的鸿沟 当你在产品手册上看到某款CPU标称2.4T FLOPS的峰值算力,或是GPU宣称能提供数十TFLOPs的AI加速性能时,是否曾兴奋地购入设备,却在运行实际工作负载时大失所望?这种…...

别再用math.atan了!用NumPy的angle函数处理复数相位,效率提升不止一点点

别再用math.atan了!用NumPy的angle函数处理复数相位,效率提升不止一点点 在信号处理、图像分析和科学计算领域,复数相位计算是基础但关键的操作。许多开发者习惯性地使用math.atan(y/x)来计算角度,却不知道NumPy提供的angle()函数…...

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案 论文AI率超标这件事,选错工具比不选工具更耽误事。 综合试用和口碑,法学论文降AI我主推嘎嘎降AI(www.aigcleaner.com),4.8…...

从模型文件到孪生场景:一个Three.js三维模型管理系统的完整产品化思考

从技术原型到商业产品:构建Three.js数字孪生系统的全栈实践 在数字孪生技术快速渗透工业制造、智慧城市等领域的今天,如何将一个基于Three.js的模型展示Demo转化为真正具备商业价值的企业级管理系统?这个问题困扰着许多掌握前端3D技术的开发者…...

机械工程论文降AI工具免费推荐:2026年机械工程毕业论文降AI知网维普亲测4.8元达标完整指南

机械工程论文降AI工具免费推荐:2026年机械工程毕业论文降AI知网维普亲测4.8元达标完整指南 帮室友处理过机械工程论文降AI,前前后后试了四款工具,最后固定在嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率…...

高性价比AI编程神器Claude Code+deepseek v4 pro+vscode——详细安装指南(2026最新版)

一.简介 这套组合性价比极高。关于Claude Code:它由Anthropic公司打造,是直接运行在终端中的AI编程助手,让你不用离开命令行就能完成代码生成、调试、重构、甚至Git提交等各种开发任务。本文将带你完成安装与配置。众所周知Claude 模型集强大…...

新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案

新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案 帮室友处理过新闻传播论文降AI,前前后后试了四款工具,最后固定在嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率99.2…...

论文写得像流水账?资深教授推荐这几个AI写作辅助软件

论文写得像流水账?选题难、逻辑乱、语言差,是很多学生共同的困扰。其实,只要用对AI写作辅助工具,再配合科学的写作流程,就能大幅提升效率和质量。资深教授普遍推荐:千笔AI(中文全流程首选&#…...

3分钟学会:如何用Chrome扩展一键保存完整网页内容

3分钟学会:如何用Chrome扩展一键保存完整网页内容 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension…...

2026年做了一个大胆的决定:我要收徒弟了!

如果你已经在测试/开发领域摸爬滚打几年,一定有过这样的困惑:• 报了很多课,学了很多工具/框架/技术,但遇到真实项目问题依然无从下手• 想转型测开/管理/AI测试,却不知道自己的短板到底在哪• 职场遇到瓶颈&#xff0…...

OBS多平台直播终极指南:一键同时推流到多个平台的完整教程

OBS多平台直播终极指南:一键同时推流到多个平台的完整教程 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经想过,为什么每次直播都要为不同的平台单独配…...

深入eDP协议栈:从PSR SDP发送到Main Link开关,一次搞懂屏幕自刷新的完整信令流程

深入eDP协议栈:从PSR SDP发送到Main Link开关,一次搞懂屏幕自刷新的完整信令流程 在显示技术的演进中,嵌入式DisplayPort(eDP)协议因其高效能和低功耗特性,已成为移动设备和高端显示器的首选接口。其中&am…...

如何通过G-Helper让华硕笔记本性能与续航获得双重提升?

如何通过G-Helper让华硕笔记本性能与续航获得双重提升? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, E…...

终极指南:如何快速免费实现全网页截图完整捕获

终极指南:如何快速免费实现全网页截图完整捕获 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...

Wand-Enhancer:完全免费解锁WeMod Pro功能的终极解决方案

Wand-Enhancer:完全免费解锁WeMod Pro功能的终极解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的付费限制而烦恼…...

蓝牙、Wi-Fi、5G、NB-IoT四大无线技术核心差异与选型指南

1. 无线通信技术全景概览:从身边到万物每天一睁眼,我们就被各种看不见的“波”包围着。手机自动连上家里的Wi-Fi,耳机里传来蓝牙音箱的音乐,出门后手机信号满格,甚至街边的智能路灯、家里的智能电表,都在悄…...

Blender-Armatures

导航 (返回顶部) 1. Blender-Armatures 1.1 骨架位置1.2 分类1.3 骨骼结构 2. 编辑 2.1 骨骼扭转2.2 拆分 split2.3 分离骨骼 separate2.4 切换方向 3. 镜像编辑 3.1 镜像挤出3.2 命名惯例3.3 对称 4. 属性 4.1 属性结构表4.2 柔性骨骼 Bendy Bones4.3 姿态4.4 关系 5. 骨骼约束…...

【大语言模型系列·第 01 篇】全景图:从图灵测试到万亿参数的 AI 革命

【大语言模型系列第 01 篇】全景图:从图灵测试到万亿参数的 AI 革命 系列前言:大语言模型(LLM)是当今 AI 最重要的技术基石。从 2017 年 Transformer 论文到 2026 年的万亿参数 MoE 模型,LLM 用不到十年时间重塑了整个…...

金属3D打印光束整形:两大路线正面PK

作为金属3D打印技术的最新发展,开展光束整形技术研究的企业越来越多,研发的进程也越来越深。3D打印技术参考注意到,国外由EOS引领该技术发展,同时还有Aconity3D和DMG Mori等行业领导者;在国内,铂力特、华曙…...

掌握AMD Ryzen处理器精细调控:SMUDebugTool实战指南

掌握AMD Ryzen处理器精细调控:SMUDebugTool实战指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitc…...

终极智慧树自动刷课插件:告别手动操作,实现高效学习自动化

终极智慧树自动刷课插件:告别手动操作,实现高效学习自动化 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台枯燥的视频学习而烦…...

百度网盘直链解析工具:告别龟速下载的技术实现方案

百度网盘直链解析工具:告别龟速下载的技术实现方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字资源分享领域,百度网盘凭借其庞大的用户基础和…...

告别环境报错!Windows下ESP8266开发环境保姆级搭建指南(含MSYS2、Python包避坑)

Windows下ESP8266开发环境零失败搭建全攻略 第一次接触ESP8266开发时,最令人头疼的莫过于环境配置。明明按照官方文档一步步操作,却总在某个环节卡住——Python包安装失败、工具链不兼容、串口识别异常...这些问题消耗了开发者大量时间。本文将彻底解决…...

Node.js 流处理:高效处理大数据的艺术

Node.js 流处理:高效处理大数据的艺术 什么是流? 在 Node.js 中,流(Stream)是处理大量数据的抽象接口。它允许我们逐块读取或写入数据,而不需要一次性将全部数据加载到内存中。 为什么需要流? 想…...

解锁AMD Ryzen潜力:SMUDebugTool硬件调试完全指南

解锁AMD Ryzen潜力:SMUDebugTool硬件调试完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcod…...

ComfyUI Manager完全指南:AI绘画插件管理从未如此简单

ComfyUI Manager完全指南:AI绘画插件管理从未如此简单 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custo…...

别再死记硬背公式了!用Python实战SCS模型,5分钟搞定城市降雨径流估算

用Python实战SCS模型:5分钟自动化城市降雨径流分析 水文工程师们是否厌倦了手动查表计算CN值?环境分析师是否还在为重复的径流公式推导头疼?今天我们将用Python彻底改变传统工作流——无需记忆复杂公式,只需5行核心代码即可完成从…...

别再死记硬背了!用C++邻接矩阵手搓Dijkstra算法,我连路径打印都给你讲明白了

从零实现Dijkstra算法:邻接矩阵实战与路径回溯详解 在计算机科学的世界里,寻找两点之间最短路径的问题就像现代都市中的导航系统——我们需要在错综复杂的道路网络中找到最优解。Dijkstra算法作为解决单源最短路径问题的经典方法,其重要性不…...