如何取消Linux数据库只读模式?

操作前关键准备

  1. 备份数据库
    执行任何写操作前,使用以下命令备份(以MySQL为例):

    mysqldump -u [用户名] -p --all-databases > full_backup.sql
  2. 检查只读状态
    登录数据库确认当前状态:

    SHOW VARIABLES LIKE 'read_only';  -- MySQL
    SELECT pg_is_in_recovery();       -- PostgreSQL(返回 f 表示非只读)

**二、取消只读模式的具体步骤

MySQL/MariaDB

方法1:动态修改(无需重启)

SET GLOBAL read_only = OFF;          -- 取消全局只读
SET GLOBAL super_read_only = OFF;    -- 若启用超级只读需额外关闭

方法2:修改配置文件(需重启)
编辑 /etc/my.cnf/etc/mysql/my.cnf

[mysqld]
read_only = OFF          # 删除或设为OFF
super_read_only = OFF    # 同上

重启服务生效:

systemctl restart mysqld

PostgreSQL

步骤:

  1. 结束恢复模式(如主从架构中的从库):
    pg_ctl promote -D /var/lib/pgsql/data/  # 提升从库为主库
  2. 单机环境修改配置:
    编辑 postgresql.conf

    default_transaction_read_only = off  # 确保为off

    重启服务:

    systemctl restart postgresql

Redis

redis-cli
127.0.0.1:6379> CONFIG SET replica-read-only no  # 关闭副本只读
127.0.0.1:6379> CONFIG REWRITE                  # 持久化配置

MongoDB

use admin
db.adminCommand({ setParameter: 1, readOnly: false })  // 取消只读

验证是否成功

  • MySQL
    SHOW VARIABLES LIKE 'read_only';  -- 结果应为 OFF
  • PostgreSQL
    INSERT INTO test_table (col) VALUES ('write_test');  -- 测试写入
  • 通用检查
    观察应用日志或使用监控工具(如Prometheus)确认写操作恢复。

常见问题解决

  1. 权限不足导致失败

    ERROR 1227 (42000): Access denied; need SUPER privilege

    解决方案:使用具有 SUPER 权限的账户操作。

  2. PostgreSQL从库无法取消只读
    需先停止主从同步:

    pg_ctl stop -D /var/lib/pgsql/data/
    rm -f /var/lib/pgsql/data/standby.signal  # 删除触发恢复的信号文件
    pg_ctl start -D /var/lib/pgsql/data/
  3. 配置文件修改后未生效

    • 检查配置路径是否正确:mysql --help | grep "my.cnf"
    • 确认服务重启:systemctl status mysqld

安全建议

  1. 只读场景推荐
    • 从库查询分离时保持只读
    • 数据备份期间启用只读防误操作
  2. 操作后监控
    使用 tophtopvmstat 观察服务器负载,避免突发写入导致资源过载。

重要提示:生产环境操作前必须备份数据并制定回滚方案,如遇复杂架构(如集群、主从复制),建议结合数据库文档操作。


引用说明

  • MySQL 8.0 Reference Manual: read_only System Variable
  • PostgreSQL Documentation: Recovery Configuration
  • Redis Commands: CONFIG SET
  • MongoDB Manual: readOnly Mode

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6375.html

(0)
酷番叔酷番叔
上一篇 2025年7月5日 22:57
下一篇 2025年7月5日 23:59

相关推荐

  • Linux下如何彻底卸载Oracle数据库及残留文件?

    卸载Linux环境下的Oracle数据库需谨慎操作,避免残留文件影响系统稳定性,本文以常见版本(10g/11g/12c/19c)为例,分步骤说明卸载流程,涵盖工具卸载、手动清理、环境变量处理及用户组清理等关键环节,卸载前准备数据备份卸载前务必导出所有用户数据(使用expdp/impdp或exp/imp),避免数……

    2025年9月30日
    1300
  • Linux系统如何查看当前在线用户数量?

    在Linux系统中,用户管理是系统运维的基础操作之一,准确掌握系统中用户的状态和数量对于安全管控、资源分配等至关重要,Linux提供了多种命令和工具来查询用户信息,包括当前登录用户、系统总用户数、活跃用户等,不同场景下需要选择合适的命令,本文将详细介绍这些查询方法,并结合实际示例和表格对比,帮助用户全面掌握Li……

    2025年10月6日
    800
  • Linux管理员为何查不到明文密码?

    查看密码存储文件(仅限root权限)Linux用户密码的加密哈希值存储在 /etc/shadow 文件中:sudo cat /etc/shadow输出示例(关键字段说明):username:$6$TrnQz2d…$Vj5Xb2…:19485:0:99999:7:::字段1: 用户名字段2: 加密后的密码……

    2025年7月23日
    4000
  • linux下如何安装stax

    在Linux系统中安装stax(假设stax是一个用于特定任务处理的工具或框架,具体功能需结合实际场景,此处以通用安装流程为例)需要根据系统环境选择合适的方式,主要包括通过包管理器安装、源码编译安装两种主流方法,以下是详细步骤说明,安装前环境准备在开始安装前,需确保系统满足基本要求:建议Linux内核版本3.1……

    2025年10月8日
    900
  • Linux守护进程卡死如何安全终结?

    定位后台程序的3种方法ps 命令 + 管道筛选ps aux | grep 程序名关键词 # 示例:ps aux | grep nginx输出解析:USER(所有者)、PID(进程ID)、%CPU(CPU占用)、COMMAND(命令路径)pstree 查看进程树pstree -p # 显示所有进程的树状结构,直观……

    2025年7月15日
    5000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信