雨云MySQL怎么部署?安装、备份与调优实录

雨云云服务器上跑MySQL的安装、安全加固、备份与低内存调优经验
发布于
21

在雨云云服务器上跑MySQL,难点从来不是”装得上”,而是装完别让它裸奔。改掉默认端口、禁掉root远程登录、每天自动备份、低内存机器先开swap再把缓冲池调小,这几件事比背任何调优参数都实在。下面把我在一台香港VPS上折腾出来的做法拆开说。

先想清楚:你的项目真需要MySQL吗

小站点、单页应用、个人笔记,SQLite通常更省心;只有并发稍高、需要事务、要稳定备份点时,才值得上MySQL。

我把三种选择摆一块对比过:SQLite零依赖、文件即数据库,适合低频读写;MySQL/MariaDB支持并发连接和复杂查询,适合WordPress、Typecho、各类后台;宝塔或1Panel面板里点一下就能建库,省事但对你隐藏了细节。

雨云这类便宜的香港VPS、美国VPS,1核1G起步配置也能跑MySQL,但前提是你得给它留足内存或swap,不然很容易OOM。

安装:我习惯手动装MariaDB,不走一键包

Debian、Ubuntu用apt装mariadb-server就行,MariaDB是MySQL的兼容分支,客户端命令和SQL语法基本通用,发行版源里默认也更干净。

我一般这么做:先apt update,再apt install mariadb-server,装完跑一遍mysql_secure_installation,把匿名用户和test库清掉、root改成本地认证。

为什么用MariaDB而不是Oracle MySQL?雨云镜像和多数Linux发行版源里默认就是MariaDB,更新勤、许可也省心。如果你用宝塔或1Panel,面板里”数据库”一栏点新建就能建库建用户,确实快,代价是你不太清楚它背后改了哪些配置(宝塔和1Panel到底怎么选,我之前专门横评过)。手动装累一点,但出问题你能定位。

安全:装完第一件事是别裸奔

把bind-address改成127.0.0.1、禁掉root远程、给应用单独建低权账号,这三步不做,等于把数据库直接挂到公网。

具体做法:编辑/etc/mysql/mariadb.conf.d/下的配置,把bind-address设成127.0.0.1,只听本机;新建一个专库和专用账号,只授权这张库,绝不用root跑应用;防火墙只放行Web和SSH端口,数据库端口不对外。

数据是你和用户的资产。按《个人信息保护法》的最小必要原则,只存该存的字段,敏感信息加密落库,不收集和业务无关的数据。

备份:这事比调优重要十倍

mysqldump每天定时导一份,再往对象存储或异地云盘扔一份,比任何性能调优都救命。

我用的笨办法:写个cron,凌晨低峰期用mysqldump –single-transaction导出整库,gzip压一下,文件名带日期,本地留七天,旧的自动删。

更稳的是把备份推到雨云对象存储或者另一台机器,做到异地(前面写的BorgBackup思路可以直接复用,把dump文件纳进去重仓库;对象存储当异地仓的做法也讲过)。雨云弹性云盘自带的快照当兜底也行,但它和实例在同一套存储里,真出了机房级故障它救不了你,所以异地那一份不能省。

血的教训:没备份就手痒去ALTER TABLE加字段,锁表半小时还差点把线上搞挂。现在任何结构变更前我先dump一份。

调优:小内存机器先加swap再动参数

1核1G默认配置一跑就吃满内存,正确顺序是先开swap,再把innodb_buffer_pool_size压到物理内存的一半左右,别照抄大厂配置。

雨云入门版这种1核1G的便宜VPS,我第一件事就是建个1G的swap文件,swappiness调到10,避免OOM killer误杀mysqld。然后改innodb_buffer_pool_size,给到物理内存的50%到60%足够,剩下的留给系统和PHP、Web。max_connections别设太大,小站30到50够用,设高了反而占内存。

具体该给多少内存,得看你跑的是什么。WordPress这类PHP应用吃内存的除了MySQL还有PHP-FPM,小内存搭建WordPress那篇有过排查思路,可以对照着看。别盲目堆参数,很多人一上来就抄生产配置,结果小机器直接被打挂。

选节点和算成本:数据库对延迟很挑剔

数据库尽量和应用放在同一个节点同一个机房,跨节点走内网都多一跳延迟,更别说跨地域。

面向国内用户的站点,我选雨云香港VPS,免备案、到大陆延迟低,应用和MySQL同机或同可用区最顺。做欧美业务就换美国VPS,便宜量大,但亚洲访问延迟高,数据库别放远端。香港还是美国更细的取舍,我两台都开过,有篇实录可以对照

价格这块不绕弯:雨云用优惠码admin01能享五折,具体月付多少以官网实时报价为准,新用户还有1元试用可以先用起来验机器。买之前看清楚是否支持7天无理由退款(雨云限3次),试错成本低。入口在 https://www.jiyueip.com/link/5617 。同节点的带宽也要看,数据库备份和主从同步都吃带宽,选之前把峰值流量估一下。

几个我踩过的坑

  • root远程被扫:一开始没改bind地址,第二天日志里全是暴力破解尝试,立刻改成127.0.0.1才消停。
  • 磁盘写满:开了binlog和慢查询日志忘清理,跑两个月把云盘撑满,网站直接挂。现在日志轮转和过期策略都配上。
  • 字符集漏设utf8mb4:早期库用的utf8,用户昵称里的表情存不进去直接报错。新库一律utf8mb4,老库做了转码。
  • 没备份就改结构:前面说过了,刻进肌肉记忆。

最后提醒一句合规边界:在雨云云服务器上部署数据库、跑正经业务完全合规,但数据这块要守住几条线,按《网络安全法》《个人信息保护法》《数据安全法》的要求,只收集和业务相关的最小必要信息、敏感字段加密存储、不将数据库用于突破国家网络管控或访问违法违规内容。企业有跨境数据需求的,走有资质的授权专线。关于VPS能干什么、红线在哪,这篇合规边界清单讲得更全

常见问题(FAQ)

雨云云服务器上MySQL和直接用宝塔一键装哪个好?
想要快、不想管细节,宝塔或1Panel面板里点一下建库最省事,适合刚上手。愿意多花十分钟搞清楚背后配置、方便以后排查,就手动装MariaDB。两者性能没本质差别,区别在可控性。
1核1G的便宜VPS能跑MySQL吗?
能,但得先把swap开起来,再把innodb_buffer_pool_size压到物理内存一半左右,max_connections别调太高。只跑一个小论坛或低流量WordPress没问题;并发上来就该升到2核4G了。
雨云上的MySQL数据怎么备份才稳妥?
两层:本地用mysqldump每天定时导出压缩、保留一周;异地把备份推到对象存储或另一台机器。弹性云盘快照当同机房兜底。任何结构变更前先手动dump一份,别赌运气。
香港VPS和美国VPS跑数据库选哪个?
看用户在哪。国内用户选香港VPS,免备案、延迟低,应用和库同节点最稳;欧美业务选美国VPS,便宜量大。核心原则是数据库和应用尽量同机房,别让查询跨地域跑。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600