问题背景:

 1、在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-Slave主从关系设置

 2、数据库参数文件默认是只读,重启数据库服务时

解决方法:

 1、在my.cnf配置文件中添加"read_only=1",但是这需要重启数据库服务

 2、用root账号登录mysql,执行命令

set global read_only=0;

扩展:

 1、master节点开启/关闭只读

#开启只读模式
show global variables like"%read_only%"; #查看read_only状态
flush tables with read lock;          #锁表--全局读锁定,所有库所有表变为只读
set global read_only=1;              #开启只读,可以为1或on
show global variables like"%read_only%";    #再次查看read_onl状态
#关闭只读模式
unlock tables;                   #解锁表
set global read_only=0;              #关闭只读
show global variables like"%read_only%";    #查看状态

 2、slave节点开启/关闭只读

#开启只读
set global read_only=1;
#关闭只读
set global read_only=0;

  

 3、详解:

    对于Mysql数据库读写状态,主要靠"read_only"全局参数来设定;默认情况下, 数据库是用于读写操作的,所以read_only参数也是0或faluse状态,这时候不论是本地用户还是远程访问数据库的用户,都可以进行读写操作;

    如需设置为只读状态,将该read_only参数设置为1或TRUE状态,但设置 read_only=1 状态有两个需要注意的地方:

     1) read_only=1只读模式,不会影响slave同步复制的功能,所以在MySQL slave库中设定了read_only=1后,通过 "show slave status\G" 命令查看salve状态,可以看到salve仍然会读取master上的日志,并且在slave库中应用

      日志,保证主从数据库同步一致;  

     2) read_only=1只读模式,限定的是普通用户进行数据修改的操作,但不会限定具有super权限的用户的数据修改操作 (但是如果设置了"super_read_only=on", 则就会限定具有super权限的用户的数据修改操作了);在MySQL

      中设置read_only=1后,普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,但具有super权限的用户,例如在本地或远程通过root用户登录

      到数据库,还是可以进行数据变化的DML操作;(也就是说"real_only"只会禁止普通用户权限的mysql写操作,不能限制super权限用户的写操作; 如果要想连super权限用户的写操作也禁止,就使用"flush tables with read

      lock;",这样设置也会阻止主从同步复制!)

 4、锁表 

  1)为了确保所有用户,包括具有super权限的用户也不能进行读写操作,就需要执行给所有的表加读锁的命令 "flush tables with read lock;",这样使用具有super权限的用户登录数据库,想要发生数据变化的操作时,也会提示表被锁定

    不能修改的报错。这样通过设置"read_only=1"和"flush tables with read lock;"两条命令,就可以确保数据库处于只读模式,不会发生任何数据改变,在MySQL进行数据库迁移时,限定master主库不能有任何数据变化,就可以通过

    这种方式来设定。

  2)但同时由于加表锁的命令对数据库表限定非常严格,如果在slave从库上执行这个命令后,slave库可以从master读取binlog日志,但不能够应用日志,slave库不能发生数据改变,当然也不能够实现主从同步了,这时如果使用 "unlock

    tables;"解除全局的表读锁,slave就会应用从master读取到的binlog日志,继续保证主从库数据库一致同步。

  3)为了保证主从同步可以一直进行,在slave库上要保证具有super权限的root等用户只能在本地登录,不会发生数据变化,其他远程连接的应用用户只按需分配为select,insert,update,delete等权限,保证没有super权限,则只需要将salve

    设定"read_only=1"模式,即可保证主从同步,又可以实现从库只读。相对的,设定"read_only=1"只读模式开启的解锁命令为设定"read_only=0";设定全局锁"flush tables with read lock;",对应的解锁模式命令为:"unlock tables;".

    当然设定了read_only=1后,所有的select查询操作都是可以正常进行的。

本文参考:https://www.cnblogs.com/kevingrace/p/10095332.html

mysql--read only的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. mysql每秒最多能插入多少条数据 ? 死磕性能压测

    前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...

  3. LINUX篇,设置MYSQL远程访问实用版

    每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...

  4. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  9. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  10. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

随机推荐

  1. 记一次在线客服系统用户遭勒索,索要茶水费事件的 Windbg 分析与应对

    本文记录了几个月前,客户在使用在线客服系统过程中,遭到勒索威胁,索要茶水费 的事件.经过应对,快速的化解了攻击威胁,并继续安全使用至今. 讲故事 威胁次日,收到报警,服务器 CPU 使用率持续超过 8 ...

  2. 在路上---学习篇(一)Python 数据结构和算法 (3) --快速排序

    独白: 前几天学的基本简单排序算法,相对来说接受起来还是可以的,今天学的快速排序,视频看了2遍加上自己的思考,才真正的研究明白.自己的编程思维在逐渐的形成,日后还需勤加练习.心得:越高级的算法,越是让 ...

  3. 从源码分析 Redis 异步删除各个参数的具体作用

    以前对异步删除几个参数的作用比较模糊,包括网上的很多资料都是一笔带过,语焉不详. 所以这次从源码(基于 Redis 7.0.5)的角度来深入分析下这几个参数的具体作用: lazyfree-lazy-u ...

  4. 轻松应对复杂集成场景!用友U8API开发适配

    在企业上云的大趋势下,U8+ 全面转向互联网方向,深入融合云应用,一站式提供财务.营销.制造.采购.设计.协同.人力等领域的"端 + 云"服务,并通过软硬一体化.产业链协同的策略全 ...

  5. EMCC13.5+Oracle19.13+Redhat8 In Silent Mode

    问题描述:使用静默的方式来安装emcc13.5+Oracle19.13,准备好19c的oracle环境,一开始用21c的库+emcc13.5的安装检查一直过不去,但是19c是没有问题的,具体问题会在下 ...

  6. STM32外设:信号转换器 ADC、DAC

    主要外设: ADC:Analog to Digital Converter 模数转换器 DAC:Digital to Analog Converter 数模转换器 ADC_IN` 主要功能:测外部引脚 ...

  7. C# 字节数组、各进制字符串数据互转

    前言 日常开发过程中,格式转换是必不可少的重要环节,经常是十进制转十六进制.十六进制转byte数组又转换回来来回转换,最然进制转换很基础同时 C# 也提供了很多直接方便进行格式转换的方法,但是封装一个 ...

  8. Selenium等待元素出现

    https://www.selenium.dev/documentation/webdriver/waits/ 有时候我们需要等待网页上的元素出现后才能操作.selenium中可以使用以下几种方法等大 ...

  9. 华企盾DSC控制台操作卡顿如何解决

    解决方法: 修改注册表: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 的 USERProcessHa ...

  10. 一个WPF版的Layui前端UI库

    前言 相信做.NET后端开发的很多小伙伴都用过Layui前端UI组件库,今天我们分享一个WPF版的Layui前端UI样式库:Layui-WPF. WPF介绍 WPF 是一个强大的桌面应用程序框架,用于 ...