MYSQL的主从复制知识点整理

当单台MYSQL服务器无法满足当前网站流量时的优化方案。需要搭建mysql集群技术。

一、功能:

当向主服务器插入|修改|删除数据时,数据会自动同步到从服务器。

注意:主从复制是单向的,只能主 -> 从

分为两种类型:发射型(一主多从):一般使用在:备份、读写分离。

环形(多主多从):一般使用:当主服务器压力大时、跨地区的网站实现数据同步

在环形结构中,如果同时向三台服务器的同一表插入记录会出现“ID冲突的问题”。

解决办法:让三台服务器生成不同的ID;

第一台:1,4,7...

第二台:2,5,8..

第三台:3,6,9...

这个可以MYSQL的配置文件中设置:

二、主从的原理(利用了bin日志)

Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,ALTER TABLE,grant等等)。主从复制的原理其实就是把主服务器上的BIN日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

扩展:mysql中的日志:

查询日志错误日志 Bin日志

慢日志:你可以设置一个时间阀值,如0.5秒,那么将来所以执行时间超过这个值的SQL语句就会被记录下来。这样我们就可以把慢的SQL语句记录下来,专门进行优化。

用途:可以快速定位到网站中比较拖网站的SQL,然后可以优化:建索引,缓存这个SQL的结果。

三、实际的配置

把windows系统的MYSQL做为主服务器,LINUX下的做为从服务器。

主服务器:

1. 开启bin日志

修改mysql的配置文件:my.ini添加:

为服务器指定一个server-id(主从服务器的ID值不能重复)

如果是环形的服务器需要添加以下项:

log-slave-updates = on // 如果是环形多服务器,要设置这一项,

在主服务器上为从服务器创建一个用来同步数据的账号

登录MYSQL

执行一个SQL:

创建了一个只有REPLICATION SLAVE权限的账号:用户名:slave密码:1234

在主服务器执行SQL查看主服务器当前bin日志的状态

注意:每次修改数据时这两个值都会改变,所以在查看了这两个值之后,不要操作主服务器、直接到从服务器配置完成之后,否则这个值对应不上会同步失败。

从服务器(linux):

开启bin日志

修改配置文件/etc/my.cnf

设置一个server-id:

3. 如果是环形的服务器需要添加以下项:

log-slave-updates = on // 如果是环形多服务器,要设置这一项,

4.在从服务器上执行SQL语句配置主服务器的地址:

登录MYSQL:

设置从服务器并启动复制功能 

5.执行SQL查询从服务器的状态是否配置成功:

如果是两个YES那么代码成功!完成!

说明:在配置成功之前,主服务器上的数据不会自动到从服务器上来。所以需要在配置之前先把主服务器上的所有数据先手动的导到从服务器上来,然后配置完主从之后,数据以后就同步了。

应用场合:

从服务器做为数据的备份服务器。当服务器压力比较大时可以使用主从服务器实现读、写分离来分流减轻服务器的压力。跨地域网站的优化

制作一个留言板的功能,考虑到不同地域优化的架构思路?

以上就是关于MYSQL主从复制的全部原理知识点,感谢大家的学习和对我们的支持。

(0)

