|
在API开发中,数据库作为核心数据存储层,其配置与运维效率直接影响项目交付速度。对于API工程师而言,掌握Linux环境下数据库的快速部署与基础运维技能,能显著减少跨岗位协作成本。本文以MySQL和PostgreSQL为例,介绍在Linux系统中从零开始搭建数据库并保障其稳定运行的实用方法。

AI绘图结果,仅供参考 一、环境准备与安装 选择Ubuntu 22.04 LTS或CentOS Stream 9作为基础系统,通过包管理器安装数据库服务。对于MySQL,使用`sudo apt install mysql-server`(Ubuntu)或`sudo dnf install mysql-server`(CentOS)完成安装;PostgreSQL则通过`sudo apt install postgresql`或`sudo dnf install postgresql-server`部署。安装后执行`sudo systemctl enable --now mysql`(或postgresql)启动服务,并通过`ss -tulnp | grep 3306`(MySQL默认端口)验证服务状态。为提升安全性,运行`mysql_secure_installation`或`postgresql-setup --initdb`完成初始化配置,包括设置root密码、移除匿名用户等操作。
二、基础配置优化 修改配置文件是提升性能的关键步骤。MySQL配置文件位于`/etc/mysql/mysql.conf.d/mysqld.cnf`,需重点关注`innodb_buffer_pool_size`(建议设为物理内存的50-70%)、`max_connections`(根据并发量调整,默认151可能不足)和`log_bin`(开启二进制日志以支持数据恢复)。PostgreSQL的配置在`/var/lib/pgsql/data/postgresql.conf`中,重点调整`shared_buffers`(通常设为物理内存的25%)、`work_mem`(每个查询操作内存,复杂查询需增大)和`maintenance_work_mem`(维护操作内存)。修改后执行`sudo systemctl restart mysql`或`sudo systemctl restart postgresql`使配置生效,并通过`SHOW VARIABLES LIKE 'innodb_buffer_pool_size'`(MySQL)或`SHOW shared_buffers`(PostgreSQL)验证参数是否生效。
三、用户与权限管理 API服务通常需要专用数据库用户,避免直接使用root账户。MySQL中通过`CREATE USER 'api_user'@'%' IDENTIFIED BY 'StrongPassword';`创建用户,`GRANT SELECT,INSERT,UPDATE,DELETE ON api_db. TO 'api_user'@'%';`授权;PostgreSQL使用`CREATE USER api_user WITH PASSWORD 'StrongPassword';`和`GRANT ALL PRIVILEGES ON DATABASE api_db TO api_user;`。为提升安全性,建议限制用户访问IP(如将`'%'`改为`'192.168.1.%'`),并定期使用`ALTER USER 'api_user'@'%' IDENTIFIED BY 'NewPassword';`更新密码。通过`SELECT host, user FROM mysql.user;`(MySQL)或`\\du`(PostgreSQL)可查看现有用户列表。
四、备份与监控方案 数据备份是运维核心任务。MySQL可使用`mysqldump -u root -p api_db > api_db_backup.sql`进行逻辑备份,或通过`xtrabackup`工具实现热备份;PostgreSQL推荐使用`pg_dump -U postgres -d api_db -F c -f api_db.dump`生成自定义格式备份。监控方面,安装`prometheus-node-exporter`收集系统指标,结合`mysqld_exporter`(MySQL)或`postgres_exporter`(PostgreSQL)暴露数据库指标,通过Grafana配置仪表盘实时监控QPS、连接数、缓存命中率等关键指标。设置`cron`任务每日凌晨执行备份,并通过`find /backup -type f -mtime +7 -delete`自动清理过期备份文件。
五、常见问题处理 连接失败时,检查防火墙规则(`sudo ufw allow 3306/tcp`或`sudo firewall-cmd --add-port=5432/tcp --permanent`)、用户权限(确认用户是否有远程访问权限)和服务状态(`systemctl status mysql`)。性能下降时,通过`EXPLAIN ANALYZE SELECT FROM large_table;`分析慢查询(PostgreSQL)或`SHOW PROCESSLIST;`查看当前连接(MySQL),优化索引或调整配置参数。对于数据损坏,MySQL可使用`mysqlcheck -u root -p --auto-repair api_db`修复表,PostgreSQL通过`REINDEX DATABASE api_db;`重建索引。 (编辑:站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|