精华内容
下载资源
问答
  • 2022-02-21 16:43:25

    • 你们搭建数据库主从复制的目的有哪些
            容灾使用,用于故障切换
            业务需要,进行读写分离减少主库压力
    • 搭建了主从同步后会有同步延迟问题,为什么会有同步延迟问题,怎么解决?
            保证性能第一情况下,不能百分百解决主从同步延迟问题,只能增加缓解措施。
    
            现象:主从同步,大数据量场景下,会发现写入主库的数据,在从库没找到。
    
            原因:
              1、主从复制是单线程操作,当主库TPS高,产生的超过从库sql线程执行能力
    
              2、从库执行了大的sql操作,阻塞等待  
              3、服务器硬件问题,如磁盘,CPU,还有网络延迟等
            解决办法:
              1、业务需要有一定的容忍度,程序和数据库直接增加缓存,降低读压力
    
              2、业务适合的话,写入主库后,再写缓存,读的时候可以读缓存,没命中再读从库
    
              3、读写分离,一主多从,分散主库和从库压力  
              4、提高硬件配置,比如使用SSD固态硬盘、更好的CPU和网络  
              5、进行分库分表,减少单机压力
    更多相关内容
  • 数据库主从同步

    2021-09-01 17:22:56
    首先不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的,如果我们的目的在于提升数据库高并发访问的效率,那么首先需要考虑的应该是如何优化你的 SQL 和索引,这种方式简单有效。...

    是什么?

    主从架构,进行读写分离,让主服务器(Master)处理写请求,从服务器(Slave)处理读请求,这样同样可以提升数据库的并发处理能力。

    为什么?

    首先不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的,如果我们的目的在于提升数据库高并发访问的效率,那么首先需要考虑的应该是如何优化你的 SQL 和索引,这种方式简单有效。

    其次才是采用缓存的策略,比如使用 Redis,通过 Redis 高性能的优势将热点数据保存在内存数据库中,提升读取的效率。

    最后才是对数据库采用主从架构,进行读写分离。按照上面的方式进行优化,使用和维护的成本是由低到高的。主从同步设计不仅可以提高数据库的吞吐量,还有以下 3 个方面的作用。

    主从同步的优势:

    1. 负载均衡,减少了锁表的影响(主表写,不影响从表读)

    2. 数据备份

    3. 高可用性(主服务器宕机,可以切换到从服务器上)

    怎么实现?

    主从同步的原理

    数据库中有一个重要日志文件,那就是 Binlog 二进制日志(存储的是事件,这些事件分别对应着数据库的更新操作),它记录了对数据库进行更新的事件。实际上主从同步的原理就是基于 Binlog 进行数据同步的。

    在主从复制过程中,会基于 3 个线程来操作,一个主库线程,两个从库线程。二进制日志转储线程(Binlog dump thread)是一个主库线程。

    当从库线程连接的时候,主库可以将二进制日志发送给从库,当主库读取事件的时候,会在 Binlog 上加锁,读取完成之后,再将锁释放掉。

    从库 I/O 线程会连接到主库,向主库发送请求更新 Binlog。这时从库的 I/O 线程就可以读取到主库的二进制日志转储线程发送的 Binlog 更新部分,并且拷贝到本地形成中继日志从库 SQL 线程会读取从库中的中继日志,并且执行日志中的事件,从而将从库中的数据与主库保持同步。

    如何解决主从同步的数据一致性问题

    主从之间数据复制方式:

    方法 1:异步复制(提交后不等待)

    异步模式就是客户端提交 COMMIT 之后不需要等从库返回任何结果,而是直接将结果返回给客户端,这样做的好处是不会影响主库写的效率,但可能会存在主库宕机,而 Binlog 还没有同步到从库的情况,也就是此时的主库和从库数据不一致。

    这种复制模式下的数据一致性是最弱的。

    方法 2:半同步复制(提交后等待)

    MySQL5.5 版本之后开始支持半同步复制的方式。原理是在客户端提交 COMMIT 之后不直接将结果返回给客户端,而是等待至少有一个从库接收到了 Binlog,并且写入到中继日志中,再返回给客户端。这样做的好处就是提高了数据的一致性,当然相比于异步复制来说,至少多增加了一个网络连接的延迟,降低了主库写的效率。

    方法 3:组复制(提交前等待)

    读写事务想要进行提交,必须要经过组里“大多数人”(对应 Node 节点)的同意,大多数指的是同意的节点数量需要大于(N/2+1),这样才可以进行提交,而不是原发起方一个说了算。而针对只读事务则不需要经过组内同意,直接 COMMIT 即可。


    主从复制:是主数据库的数据通过二进制日志自动复制到从数据库中。


    读写分离:由原本一个服务器的读写请求转变为现在的主服务器处理写请求,从服务器处理读请求,减少了主服务器的压力。


    负载均衡:让不同的读请求按照策略均匀地分发到不同的从服务器中,让读写更加顺畅。

    展开全文
  • MySQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力。 MySQL主从同步的机制: MySQL同步的流程大致如下:  1、主...
  • 今天就来总结一道面试高频题目:数据库主从同步的原理是什么? 主从复制原理: 上边这张交互图就清楚的标记出了Master节点如何同步到Slave节点 首先Master上的修改、删除、新增操作都会被记录到一个叫做binlog的...

    面试官:你们数据库有没有用到主从同步呢?

    我:没有。

    结束…

    现在大多数公司数据库都是主从同步,读写分离的。今天就来总结一道面试高频题目:数据库主从同步的原理是什么?
    在这里插入图片描述

    主从复制原理:

    上边这张交互图就清楚的标记出了Master节点如何同步到Slave节点

    1. 首先Master上的修改、删除、新增操作都会被记录到一个叫做binlog的文件中,它是一个二进制日志文件
    2. Slave通过I/O线程读取binlog文件并写入到自己的relaylog(中继日志)中
    3. 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog
    4. 另一个SQL线程会读取自身的relaylog文件,并把对应的操作在自己的节点上执行一次,达到同步的效果
    主从虽好,同时也带来了问题:
    1. 主库宕机后,数据未同步完成,数据丢失

      解决方式:

      半同步复制 (确保事务提交后binlog至少传输到一个从库节点,性能有一定的降低,响应时间会更长)
      强制走主

    2. 从库只有一个SQL Thread,主库写压力大,复制很可能延时

      在SQL线程上实现了多线程,来提升slave的并发度

    展开全文
  • 数据库的读写分离能很大程度上减轻数据库的压力,读写分离的前提就是主从数据同步,然后在主库做增删改,从库做查询。 问题来了,怎么配置数据库主从呢? 以下我总结一下 例如: 主库:192.168.0.1 从库:192...

    情景:

    当用户多了,我们服务器压力大,一、可以从服务器硬件方面想,加配置,二、是mysql的优化,包括设置数据库的主从关系。

    以下知识是从数据库设置主从来处理压力大的问题。

    数据库的读写分离能很大程度上减轻数据库的压力,读写分离的前提就是主从数据同步,然后在主库做增删改,从库做查询。

    问题来了,怎么配置数据库的主从呢?

    以下我总结一下

    例如:

    主库:192.168.0.1

    从库:128.134.0.2

    两个数据库都安装了Mysql数据库,保证允许远程连接。

    主数据库配置

    注意:若是不知道my.cnf 文件在哪里,可以是find / -name my.cnf  查询返回结果是文件的路径

    1.修改mysql配置文件 /etc/my.cnf,这部分一定要配置在[mysqld]后面

    [mysqld] 
    log-bin=mysql-bin  
    server-id=1      //设置数据库服务器唯一ID,这里我们指定为1。
    binlog-do-db=hy  //设置需要同步的数据库,如果需要设置多个,则加入多条这行语句。

    2.重启数据库

    systemctl mysql restart

    3.登录主库

    mysql -u root -p //然后输入密码登录

    4.进入数据库之后给主数据库授权一个可以进行复制的用户(也就是给从数据库开个账号密码),执行如下命令:

    mysql> grant replication slave on *.* to 'slave'@'%' identified by 'se123456';

    注意:账号名 slave 和 密码  se123456  可以自定义,根据自己来写,尽量设置复杂些。

    5.查看是否创建成功,命令如下

    mysql> use mysql;
    mysql> select user,host from user;

    6、查看主库信息

    mysql> show master status;

    注意:记录下这些值(File Position  Binlog_Do_Db),在从库配置的时候要用到

    7.迁移数据,将主库的hy数据复制到从库,保证主从库拥有两个一样的数据库hy,而且里面数据需要一致。(一定需要一致,不一致,是同步失败)

    从数据库配置 

    1.连接从库,修改mysql配置文件 /etc/my.cnf,这部分一定要配置在[mysqld]后面

    [mysqld]
    log-bin=mysql-bin
    server-id=2
    replicate-do-db=hy
    master-host=128.134.0.2
    master-user=slave
    master-password=se123456

    2.登录到从库的数据库,做同步设置(此处要用到上面6中记录的数据)

     

    mysql> slave stop; //先关闭库服务
    
    mysql> change master to master_host='128.134.0.2',master_user='slave',master_password='se123456',
    master_log_file='mysql-bin.000001',master_log_pos=392;
    
    mysql> slave start; //启动库服务

     3.测试同步结果

    在主库hy中新建一个表test_data,然后看下从库是否相应生成对应的test_data表,如果生成了那么恭喜你,主从同步配置就成功了。

     

    数据主从同步失败解决方案

    排查问题

    打开数据从库(slave),运行

    mysql>show slave status\G;

    运行结果

    ·                                              图1 

    slave_IO_Running:No 说明数据库同步操作失败

    报错提示:

     Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

    解决方案

    1.在主库那边(master)清除日志

    mysql>flush logs;

    2.查看主库状态

    mysql>show master status;

    3.记下对应的File, Position的值,下面会用到 

     4.在从库(slave),执行:

    CHANGE MASTER TO MASTER_LOG_FILE='****-000004',MASTER_LOG_POS=107;

    注意:MASTER_LOG_FILE  和 MASTER_LOG_POS 值是根据图1的值来定。 

    mysql>slave start;
    mysql>show slave status \G

     查看是否同步成功了,结果:

     

    展开全文
  • 本文实例讲述了MySQL数据库主从同步实战过程。分享给大家供大家参考,具体如下: 接上一篇:MySQL数据库入门之备份数据库 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...
  • 本文主要是向大家描述的是在windows环境之下实现MySQL数据库主从同步备份的正确操作方案,以下就是文章的详细内容描述
  • 1.MySQL数据库主从同步原理主服务器有一个工作线程 io dump thread从服务器有两个工作线程,一个是io thread,一个sql thread。复制如何工作主从同步简单可以分为三步(1) master将改变记录到二进制日志(binary log)...
  • 主从同步:为了保证一致性,从库会实时与主库同步数据,但是会有延迟。 可能会产生的问题 同步延迟可能会导致主从数据不一致。例如:主库正在进行写操作,从库同时也正在读操作,但此时从库还未同步到主库的最新...
  • MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合。与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster...
  • 场景:需要在主机写入之后,保证在备机一定能够读取到已经写入的数据,也...主从数据库支持这种完全的同步模式。不过一般不建议使用这种同步模式。显而易见,如果写操作必须等待更新同步完成,肯定会极大影响性能。...
  • mysql数据库主从同步

    2022-03-02 10:57:40
    mysql数据库主从同步配置文档
  • 如何解决主库插入记录后,无法从从库中及时读取的问题,如何从架构上避免这种问题 在网上见过新建一个版本库的表,然后利用mysql proxy判断数据是否是最新的,然后路由到主库或者是从库,请问这个方案是可行的吗?...
  • 主要介绍了Linux下MySQL数据库主从同步配置,
  • 数据库高可用解决方案实战配置,解决单独数据库宕机,导致数据丢失问题。 基于MySQL5.5.62进行实验操作。
  • mysql数据库主从同步的原理

    千次阅读 2019-03-08 14:44:47
    mysql数据库主从同步的原理 1.为什么数据库要设置主服务器和从服务器? 数据库顾名思义就是用来存储数据的,那么有一个就够了,为什么还要主从服务器呢?就我目前的认识,我认为有两个原因,第一,数据库数据是一...
  • Mysql数据库主从同步配置
  • MySQL数据库主从同步服务器部署说明文档
  • 一、 概念: ① 数据库同步 (主从同步 — 主数据库写的同时 往从服务器写数据)② 数据库同步 (主主同步 — 两台数据库服务器互相写数据) 二、 举例数据库服务器(A) 主数据库 IP:192.168.1.134数据库服务器...
  • MySQL5.6 数据库主从同步安装与配置详解(Master/Slave) 本篇文章主要介绍了MySQL5.6 数据库主从同步安装与配置详解,具有一定的参考价值,有兴趣的可以了解一下。 安装环境 操作系统 :CentOS 6.5 数据库版本:...
  • 一线工程师实战,实现Mysql+Mycat实现数据库主从同步与读写分离应用脚本,实现mysql主从同步
  •  2:建立主从关系,实现数据主从同步  实现步骤:  1:配置主数据库的主配置文件,重启服务  [root@zhu~]#vim/etc/my.cnf  [mysqld]  server_id=31  log_bin  [root@zhu~]#servicemysqlrestart  2...
  • Redis是一种高性能的内存数据库;而MySQL是基于磁盘文件的关系型数据库,相比于Redis来说,读取速度会慢一些,但是功能强大,可以用于存储持久化的数据。在实际工作中,我们常常将Redis作为缓存与 ...
  • MYSQL 数据库主从同步(局域网)

    千次阅读 2022-03-28 12:36:40
    MYSQL 数据库主从复制,实时同步的再现1. 1 先下载虚拟机(硬件)与lunxi系统(centos7)1.2 在lunxi 系统安装rpm 版mysql 5.5.551.3 在Windows 系统中安装新的MYSQL5.551.4 主从复制的原理与实践1.5 总结 一. ...
  • MySQL的主从同步是一个很成熟的架构,优点为:  ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;  ②在从主服务器进行备份,避免备份期间影响主服务器服务;  ③当主服务器出现问题时...
  • 主从服务器上的MySQL数据库版本同为5.1.34
  • 主库上修改用户权限原因1:在主库上执行drop user 或者授权操作时,导致的从库上报错,停止恢复主库的binlog解决方法:重启从库同步,跳过出错语句在从库上执行,mysql> stop slave;mysql> set sql_slave_skip...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,966
精华内容 52,786
关键字:

如何解决数据库主从同步问题