原理:

1master开启bin-log功能,日志文件用于记录数据库的读写增删
2需要开启3个线程,master IO线程,slave开启 IO线程 SQL线程,
3Slave 通过IO线程连接master,并且请求某个bin-log,position之后的内容。
4MASTER服务器收到slave IO线程发来的日志请求信息,io线程去将bin-log内容,position返回给slave IO线程。
5slave服务器收到bin-log日志内容,将bin-log日志内容写入relay-log中继日志,创建一个master.info的文件,该文件记录了master ip 用户名 密码 master bin-log名称,bin-log position。
6slave端开启SQL线程,实时监控relay-log日志内容是否有更新,解析文件中的SQL语句,在slave数据库中去执行。

步骤一:

准备两个mysql,一个做主,一个做从。防火墙,selinux都要关闭,保证可以ping通对方

主服务器配置:
vi/etc/ntp.conf

添加:

server 127.127.1.0

fudge 127.127.1.0 stratum 8

service ntpd start    #因为同步数据 两个服务器的时间也要同步。

稍后要在从服务器执行来同步时间

vi/etc/my.cnf

在配置文件49行

其他内容都可以保持默认。

步骤二:在主服务器登录mysql 给从服务器授权。

mysql> grant replication slave on *.* to zs@'192.168.43.%' identified by '123456';

授权用户zs 密码为123456 允许192.168.43.0的网络连接 一会儿要在slave上使用这个账号

show master status;    #此命令查看主服务器的bin-log日志文件名称和position点

从服务器就是要指定这个文件maste-bin.000001 (随着mysql增删修改日志文件名字也有可能改变)  和 107 (position点 主服务器增删修改都会改变)所以现在开始就不要再在主服务器创表干啥的了,

mysqldump -uroot -p --opt --all-databases >/all_databases.sql  #导出主数据库的数据

scp -r /all_databases.sql root@192.168.43.2:/   #用scp把数据复制到从服务器。

因为主从复制是从主从关系建立完毕开始同步的。也就是现在 position 107之前的内容复制不了所以要手动复制主之前的数据导入从数据库。

步骤三:从服务器配置

/usr/sbin/ntpdate 192.168.43.22  #和主服务器同步时间。192.168.43.22为主服务器ip

mysql -u root -p  </all_databases.sql   #导入数据

vi /etc/my.cnf

步骤四:修改后重启mysql服务

进入从服务器的mysql

change master to master_host='192.168.43.22',master_user='zs',master_password='123456',master_log_file='maste-bin.000001',master_log_pos=107;

start slave;  #开启SQL线程

show slave status\G;    查看从服务器状态

注意两个都要是yes才是正常。

步骤五:查看效果

在主服务器上创建个库看看。

从数据库也会有

同样删掉数据库从数据库也会复制。

主库上删除一个数据库。

从库上也没了。

mysql主从复制原理及步骤的更多相关文章

  1. [转]MySQL主从复制原理介绍

    MySQL主从复制原理介绍 一.复制的原理 MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以 ...

  2. Mysql主从复制原理及搭建

    ## Mysql主从复制原理 主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中.对于多级复制,数据库服务器即可充当主机,也可充当从 ...

  3. mysql主从复制原理及实践

    Mysql主从复制原理及实践 mysql主从框架       MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从.可以防止单一主机的 ...

  4. mysql 主从复制原理

    主从形式   mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制---     用途及条件   mysql主 ...

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

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

  6. MySQL主从复制--原理

    简介 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一 ...

  7. mysql 主从复制原理(转)

    本文转自https://blog.csdn.net/php_younger/article/details/59673879 mysql 主从复制原理 主从形式   mysql主从复制 灵活 一主一从 ...

  8. 如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

    如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...

  9. 深度探索MySQL主从复制原理

    深度探索MySQL主从复制原理 一 .概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什么? 1.1 MySQL 主从复制概念 MySQ ...

随机推荐

  1. sip呼叫里SDP的一些字段的含义

    v=0 o=- 1 0 IN IP4 164.135.25.51 #local ip ,即本机SIP信令交互地址 s=SNS call #用于传递会话主题 c=IN IP4 164.135.25.51 ...

  2. vue学习(10)-vue-resource

    下载:cnpm i vue-resource --save 在main.js导入包:import VueResource from 'vue-resource' 安装:Vue.use(VueResou ...

  3. 给datagrid一列中的数据加上单位

    { field:'computeRate', title:'完成百分比', width:100, align:'center', halign:'center', sortable:true, for ...

  4. C++ STL 之 vector

    #include <iostream> #include <vector> using namespace std; void printVector(vector<in ...

  5. python生成式:列表、字典、集合

    python的3类生成式: 列表生成式 字典生成式 集合生成式 1.python列表生成式 my_data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(&quo ...

  6. dao层取值用List<map<String,Object>>接收有序map

    发现一个好玩的Map, 当需要Map有序时用java.util.LinkedHashMap接收,是有序map resultType="java.util.LinkedHashMap" ...

  7. Python 列出 windows 安装的软件

    Python 列出 windows 安装的软件 参考链接:https://stackoverflow.com/questions/802499/how-can-i-enumerate-list-all ...

  8. switch结构

    switch结构介绍 switch也属于条件判断的语句 支持多种写法,和if .. else if ...else 结构的功能类似,但是里面的细节需要注意的地方更多 switch基本语法 switch ...

  9. ak-1

    最近研究ak,网上也有很多这方面的资料,就不重复叙述了,本次记录就是自己在做适应时的一些记录. 本次环境 中标麒麟  金蝶apusic 人大金仓 先说说东西从哪下载怎么来的 基本都是通过官网打电话申请 ...

  10. ubuntu 完全干净的卸载docker

    1. 删除某软件,及其安装时自动安装的所有包 sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd r ...