相关推荐

  • MySQL配置SSL主从复制

    MySQL5.6 创建SSL文件方法 官方文档:https://dev.mysql.com/doc/refman/5.6/en/creating-ssl-files-using-openssl.html#creating-ssl-files-using-openssl-unix-command-line Create clean environment mkdir /home/mysql/mysqlcerts && cd /home/mysql/mysqlcerts Create CA c

  • Mysql主从复制作用和工作原理详解

    一.什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库.在最常用的mysql数据库中,支持单项.异步赋值.在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器:此时主服务器会将更新信息写入到一个特定的二进制文件中. 并会维护文件的一个索引用来跟踪日志循环.这个日志可以记录并发送到从服务器的更新中去.当一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置.然后从服务器会接

  • MySQL数据库主从复制延时超长的解决方法

    前言 MySQL主从复制的延时一直是业界困扰已久的问题.延时的出现会降低主从读写分离的价值,不利于数据实时性较高的业务使用MySQL. UDB是UCloud推出的云数据库服务,上线已达六年,运营了数以万计的UDB MySQL实例.除了提供高可用.高性能.便捷易用的产品特性,团队还平均每天帮助用户解决2-3起MySQL实例主从复制延时的问题.从大量实践中我们总结了主从复制延时的各种成因和解决方法,现分享于此. 延时问题的重要性 主从复制机制广泛应用在UDB的内部实现中:UDB创建的从库和主库就采用

  • MYSQL 完全备份、主从复制、级联复制、半同步小结

    mysql 完全备份 1,启用二进制日志,并于数据库分离,单独存放 vim /etc/my.cnf 添加 log_bin=/data/bin/mysql-bin 创建/data/bin文件夹并授权 chown mysql.mysql /data/bin 2,完成备份数据库 mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz 3,对数据库进行增删改 INSERT hellodb.students(stu

  • 深入理解MySQL主从复制线程状态转变

    前言 MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是 一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到日志流后,写入relay log,另一个线 程SQL线程,会读取该relay log内容,然后对sql语句进行重放. 本文主要给大家介绍的是关于MySQL主从复制线程状态转变的相关内容,下面话不多说了,来一起看看详细的介绍吧 一.主库线程状态(State)值 以下列表显示了主从复制中主服务器的Binlog Dump线程的

  • Mysql主从复制注意事项的讲解

    一.报错error connecting to master 'x@x.x.x.x:x' - retry-time: 60  retries: 86400 今天搭建mysql主从复制,一直报这个错.我是在一台虚拟机上使用多实例创建的2个不同端口的数据库,查了很久,才解决. 1.检查主从复制的用户名密码: 2.检查MASTER_LOG_FILE和MASTER_LOG_POS. 记住配置从库的命令,这些参数都要参考主库的配置: mysql> CHANGE MASTER TO MASTER_HOST=

  • MYSQL的主从复制知识点整理

    当单台MYSQL服务器无法满足当前网站流量时的优化方案.需要搭建mysql集群技术. 一.功能: 当向主服务器插入|修改|删除数据时,数据会自动同步到从服务器. 注意:主从复制是单向的,只能主 -> 从 分为两种类型:发射型(一主多从):一般使用在:备份.读写分离. 环形(多主多从):一般使用:当主服务器压力大时.跨地区的网站实现数据同步 在环形结构中,如果同时向三台服务器的同一表插入记录会出现"ID冲突的问题". 解决办法:让三台服务器生成不同的ID: 第一台:1,4,7...

  • mysql数据库 主从复制的配置方法

    MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环.当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那 时起发生的任何更新,然后封锁并等待主服务器通知下一次更新. 为什么使用主从复制? 1.主服务器/从服务器设置增加了健壮性.主服务器出现问题时,你可以切换到从服务器作为备份. 2.通过在主服务器和从服务器之间切分处理

  • Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】

    本文实例讲述了Laravel框架基础语法与知识点整理.分享给大家供大家参考,具体如下: 这篇文章的知识点主要有以下几个点: 模板中输出PHP变量 模板中调用PHP代码 原样输出 模板注释 引入子视图 知识点一:模板中输出PHP变量 首先我们要有一个变量,这个变量我们将他存储于控制器当中. 如下: $name = 'Rarin'; 当然,这个变量肯定要和输出视图放置在一个方法里,然后,我们在Bstp.blade.php(Bstp目录下的)填入 {{$name}} 代码.效果如下: 知识点二:模板中

  • 数据库索引的知识点整理小结,你所需要了解的都在这儿了

    数据库索引,相信大家都不陌生吧. 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.作为辅助查询的工具,合理的设计索引能很大程度上减轻db的查询压力,db我们都知道,是项目最核心也是最薄弱的地方,如果压力太大很容易产生故障,造成难以预计的影响.所以,不管是日常开发还是面试,索引这一块知识体系都是必须掌握的. 当然,虽说是必须掌握,但索引的知识点很多,很多初学者经常会遗漏,这也是我为什么想写这篇知识点总结的原因,既是给读者的分享,也是给自己一次全面的复习,

  • Java Springboot 重要知识点整理汇总

    1.springboot controller 单例 Spring中 controller默认是单例的,因为单例所以不是线程安全的. 所以需要注意下面几点 不要在Controller中定义成员变量,可能会造成数据混乱. 万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例模式. 在Controller中使用ThreadLocal变量解决多线程问题 spring bean作用域: singleton:单例模式,当spring创建appli

  • MySQL去重的方法整理

    MySQL去重的方法整理 [初级]有极少的重复行 使用distinct查出来,然后手动一行一行删除. [中级]按照单个字段的重复去重 例如:对id字段去重 使用方法:获取id的重复字段的值,利用相同id字段所在的行中,比较出数据不同的字段,删除 除了最小(或最大)的字段所在的该行之外的所有重复的行.一般使用主键来比较,因为主键的值一定是唯一值,绝对不相同. id name 1 a 1 b 2 c 2 a 3 c 结果: id name 1 a 2 a 操作: delete from a_tmp

  • Webpack框架核心概念(知识点整理)

    webpack是什么 webpack是一个前端构建的打包工具(并不是什么库或框架), 它能把各种资源,例如JS(含JSX).coffee.css(含less/sass).图片等都作为模块来处理和使用. 1.基础知识点 1.1 webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个

  • Vue面试题及Vue知识点整理

    看面试题,只是为了查漏补缺,看看自己那些方面还不懂.切记不要以为背了面试题,就万事大吉了,最好是理解背后的原理,这样面试的时候才能侃侃而谈.不然,稍微有水平的面试官一看就能看出,是否有真才实学还是刚好背中了这道面试题.(都是一些基础的vue面试题,大神不用浪费时间往下看) 一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数据模型转化成UI 展现出来

  • ES6知识点整理之Proxy的应用实例详解

    本文实例讲述了ES6知识点整理之Proxy的应用.分享给大家供大家参考,具体如下: Proxy 用于修改对象某些操作的默认行为,可以对外界的访问进行过滤和改写,其概念类似于元编程. Proxy 让我们可以对任何对象的绝大部分行为进行监听和干涉,实现更多的自定义程序行为.在目标对象之前架设一层"拦截",外界对该对象的访问,都必须先通过这层拦截. 目前[兼容性]存在一定的问题,目前在chrome和ff浏览器中的非严格模式下可用,一些先进的技术即使在目前不能广泛应用,但随着时间的流逝,都将会

  • vue项目前端知识点整理【收藏】

    微信授权后还能通过浏览器返回键回到授权页 在导航守卫中可以在 next({}) 中设置 replace: true 来重定向到改路由,跟 router.replace() 相同 router.beforeEach((to, from, next) => { if (getToken()) { ... } else { // 储存进来的地址,供授权后跳回 setUrl(to.fullPath) next({ path: '/author', replace: true }) } }) 路由切换时页

随机推荐