1.mysql主从复制介绍

mysql支持单向、双向、链式级联、实时、异步复制,在复制过程中,一台服务器充当主服务器(Master),而一个或多个其它服务器充当从服务器(Slave)。

复制:单向同步复制

复制:单向,一主多从复制

复制:双向,主主复制

复制:环向复制

此外,还有级联模式,就是主==>主==>从模式。

2. mysql主从复制应用场景

在当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步。mysql主从复制有利于数据库架构的健壮性、提升访问速度和易于维护管理。

2.1  主从互为备份,主库有问题,可以切换到从库上继续提供服务

   mysql 主从同步做不到一条数据不丢,要做到主从切换一条数据不丢,有多种方案,这里主要说明4种:

  1)mysql自身有一个插件,讲主从同步从异步变成半同步,即实时同步。往主库写数据,当从库也写完毕,才是主从同步成功,否则两个都不成功。

  2)切换到从库时,讲主库的bin_log日志在从库中执行一遍

  3)从程序上下功夫,讲主库实时一分钟的数据写到程序上,同步到从库上

  4)双写功能,既写主库又写从库

 

2.2 读写分离,主写,读从

中小公司:通过程序

门户网站:分布式dbproxy(读写分离、hash负载均衡,健康检查)

2.3 根据服务器拆分业务独立并分担压力

许多公司都是一主多从,主库写,从库不同服务器兼顾不同业务,如果主挂了,可以迅速手工或者自动切换。从库间可以实现集群,可以不同人员访问不同机器等。

3.mysql主从同步的基本结构

可以看到:

 1 ) 从库生成两个线程,一个I/O线程,一个SQL线程;
 2 ) I/O线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
 3 ) 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
 4 ) SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;通过mysqlbinlog 进行查看
 5 ) 在从库的I/O线程还会生成一个类似记录文件master.info,用来记录每次从主I/O获取的位置和时间还有下次应该从哪个位置进行取日志和位置。
 
4.主从复制
4.1.环境准备
     1)具备单机单数据库多实例的环境
     2)两台服务器每个机器一个数据库的环境
4.2.数据库读法的约定
    主库:master     从库:slave
4.3.设置server-id值并开启binlog参数(log-bin = /data/3306/my.cnf)
            【mysqld】
             server-id=1
             log-bin = /data/3306/mysql-bin
查看是否生效:
  1)  查看/data/3306下是否有日志
 
 2)   查看参数:mysql -uroot -poldboy124 -S   /data/3306/mysql.sock -e "show variables like 'log_bin';"     

4.4.建立用于同步的账户rep

   登陆主库建立用于从库复制的账号rep:
    grant replication  slave  on *.* to 'rep'@'192.168.0.104' identified  by 'oldboy124'
    flush privileges;
  4.5.主数据库备份
          1) flush  table  with  read lock  ---添加锁
          2) show master status;  ---查看master-data的位置,在从库master.info会记录当前同步的位置,为下次同步提供起始位置
          

3)  show master log; --现有的master-data

         4)备份:mysqldump -uroot -poldboy124 -S /data/3306/mysql.sock -A -B --events|gzip  /dangjingwei/rep.sql.gz  --压缩本地磁盘备份
         5)备份: mysqldump -uroot -poldboy124 -S /data/3306/mysql.sock -A -B --events --master-data=2 >/dangjingwei/rep.sq l--master-data 标识添加注释
         6) unlock tables; --解锁
         7)可以直接锁定进行备份:mysqldump -uroot -poldboy124 -S /data/3306/mysql.sock -A -B -S --events --master-data=2     >/dangjingwei/rep.sql  
         8)将备份文件导入到从库中: mysql -uroot -poldboy124 -S /data/3307/mysql.sock </dangjingwei/rep.sql 将备份文件添加到从库中
         9)添加master.info ,使从库可以连接主库        
CHANGE MASTER TO
MASTER_HOST='192.168.0.104',---主库地址
MASTER_PORT=3306,--主库端口
MASTER_USER='rep',--主库用户
MASTER_PASSWORD='oldboy124', --主库密码
MASTER_LOG_FILE='mysql-bin.000003', --下次同步的起始页面 ,如果备份参数是--master-data=1,可以去掉
MASTER_LOG_POS=343;  --下次同步的起始位置 ,如果备份参数是--master-data=1,可以去掉
    检查:从库的实例数据存放的位置下面可以看到
  /data/3307/data/master.info--如果主库不断更新,则bin_log不断更新,从库会不断更新这个内容的起始位置
   19)打开从库同步: start  slave
    检查:查看状态;
       show slave status\G;
   从库的sql线程会读取relay log文件中的日志,此文件从库的位置是从库的实例线程下面
   

 至此,当主库发生增删改的时候,从库相应的进行同步!!!

