1、主从复制原理

(1) 当master 服务器上的数据发生改变时,则将其改变写入二进制日志文件中;

(2) slave服务器会在一定时间间隔内对 master 服务器上的二进制日志进行探测,探测其是否发生过改变;

(3) 如果探测到 master 服务器的二进制日志发生了改变,则开始一个I/O Thread请求master二进制事件;

(4) 同时master 服务器为每个slave的 I/O Thread 启动dump Thread,用于向其发送二进制事件;

(5) slave 服务器将接收到的二进制事件保存至自己本地的中继日志文件中;

(6) slave 服务器 启动SQL Thread 从中继日志中读取二进制日志,在本地重放,使得其数据与master 服务器保持一致;

(7) 最后I/O Thread 与 SQL Thread 将进入睡眠状态,等待下一次被唤醒;

2、操作步骤

(1)  修改master 服务器上mysql的配置文件,使其支持二进制日志功能。

打开编辑:vim /etc/my.cnf

添加如下三行代码:

log-bin=mysql-bin
binlog_format=mixed
server-id=128

参数解释:

//将mysql二进制日志取名为mysql-bin

log-bin=mysql-bin

//二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed

binlog_format=mixed

//为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id

server-id=128

重启mysql

systemctl restart mysqld.service

(2) slave 从服务器也作步骤1的操作,对mysql进行配置,唯一不同的是server-id使用从服务器的ip尾数

 server-id=129

(3) master服务器为slave服务器分配一个账号,从服务器使用该账号才能到主服务器上来共享主服务器的日志文件。

登录mysql 命令行:mysql -uroot -p,输入密码登录至命令行;

在命令行下输入一下命令:

grant replication slave on *.* to 'latiny'@'192.168.116.129' identified by '123456'; 

replication slave: 表示复制二进制日志权限;

 *.*:可以操作的数据库;

查看master服务器bin 日志信息:show master status;

正常情况下:

File:mysql-bin.000001

Position:154

如果不是这两个值,则需要重置master,输入:reset master。

(4) 设置slave 服务器

登录到数据库命令行:mysql -uroot -p

关闭slave:stop slave;

配置对master服务器的访问信息:

change master to master_host='192.168.116.128', master_user='latiny',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;

master_host:设置要连接的主服务器的ip地址;

master_user:设置要连接的主服务器的用户名;

master_password:设置要连接的主服务器的密码;

master_log_file:设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息;

master_log_pos:设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息;

启动slave:start slave;

查看配置信息:show slave status;

主要看Slave_IO_Running 与 Slave_SQL_Running,都为Yes说明配置成功,否则需要重新配置。

到此处,MySQL主从复制配置的基本步骤完成,经测试在master服务器上对数据库进行任何操作都会同步到slave上;这其中也遇到一些坑。

配置时需要注意以下事项:

1、master与slave的ip互相要通,且MySQL对应的端口也要通;

2、master与slave两个库要有唯一的server-id,不能重复;

3、如果MySQL的启动配置文件配置了server-uuid,则maste与slave的server-uuid也不能重复;

4、slave使用的master_log_file与master_log_pos,与master的必须一致;

同步过程中注意的事项:

slave服务器数据发生改变,由于网络原因slave未能拿到二进制日志等都会引起同步失败,有很多原因都会导致同步失败,这个单独再研究各种情况下的解决方案。

MySQL 主从复制 (CentOS 7)的更多相关文章

  1. centos 配置mysql主从复制

    mysql+centos7+主从复制   MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公 ...

  2. CentOS下MySQL主从复制,读写分离

    1.环境:所有系统都是CentOS5.5 mysql-5.6.31-2.el5,MySQL中都没有数据 主服务器IP为192.168.128.230 从服务器IP为192.168.128.235 代理 ...

  3. MySQL主从复制(Master-Slave)实践

    MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...

  4. mysql主从复制实现数据库同步

    mysql主从复制相信已经用得很多了,但是由于工作原因一直没怎么用过.趁着这段时间相对空闲,也就自己实现一遍.尽管互联网上已有大把类似的文章,但是自身实现的仍然值得记录. 环境: 主服务器:cento ...

  5. centos5.4下mysql主从复制

    centos5.4下mysql主从复制配置分享. 本文转自:http://www.jbxue.com/article/771.html 安装环境:centos 5.4 mysql版本:mysql 5. ...

  6. Mysql主从复制的实现

    MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一 ...

  7. Mysql主从复制原理及配置

    Mysql主从复制原理及配置 1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其 ...

  8. Mysql主从复制读写分离

    一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来 ...

  9. Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建

    一.Centos6下安装Mysql 检测下系统有没有自带的mysql:yum list installed | grep mysql, 如果已经有的话执行命令yum -y remove mysql-l ...

随机推荐

  1. 初识JavaScript对象

    JavaScript对象语法.类型.属性 属性描述符(getOwnPropertyDescriptor().defineProperty()) [[Get]].[[Put]].Getter.Sette ...

  2. task service的ftp和s3同步文件后续优化方案

    1,开启多个task service服务,比如153,154,162各开启一个服务,去ftp和s3读取文件的第一步首先改文件名,比如xxxxxx_153,然后其他154和162不去处理这个文件,xxx ...

  3. maven入门-- part4 坐标和依赖

    Maven的坐标为各种构件引入了秩序,任何一个构件都必须明确的定义自己的坐标,maven的坐标包括如下的元素: groupId: 定义当前Maven项目隶属的实际项目 artifactId: 该元素定 ...

  4. docker容器里面安装php的redis扩展

      docker exec -i -t php /bin/bash 进入php容器内执行:pecl install -o -f redis  修改php.ini,添加:extension=redis. ...

  5. 正确理解这四个重要且容易混乱的知识点:异步,同步,阻塞,非阻塞,5种IO模型

    本文讨论的背景是Linux环境下的network IO,同步IO和异步IO,阻塞IO和非阻塞IO分别是什么 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进 ...

  6. windows控制台,cmd,命令提示符下的基础操作

    打开dos命令窗口1.win+r-->运行-->cmd 2.摁住shift+鼠标右击 选择 在此处打开命令窗口3.在磁盘某文件夹下,选择标题栏中输入框,输入cmd 回车 windows下常 ...

  7. python自动生成excel(xlwt库)

    下面代码使用web.py框架,其他框架都大同小异. # coding: utf- import web import json import datetime import xlwt import S ...

  8. 对路径“xxxxx”的访问被拒绝。

    对路径“D:\\Weixin\\WechatWeb\\wapMxApi\\JsonFile\\WaterPrice.json”的访问被拒绝. 本地vs2013编译调试是没有问题的但是发布后就不能倍访问 ...

  9. index首页加载数据库数据方法

    https://blog.csdn.net/qq_33198758/article/details/82987805 在做网站的时候,会遇到需要首页加载数据库数据的情况.而web.xml配置的首页: ...

  10. 阅读之web应用安全

    一.三种坏人与servlet安全 认证可以防止“假冒者”攻击,授权可以防止“非法升级者”攻击,机密性和数据完整性可以防止“窃听者”攻击. 二.认证与授权 Web容器进行认证与授权的过程: 客户端:浏览 ...