Linux数据库环境搭建七步实操指南
|
去年6月,我在协助主机巡检时遇到个麻烦事——开发组要的测试数据库环境,运维组愣是搭了三天没搞定,最后发现是MySQL配置文件里一个参数写错了小数点。这事儿让我憋了口气,自己啃了半个月文档,整理出这套七步实操法,后来给新来的实习生培训,最快两小时就能搭完基础环境,比公司标准流程快了三倍不止。 第一步选系统版本,别听网上瞎吹“最新版最稳”,我试过在CentOS 8上装MySQL 8.0,结果yum源直接报错,折腾半天发现是CentOS 8官方都停更了,最后换CentOS 7.9才搞定。现在公司服务器清一色用Ubuntu 22.04 LTS,这版本官方支持到2027年,社区包也全,装PostgreSQL 15.2时,apt install postgresql-15直接搞定,连依赖都不用管——这算不算新技术带来的便利? 第二步装数据库软件,有个坑我踩过两次:直接用root用户装!第一次在测试机装MongoDB,用root执行sudo apt install,结果启动时提示“Permission denied”,查日志发现是/var/lib/mongodb目录权限不对,后来才知道MongoDB官方文档明确要求用普通用户安装。现在我都养成习惯,先sudo useradd -m mongod,再chown -R mongod:mongod /var/lib/mongodb,最后用mongod用户启动,省了无数麻烦。 第三步改配置文件,这步最容易翻车。去年帮开发搭Redis集群,配置文件里bind 127.0.0.1没改,结果节点之间死活连不上,用redis-cli --scan查了半天,才发现是绑定地址限制了。现在我都用sed直接替换:sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/' /etc/redis/redis.conf,再配个防火墙规则,比手动改快多了——不过得提醒新人,生产环境千万别这么干,我这是测试机! 第四步初始化数据目录,有个细节别人很少写:必须用数据库用户执行!有次在测试机装MySQL,用root执行mysql_install_db,结果启动时报错“Can't find file: './mysql/plugin.frm'”,查了半天发现是数据目录权限不对,后来用sudo -u mysql mysql_install_db --basedir=/usr --datadir=/var/lib/mysql才搞定。现在我都写个脚本,自动检查目录权限,省得新人踩坑。
文章配图,仅供参考 第五步启动服务,别以为systemctl start就万事大吉了。去年帮运维组搭Elasticsearch,用systemctl start elasticsearch,结果服务卡在“starting”状态,查journalctl -u elasticsearch发现是JVM内存设置太大,服务器只有4G内存,我给了2G,直接OOM了。后来改成1G,再配个swap分区,才正常启动——这算不算新技术带来的新问题?第六步验证安装,别光看服务状态是active,得实际连进去测!有次装PostgreSQL,systemctl status显示running,但用psql -U postgres连不上,查log发现是listen_addresses没配,默认只监听localhost。现在我都用telnet 127.0.0.1 5432先测端口,再用nc -zv localhost 5432测连通性,最后用客户端工具连,三重验证才放心。 第七步备份配置,这步最容易被忽略!去年服务器迁移,新机器装完MySQL,发现配置文件和旧机器不一样,开发组要的参数全没了,最后只能从旧机器scp /etc/my.cnf过来。现在我都用git管理配置文件,每次修改先commit,再push到内部仓库,就算服务器炸了,配置也能秒恢复——这算不算新技术带来的最佳实践? 不过话说回来,这七步法也不是万能的。上个月帮开发搭ClickHouse,按这套流程走到第三步就卡住了——ClickHouse的配置文件是XML格式,和MySQL的.cnf完全不一样,最后只能翻官方文档重新弄。所以啊,新技术虽好,但遇到冷门数据库,该查文档还得查,别迷信“一招鲜”。 下一步我打算把这七步法写成自动化脚本,用Ansible或Puppet管起来,新人只要执行个playbook,就能自动完成所有步骤——不过这得先和开发组对好需求,毕竟他们要的数据库版本和参数,经常变来变去,烦得很! (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

