首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql主从 从库只读

MySQL的主从复制是一种常见的数据库架构,用于提高数据的可用性、可靠性和读取性能。在这种架构中,主库(Master)负责处理所有的写操作,而从库(Slave)则复制主库的数据并处理读操作。以下是关于MySQL主从复制中从库只读的基础概念、优势、类型、应用场景以及常见问题及其解决方法。

基础概念

  • 主库(Master):负责处理所有的写操作(INSERT、UPDATE、DELETE)。
  • 从库(Slave):复制主库的数据,并处理读操作。
  • 复制(Replication):主库将数据变更记录到二进制日志(Binary Log)中,从库通过读取这些日志来同步数据。

优势

  1. 提高读取性能:读操作可以分散到多个从库上,减轻主库的压力。
  2. 数据备份:从库可以作为主库的数据备份,提高数据的可靠性。
  3. 故障恢复:在主库发生故障时,可以从库接管服务,实现快速切换。
  4. 数据分析:从库可以用于数据分析等对实时性要求不高的任务,不影响主库的性能。

类型

  1. 异步复制:主库在执行完写操作后立即返回,不等待从库确认。
  2. 半同步复制:主库在执行完写操作后,至少等待一个从库确认收到日志后再返回。
  3. 全同步复制:主库在执行完写操作后,等待所有从库确认收到日志后再返回。

应用场景

  • 高并发读取场景:如电商平台的商品详情页、社交媒体的用户信息查询等。
  • 数据备份与恢复:定期备份数据,防止数据丢失。
  • 数据分析与报表:将分析任务放在从库上执行,不影响主库的性能。

常见问题及解决方法

从库只读的原因

从库默认设置为只读模式,主要是为了防止从库上的数据被意外修改,导致数据不一致。如果需要修改从库的数据,通常有以下几种原因:

  1. 配置错误:从库的配置文件中可能设置了read_only=1
  2. 权限问题:某些用户可能没有足够的权限在从库上进行写操作。

解决方法

  1. 修改配置文件: 编辑从库的MySQL配置文件(通常是my.cnfmy.ini),将read_only参数设置为0
  2. 修改配置文件: 编辑从库的MySQL配置文件(通常是my.cnfmy.ini),将read_only参数设置为0
  3. 然后重启MySQL服务使配置生效。
  4. 临时修改权限: 如果只是临时需要写权限,可以使用以下SQL命令:
  5. 临时修改权限: 如果只是临时需要写权限,可以使用以下SQL命令:
  6. 注意:这种方法只是临时修改,重启MySQL后会恢复默认设置。
  7. 检查用户权限: 确保用于连接从库的用户具有足够的权限进行写操作。可以使用以下命令检查和修改权限:
  8. 检查用户权限: 确保用于连接从库的用户具有足够的权限进行写操作。可以使用以下命令检查和修改权限:

示例代码

假设我们有一个简单的MySQL主从复制环境,以下是一些基本的配置和操作示例:

主库配置

编辑主库的my.cnf文件:

代码语言:txt
复制
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=MIXED

重启MySQL服务。

从库配置

编辑从库的my.cnf文件:

代码语言:txt
复制
[mysqld]
server-id=2
relay_log=mysql-relay-bin
read_only=1

重启MySQL服务。

设置主从复制

在主库上创建一个用于复制的用户:

代码语言:txt
复制
CREATE USER 'repl'@'从库IP' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP';
FLUSH PRIVILEGES;

在从库上设置主库信息:

代码语言:txt
复制
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
START SLAVE;

通过以上配置,可以实现基本的MySQL主从复制,并确保从库默认为只读模式。如果需要临时修改从库的读写权限,可以使用上述方法进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用innobackupex基于从库搭建mysql主从架构

MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一。但对于较大的数据库则该方式并非理想的选择。...使用Xtrabackup可以快速轻松的构建或修复mysql主从架构。本文描述了基于现有的从库来快速搭建主从,即作为原主库的一个新从库。该方式的好处是对主库无需备份期间导致的相关性能压力。...有关流式备份可以参考:Xtrabackup 流备份与恢复 1、备份从库 ###远程备份期间使用了等效性验证,因此应先作相应配置,这里我们使用的是mysql用户 $ innobackupex --user...$ scp -P50021 /etc/my.cnf mysql@172.16.16.10:/log/recover 2、主库授予新从库复制账户 master@MySQL> grant replication....sock pid-file=/log/recover/mysql3307.pid log_error=/log/recover/recover.err 5、启动从库及修改change master #

