原理-->


在数据库层面,复制语句或者行,因为在数据库层面,故只有主服务器生成,并放到二进制日志里面,才能复制给从服务器.

原理-->
mysql的主从复制基于异步,主要有三个进程执行,分别是主mysql上mysqldump进程,从mysqli/o进程和sql进程。
执行过程:主mysql上mysqldump进程接收到从mysql的I/O进程发出的请求后,读取本地binlog,并将数据通过3006端口发送给从mysql,从mysql的I/O进程将数据存放到中继日志中,同时在master-info存入所获取的binlog日志的文件名和位置,便于下次告知主mysql我上次从哪个地方复制的,之后从mysql的sql进程检测到中继日志有内容加入后,在从mysql本地执行新加的语句,并将执行的语句的结果,存入数据库。
目的-->

数据分布,进行读写分离,通过一主多从,实现主负责写,从负责读.

基 本步骤(主从)-->(若主节点已经运行一段时间,则首先要保证从节点内容和主节点一致,参考mysql之备份恢复)


主服务器:
创建具有复制权限的用户帐号-->
mysql>grant replication slave,replication client on *.* to repluser@'172.16.%.%' identified by '123456';
mysql>flush privileges;

设置server-id-->防止循环复制
#vim /etc/my.cnf
server-id=100

启用二进制日志-->修改日志为绝对路径,以及日志格式
vim /etc/my.cnf     
log-bin=/mydata/data/mysql-bin
binlog_format=mixed

全局锁表,防止数据库发生改变
mysql>FLUSH TABLES WITH READ LOCK;

查看主服务器锁表后此时的二进制名和日志位置,假设获取的内容是
mysql>show master status;
MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;

复制所有的数据库数据到从服务器上(保留权限),二进制日志文件可不复制.
解锁
mysql>unlock tables;



从服务器:
启用中继日志-->(可选:关闭二进制日志)
vim /etc/my.cnf
#relay log
relay-log=/mydata/data/relay-bin
#Read only
read-only=1
#禁止从服务器自动启动
skip-slave-start=1

设置server-id-->
#vim /etc/my.cnf
server-id=200

修改数据库权限为mysql.mysql
#chown -R mysql.mysql data_dir

启动复制线程-->设置连接属性,并启动(show slave status\G   查看从节点状态)
mysql>change master to MASTER_HOST='192.168.1.1',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;
mysql>start slave;

主数据库如果重启,则从数据库需要重新定义新的链接属性.
从服务器I/O线程始终是链接状态,而不是YES,最后超时
连接属性设置错误.
半同步模式(降低同步延迟问题)-->半同步模式需要插件支持,默认插件位置在/usr/local/mysql/lib/plugin
 
主服务器 
mysql -uroot
#安装模块
mysql>install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql>set global rpl_semi_sync_master_enabled=1;
#等待从节点响应,若在timeout期间没有响应,则主节点降级为异步
mysql>set global rpl_semi_sync_master_timeout=1000;

同时也可以在配置文件中永久启用:
#vim /etc/my.cnf
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000

从服务器
mysql>install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; 
mysql>set global rpl_semi_sync_slave_enabled=1;
mysql>stop slave;
mysql>start slave;

从服务器半同步模式始终是off
从服务器的半同步模式,只有在salve start状态下,才会启用.
同时也可以在配置文件中永久启用:
#vim /etc/my.cnf
rpl_semi_sync_slave_enabled=1

查看模块:mysql>show global status like '%semi%';

mysql之主从复制的更多相关文章

  1. mysql的主从复制是如何实现的

    前言 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为 ...

  2. mysql数据库主从复制部署笔记

    主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...

  3. Mysql中主从复制的原理、配置过程以及实际案例

    Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6 ...

  4. mysql简单主从复制(一)

    MYSQL简单主从复制 master:172.25.44.1 slave:172.25.44.2 mysql5.7安装 master和slave均操作 准备rpm包:mysql-5.7.17-1.el ...

  5. Mysql数据库主从复制搭建

    Mysql数据库主从复制原理: 主库开启bin-log日志,同时生成IO线程.IO线程负责将用户写入数据库的sql语句记录在二进制日志bin-log,该记录过程可并发进行:生成标识号 server i ...

  6. liinux安装 mysql 及主从复制

    mariadb其实就是mysqlmysql已经被oracle收购,它即将闭源,马上要开始收费了因此还想免费试用开源的数据库mysql,就在centos7上,将mysql分支为mariadb 安装mar ...

  7. mysql (主从复制)(proxy , Amoeba)

    原址如下: http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中 ...

  8. MySQL的主从复制+双主模式

    MySQL的主从复制 部署环境: MySQL master 192.168.40.21 MySQL slave  192.168.40.22 思路: 当主MySQL上进行数据上的操作或者变化时,主My ...

  9. 使用 Xtrabackup 在线对MySQL做主从复制【转】

    1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldu ...

随机推荐

  1. python文件_目录

    #! /usr/bin/env python #coding=gbk import os import time #设置文件的默认路径,当指定的目录不存在时,引发异常:WindowsError:[er ...

  2. CRC校验源码分析

    这两天做项目,需要用到 CRC 校验.以前没搞过这东东,以为挺简单的.结果看看别人提供的汇编源程序,居然看不懂.花了两天时间研究了一下 CRC 校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省 ...

  3. 《Programming WPF》翻译 第9章 2.选择一个基类

    原文:<Programming WPF>翻译 第9章 2.选择一个基类 WPF提供了很多类,当创建一个自定义元素时,你可以从这些类中派生.图9-1显示了一组可能作为类--可能是合适的基类, ...

  4. 微信授权登陆接入第三方App(步骤总结)Android

    微信授权登陆接入第三方App(步骤总结)Android Android App实现第三方微信登录

  5. jQuery ajax - getScript() 方法和getJSON方法

    实例 使用 AJAX 请求来获得 JSON 数据,并输出结果: $("button").click(function(){ $.getJSON("demo_ajax_js ...

  6. nginx 采用https 协议通信配置

    在网络通信中,使用抓包软件可以对网络请求进行分析,并进行重放攻击,重放攻击的解决方案一般是使用一个变化的参数,例如RSA加密的时间戳,但考虑到网络传输时延,时间戳需要有一定的误差容限,这样仍然不能从根 ...

  7. Top 15 Tools To Make Animated GIFs From Images & Video

    Creating an animated GIF picture from photos or video with Adobe Photoshop is easy, but not everyone ...

  8. 《TCP/IP具体解释卷2:实现》笔记--4种不同类型的mbuf

    mbuf的主要用途是保存子进程和网络接口间互相传递的用户数据.但mbuf也用于保存其它各种数据:源于目的地址.插口 选项等等. 以下介绍我们要遇到的四种类型的mbuf,它们根据在成员m_flag中填写 ...

  9. Myeclipse安装破解

  10. IOS 怎么修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色

    self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; self.navigationControll ...