八、linux-mysql的mysql主从复制原理和实战的更多相关文章

  1. MySQL(4):主从复制原理

    1.主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础.它通过将一台主机的数据复制到其他一台或多台主机上,并重新应用relay log中的SQL语句来实现 ...

  2. 彻底搞懂Redis主从复制原理及实战

    欢迎关注公众号:「码农富哥」,致力于分享后端技术 (高并发架构,分布式集群系统,消息队列中间件,网络,微服务,Linux, TCP/IP, HTTP, MySQL, Redis), Python 等 ...

  3. Apache Flink 进阶(八):详解 Metrics 原理与实战

    本文由 Apache Flink Contributor 刘彪分享,本文对两大问题进行了详细的介绍,即什么是 Metrics.如何使用 Metrics,并对 Metrics 监控实战进行解释说明. 什 ...

  4. MySQL主从复制原理及配置过程

    一.Mysql数据库的主从复制原理过程: (多实例的安装请参考我的另一篇文章:https://www.cnblogs.com/Template/p/9258500.html) Mysql的主从复制是一 ...

  5. 深入解析Mysql 主从同步延迟原理及解决方案

    MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以 ...

  6. MySql主从复制原理和环境配置搭建

    主从复制原理 实质就是通过二进制的sql文件实现主从复制 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlo ...

  7. Linux下配置MySQL主从复制

    一.环境准备 本次准备两台Linux主机,操作系统都为CentOS6.8, 都安装了相同版本的MySQL.(MySQL5.7). 主从服务器的防火墙都开启了3306端口. 相关信息如下: [主服务器] ...

  8. Linux - centos7 下 MySQL(mariadb) 和 主从复制

    目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...

  9. 【MySQL主从复制原理及搭建全过程】

    目录 准备工作 主从复制原理 开始搭建主从复制 本文将使用mariaDB数据库实现主从复制,其步骤与MySQL数据库无差异. MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护, ...

随机推荐

  1. numpy ndarray 打印格式化

    1.ndarray打印省略问题 np.set_printoptions(threshold=np.inf) 2.ndarray打印换行限制 加上下面这句代码,输出时打印不换行 np.set_print ...

  2. BMP位图图像格式简介

    1. 文件结构 位图文件可看成由4个部分组成:位图文件头(bitmap-fileheader).位图信息头(bitmap-informationheader).彩色表(colortable)和定义位图 ...

  3. Go get unrecognized import path "gopkg.in/yaml.v2"

    安装gin: go get -u github.com/gin-gonic/gin 出现错误: package gopkg.in/yaml.v2: unrecognized import path & ...

  4. 文献阅读报告 - Situation-Aware Pedestrian Trajectory Prediction with Spatio-Temporal Attention Model

    目录 概览 描述:模型基于LSTM神经网络提出新型的Spatio-Temporal Graph(时空图),旨在实现在拥挤的环境下,通过将行人-行人,行人-静态物品两类交互纳入考虑,对行人的轨迹做出预测 ...

  5. JOIN US | 京东云诚聘技术精英

    清新的办公区域感受自然的气息,温馨的团队为你我放飞青春的理想 上有天文下有地理的阅读区域 各类图书提供借阅 绿植环绕生机勃勃的会客区域洋溢青春 [高级Java工程师] 职位描述: 参与云计算相关平台/ ...

  6. hdu2457(最少替换多少个字符使主串不包含模式串)ac自动机+dp

    题:http://acm.hdu.edu.cn/showproblem.php?pid=2457 题意:给定n个模式串,给定一个主串,问最替换掉多少个字符使主串不包含模式串或输出“-1”表示没有可行的 ...

  7. 神经网络 参数计算--直接解析CKPT文件读取

    1.tensorflow的模型文件ckpt参数获取 import tensoflow as tf from tensorflow.python import pywrap_tensorflow mod ...

  8. Django2.0——模板渲染(一)

    在前面的介绍中我们都是用简单的 django.http.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容,即调用精美的HTML页面.模板的创建既可以在项目下创建 ...

  9. Springboot JpaRepository findOne() 方法报错

    用的是springboot2.0,然后XXXRepository.findOne各种报错,各种不行,上网搜都说改回springboot1.5就好了. 这哪行,直接用XXXRepository.find ...

  10. 系统学习python第四天学习笔记

    1.解释 / 编译补充 编译型:代码写完后,编译器将其变成成另外一个文件,然后交给计算机执行. 解释型:写完代码交给解释器,解释器会从上到下一行行代码执行:边解释边执行. [实时翻译] 2.字符串功能 ...