如何取消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. 操作后监控
    使用 top、htop 或 vmstat 观察服务器负载,避免突发写入导致资源过载。

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


引用说明:

  • 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

相关推荐

  • ip命令为何更受推荐?

    在Linux系统中,网卡(网络接口卡)是连接计算机与网络的关键硬件,无论是排查网络问题、配置IP地址还是优化性能,准确查看网卡信息都是必备技能,以下是几种专业、可靠且高效的查看方法,适用于所有主流Linux发行版(如Ubuntu、CentOS、Debian等):ip 是现代Linux网络配置的标准工具,取代了旧……

    2025年7月28日
    23600
  • Linux如何读取NTFS分区?

    要让Linux系统读取NTFS文件系统(Windows常用的文件系统),通常需要借助第三方工具,因为Linux内核对NTFS的原生支持可能有限或存在读写限制,以下是详细的操作步骤、注意事项及常见问题解决方案,了解NTFS在Linux中的支持情况Linux内核虽然包含对NTFS的只读支持(通过ntfs模块),但读……

    2025年9月17日
    24300
  • Linux中如何获取文件夹?具体操作方法有哪些?

    在Linux系统中,“获取文件夹”通常涉及多种操作场景,如查看文件夹基本信息、列出内容、获取权限属性、统计大小,或从远程服务器下载文件夹等,本文将详细讲解不同场景下的具体命令和用法,帮助用户高效完成文件夹信息的获取与管理,本地文件夹信息获取查看文件夹基本属性要获取文件夹本身的元数据(如权限、所有者、大小、修改时……

    2025年9月27日
    25600
  • Linux启动IBM Db2如何确保安全?

    启动前准备环境要求已安装Db2服务器(版本推荐v11.5+)使用db2inst1实例用户(默认安装创建)确保系统内存≥2GB,磁盘空间充足检查实例状态切换至实例用户后执行:su – db2inst1 # 切换到实例用户db2ilist # 查看当前实例列表db2 get dbm cfg | grep &quot……

    2025年7月20日
    26700
  • Linux部署PHP选LAMP方案?

    环境准备更新系统sudo apt update && sudo apt upgrade -y # Debian/Ubuntusudo yum update -y # CentOS/RHEL安装Apache服务器sudo apt install apache2 -y # Debian/Ubuntu……

    2025年7月15日
    24000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信