如何取消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休眠失效?如何解决

    在 Linux 系统中,休眠(Hibernation) 是一种将内存数据完整保存到磁盘(通常是 Swap 分区或文件)后彻底关闭电源的状态,唤醒时,系统从磁盘恢复内存数据,精确还原到休眠前的状态,与挂起(Suspend) 不同,休眠不依赖电源维持内存数据,适合长时间离开电脑的场景(如夜间休眠),能显著节省电力……

    2025年6月18日
    16600
  • Linux程序是如何被系统执行的呢?

    Linux程序的执行是一个涉及编译、链接、加载和运行的多阶段过程,从源代码到最终执行,需要操作系统、编译器和加载器的协同工作,下面将详细拆解这一流程,从源码到可执行文件:编译与链接Linux程序通常以高级语言(如C、C++)源码形式存在,需通过编译器转换为机器可识别的二进制指令,这一过程分为四个阶段,以C语言为……

    2025年9月17日
    13100
  • Linux文件夹如何从根展开?

    Linux系统的目录采用树形结构,根目录(/)为起点,所有文件夹通过逐级嵌套形成层次关系。

    2025年6月19日
    17000
  • Linux虚拟机没有eth0网络接口如何解决?

    在Linux虚拟机的使用过程中,遇到网络接口中没有eth0的情况是比较常见的,这通常会导致无法配置网络连接,影响系统的正常使用,eth0是Linux系统中传统的以太网接口名称,但在较新版本的Linux发行版中,由于采用了Predictable Network Names(PNN)机制,网卡名称可能变为ens33……

    2025年9月8日
    13600
  • 谁在构建数字世界的核心?Linux开发

    Linux开发作为现代数字世界的基石,驱动着从服务器操作系统、云计算平台到嵌入式设备和智能终端的广泛应用,其开放、稳定、灵活的特性,使其成为构建和支撑全球数字基础设施的核心驱动力与不可或缺的力量。

    2025年6月16日
    17400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信