1.3K20
  • MySQL主从同步异常之从库误写数据

    一、主从同步异常现象分析(1)查看主从同步报错信息mysql> show slave status\G*************************** 1. row ***************...根据经验可以猜测:场景一:MySQL出现了事务回滚;场景二:从库没有设置read-only,业务误写数据到从库。...二、猜测验证(1)查看从库binlog列表或查询从库当前正在写的binlog文件mysql> show binary logs;+------------------+------------+| Log_name...--base64-output=decode-row mysql-bin.000008 | less # 按G切换到最后一行【注】由于出现主从同步报错,所以从库SQL Thread回放终止,最后记录binlog...【注】经过对binlog文件的分析,可以看出,主从同步异常时间点,从库有单独插入数据(判断方法server id发生了变化)。到此即可确定是从库单独写数据导致了主从同步异常。

    7810

    MySQL设置数据库为只读

    前言: 默认情况下,我们的 MySQL 实例是可读写的。但有些情况下,我们可以将整个实例设置为只读状态,比如做迁移维护的时候或者将从库设为只读。本篇文章我们来看下 MySQL 设置只读相关知识。...不过,从库开启 read_only 并不影响主从同步,即 salve 端仍然会读取 master 上的日志,并且在 slave 实例中应用日志,保证主从数据库同步一致。...(经测试,从库端开启 super_read_only 仍不影响主从同步。)...以个人数据库运维经验来讲,一般只有从库需要设置只读状态,从库端建议开启 read_only 或 super_read_only,避免人为写入。...总结: 本篇文章主要介绍了 MySQL 只读状态相关知识,其实除了从库外,其余实例很少设置全局只读,只是遇到某种需求的情况下需要将数据库设为只读状态,写本篇文章的目的也是遇到此类需求时,可以有个参考。

    7.7K10

    mysql数据库主从同步

    教程所用环境:centos7 + mysql5.5.57 一、起步准备  主库服务器:192.168.43.200  从库服务器:192.168.43.201  均安装mysql5.5.57  //这里最好安装同一版本的数据库...器后再运行下面的命令*/ mysql> flush privileges; 二、数据导入与导出 flush tables with read lock;  将主要要同步到从库的数据库导出(注意这里一定要将主库锁定停止操作...),然后将导入的数据库导入到从库中去(注意主从表名一致),如果在这里导入数据的状态不一致或者有表的主键自增不一致,则会导致无法同步,这里操作从简单,但要谨慎操作。...三、配置从库服务器(192.168.43.201):  1、打开/etc/my.cnf配置文件,进行如下配置 #主从复制的表 replicate-do-db=db replicate-ignore-db...四、测试 只要按上边的步骤全部走通了,这里向主库写数据,那么从库一定会同步过来的。

    7K10

    Mysql 只读模式设置

    一、常见现象 运维工作中会经常维护MySQL主从服务器,当然Slave我们只是用于读操作。一般权限开通也只授权只读账号,但是有时候维护工作可能不是一个人在做,你不能保证其他同事都按照这个标准操作。...有同事可能会授权Slave库MySQL账号为all或者select,update,insert,delete。...还有一种情况是主从做了对所有数据的同步(包括用户信息),在Master库上面授权的账号也同步到了Slave库上面,当然Master账号中肯定会有select,update,insert,delete权限...二、存在的问题 那么问题来了,当运维人员或者开发人员程序错误的连接了Mysql把Slave当成了Master等情况,那么就悲催了所有的数据修改就到Slave了,也会直接影响到主从的同步。...为了避免上述问题,我们需要给MySQL的Slave设置为只读模式。

    4.2K40

    MySql主从复制,从原理到实践!

    主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后在从数据库上对这些日志进行重新执行,从而使从数据库和主数据库的数据保持一致。...主从复制的原理 MySql主库在事务提交时会把数据变更作为事件记录在二进制日志Binlog中; 主库推送二进制日志文件Binlog中的事件到从库的中继日志Relay Log中,之后从库根据中继日志重做数据变更操作...,通过逻辑复制来达到主库和从库的数据一致性; MySql通过三个线程来完成主从库间的数据复制,其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑着从库上; 当在从库上启动复制时,首先创建...:在主数据库创建的用于同步数据的用户密码; master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数; master_log_pos:指定从数据库从哪个位置开始复制数据...查看主从同步状态: show slave status \G; 从数据库状态显示如下: ? 开启主从同步: start slave; 查看从数据库状态发现已经同步: ?

    53420

    mysql主从同步配置读写分离_mysql8做主从数据库

    这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。 利用主从数据库来实现读写分离,从而分担主数据库的压力。...在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。...这个功能,是由google为MYSQL引入的。 本文说的是在centos 7系统上,实现的mysql5.7数据库的主从同步配置,从而实现读写分离操作。...2.2 创建从服务器的用户和权限 #进入mysql数据库 [root@localhost mysql]# mysql -uroot -p Enter password: #创建从数据库的masterbackup...最好就是令从数据库与主数据库的数据结构和数据都一致了之后,再来恢复主从同步的操作。

    2.2K20

    Mysql数据库主从心得整理

    注:在实际的生产应用中发现,在mysql5.0以前的版本,mysql的这个过滤设置几乎是形同虚设,不起作用:不管你在主库或是从库上设置了忽略某个数据库或是表,他依然会进行同步,所以在做5.0以前版本的主从同步时...三、Mysql主从同步的配置   主库IP:192.168.1.2   从库IP:192.168.1.3   添加一个用于主从同步的用户:   GRANT REPLICATION SLAVE ON *....3、实现主从同步   3.1.实现数据库的统一   检查主从数据库的配置文件,查看是否已正确配置。首次实现 同步要备份主库上需要同步的数据库,然后完整的导入到从库中。...1、mysql主从监控的主要思路   Mysql主从的监控,其主要是监控从库上的一些重要参数:   Slave_IO_Running: Yes   Slave_SQL_Running: Yes   Master_Log_File...2、mysql主从监控的实现   不管mysql是那个版本,其中的从库上的Exec_master_log_pos、Exec_master_log_pos;主库上的 Master上的Log_File,Position

    1.8K70

    Mysql主从

    简介: 数据库高可用一直是企业的重中之重,而采用主从方案,一主一从,能实现负载均衡,读写分离的作用,分担数据库的负荷,提高性能,而如果搭配keepalived还能实现高可用性,当主服务器故障以后,自动切换到从服务器上...前提: mysql主从的搭建前提有: 两台虚拟机 两台虚拟机上都装有mysql,并且版本一样,两边的mysql数据库文件一致,mysql的安装方式我在前面博客已经介绍过了。...,所以我的日志不是从001开始的,(原先创建的数据库删掉了) 配置从库 修改配置文件: vi /etc/my.conf 修改 server-id = 2 log-bin = /home/mysql/log...可以测试一下,在主库创建一个数据库,然后去从库看有没有同步。..., mysql如何减少主从复制延迟: 如果延迟比较大,就先确认以下几个因素: 从库硬件比主库差,导致复制延迟 主从复制单线程,如果主库写并发太大,来不及传送到从库 就会导致延迟。

    2.8K10

    主从复制搭建从库案例一则-----主从复制

    近期,线上数据库需要搭建新从库,由于库比较大,所以从物理备份恢复数据搭建。 背景:5.6版本的主从库,备份是从从库备的。...exceeded max_allowed_packet; Increase max_allowed_packet on master; the start event position from 'mysql-bin....000042' at 203688051, the last event was read from '/data/3309/mysql-bin.000042 第一感觉与某个参数有关。...然后同事自己解析binlog发现没有这个位点,然后问我这个是主库的备份还是从库的备份,change到主库还是从库。 于是,问题很清晰了。...就是从库的备份,应该从xtrabackup_slave_info文件找位点信息。 总结:1.遇到问题,要排查环境等基础信息,理清逻辑,一步一步排查,不要依据现象根据经验下结论。 2.

    29920

    mysql数据库主从复制教程

    此时两台机子的mysql应该是可以相互访问的,如果不可以,导致的原因有很多,最常见的是防火墙没关,或者是安全组没有放通3306端口(从) 主数据库配置 登录主服务器,进入mysql的配置文件/etc/mysql...) 从数据库配置 登录从服务器,进入mysql的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]下面添加: server-id=10 log-bin=master-bin...log-bin-index=master-bin.index server-id可以是其他,但是不能与主服务器上的一样 从数据库连接主服务 在从服务器中,登录数据库,输入: mysql> change...: Slave_IO_Running: Yes Slave_SQL_Running: Yes 测试 在主数据库上创建一个test_zhucong的数据库,创建一个test表 可以看到,从数据库也相应的有了这个数据库以及表...注意 做主从复制时,首先确定两台服务器的mysql没任何自定义库(否则只可以配置完后之前的东西没法同步,或者两个库都有完全相同的库应该也是可以同步,图中主数据库有些数据库在从的里面没有,就是因为主从设置之前

    2.7K50

    MySQL数据库实现主从复制

    基于这种情况,就出现了主从复制这个技术。 **主从复制:**就是有两个数据库服务器,一个是主(master)数据库服务器,另一个是从(slave)数据库服务器。...这样的操作下,主从(slave)数据库的数据都是一样的,就相当于时刻在做数据备份,就算主(master)数据库的数据全部丢失了,还有从(slave)数据库的数据,我们就可以把从(slave)数据库的数据导出来进行数据恢复...最后从(slave)数据库其他SQL线程,把中继日志(Relay log)文件中的事件再执行一遍,更新从(slave)数据库的数据,保持主从数据一致。 ?...安装MySQL 要实现主从复制就需要两台数据库服务器,可以参考这篇文章《在CentOS上使用Nginx和Tomcat搭建高可用高并发网站》安装两个CentOS虚拟机。...从上面的测试来看,我们的数据是已经保证了主从数据一致了。也表命令了我门只要对主(master)数据库进行写入操作,从(slave)数据库就会作相应的操作,保证主从(slave)数据库数据一致。

    2.6K30

    MySQL数据库:主从复制Replication

    一、主从复制架构的搭建: 1、MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解请参考: http://blog.csdn.net/xlgen157387/article/details.../52452394 二、MySQL主从复制过程及原理: 1、MySQL主从复制的原理: Slave从Master获取binlog二进制日志文件,然后再将日志文件解析成相应的SQL语句在从服务器上重新执行一遍主服务器的操作...Binlog dump 线程,而每个从服务器上各自有两个线程;要实现MySQL的主从复制,首先必须打开master端的binlog (mysql-bin.xxxxxx)日志功能,否则无法实现mysql的主从复制...六、如何提高Mysql主从复制的效率: 对于提升MySQL的主从复制的复制效率,binlog的大小是非常重要的因素,因为它涉及了I/O和网络传输,所以我们主要看一下master/slave这两端可以如何优化...因为MySQL判断是否须要复制某个Event,不是根据产生该Event的语句所在的数据库,而是根据执行时所在的默认数据库,也就是登录时指定的数据库,或运行“USE DATABASE”中所指定的数据库。

    3.5K40

    MySQL数据库的主从同步配置

    欢迎转载,转载请注明出处,谢谢 一、写在前面 上一篇文章中,我们介绍了MySQL的主主复制,由于时间仓促,并未完整、清晰地验证主主复制的全过程,缺少从DCGH-DB1同步DCGH-DB2的验证步骤...如果没有本篇,上一篇文章实际就是主从复制,DCGH-DB1为Master,DCGH-DB2为从服务器。本文承接上文,本文完整阐述MySQL的主从复制、主主复制。 二、系统架构简图 ?...> grant replication slave,replication client on *.* to 'copy'@10.1.1.33; 五、完成从DCGH-DB2同步到DCGH-DB1的主从配置...六、完成从DCGH-DB1复制到DCGH-DB2的主从复制配置 1.登录到DCGH-DB3,进行主从配置。...如排除mysql、test两个库,replicate-ignore-db=mysql,test。文章中未加此字段,需要特此注意,在我们公司的生产环境中我加了该字段的。

    6.2K10

    MySQL主从复制(一主一从)部署

    MySQL主从复制 1、MySQL主从复制概述 MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一;但不可忽略的是它本身的功能的确很强大。...1.1 MySQL主从复制原理 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。...数据库性能提高,通过增加从数据库组建集群,提高总性能。 1.3 MySQL主从复制的形式 一主一从:用来做主从复制 。 主主复制:当作备份使用,当主服务器出现 故障时,另一个主服务器会自动顶上。...联级复制 2、主从复制配置 2.1主从复制配置步骤 确保从数据库与主数据库里的数据一样 在主数据库里创建一个同步账号授权给从数据库使用 配置主数据库(修改配置文件) 配置从数据库(修改配置文件) 需求:...192.168.111.135 centos8 有 salve 192.168.111.138 centos8 无 2.2 MySQL主从配置 2.2.1 确保从数据库与主数据库里的数据一样 为确保从数据库与主数据库里的数据一样

    2.1K10
    领券