要点:
ab复制

mysql集群架构流程:

ABB(主从复制)-->MHA(实现mysql高可用、读写分离、脚本控制vip飘逸)-->haproxy(对slave集群实现分发,负载均衡)-->keepalive(预防一台haproxy单点故障,对两台及以上的haproxy实现高可用)

1、MySQL复制特性 --MySQL AB复制,即主从复制 master slave
备份(容灾)
减轻master压力 AB 读写分离
拓展: AA master-master 主主复制
ABBB 一主多从

1.1 AB复制过程(原理)
是一种异步复制,5.5版本之后可以实现半同步复制。
master将所有的增删改(DML)的操作写入到binlog中;
slave上的IO线程登陆到master上拉取binlog并写入到relay log(中继日志)中;
slave上的SQL线程读取中继日志并将SQL语句在本地执行,这样数据同步。

slave上的两个线程:
io线程:读取master上的binglog日志,并写入到本机上的relay log中
SQL线程:读取relay log,并将其(SQL语句)应用到本地

1.2 搭建AB复制
1.2.1 分析都需要做什么
a.master和slave确定身份(server_id:越小越优先)
b.master开启binglog日志
c.master设置复制账户和赋权
d.slave确定从binglog的什么位置开始应用sql语句

ip规划:
251 master
241 slave

1.2.2 步骤
master:
1) 开启binglog
vim /etc/my.cnf
server-id=1 //确定身份,id小的优先作为master
log-bin=binlog
log-bin_index=binlog.index

2) 创建专用复制用户,允许从slave上连过来的复制用户
grant replication slave on *.* to 'repl'@'192.168.19.241' identified by '123';
flush privileges;
show grants for jeck@13.1.1.2;

3)查看master当前的binglog日志及位置信息
show master status\G
mysql> show master status\G
*************************** 1. row ***************************
File: binlog.000003
Position: 258

slave:
1)确定身份,可选的设置中继日志名和中继日志索引
server-id=3
relay-log=/var/lib/mysql/relay_log    #也可以不写,mysql默认开启中继日志
relay-log_index=/var/lib/mysql/relay_log.index

2)设置slave找谁拉取binglog,从哪个位置开始拉...(在拉之前需要关闭slave,拉完之后再开启)
change master to...
mysql> change master to master_host='192.168.19.251', master_port=3306, master_user='repl', master_password='123', master_log_file='binlog.000003', master_log_pos=4;

3) 开启slave
start slave;

4)查看slave状态
show slave status\G
Slave_IO_State: Waiting for master to send event binlog event :二进制事件,即master上产生的增删改的操作
Master_Host: 192.168.19.251
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000003 //master上的当前的binglog日志
Read_Master_Log_Pos: 518 //读取到的binglog的位置
Relay_Log_File: relay_log.000002 //本地中继日志文件
Relay_Log_Pos: 508 //本地中级日志位置
Relay_Master_Log_File: binlog.000003*** //当前中继日志中记录的是master上的哪一个binlog日志文件
Slave_IO_Running: Yes //IO 线程状态
Slave_SQL_Running: Yes //SQL线程状态
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 518*** //执行到的binglog的位置,去对比show master status\G 看到的位置,可以得出有没有延迟

5) 测试
在master上创建库和表并插入数据,然后到slave上看下有没有同步过来

问题:
A已经运行了一段时间,才想着搭建AB复制:
1、A上全库备份,并恢复到B上
2、B再去 change master to

实验过程:
在master上
a.全库备份
mysqldump --all-databases -x > /opt/all.sql
b.编辑配置文件与之前相同

c.设置复制专用用户及权限

同上...

看一下master状态:
同上...

在slave上
先获得master上的全库备份,并恢复在本地
mysql < /opt/all.sql

后面就一样的

mysql学习笔记四 —— AB复制的更多相关文章

  1. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  2. MySQL学习笔记十七:复制特性

    一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...

  3. MySQL学习笔记四:字符集

    1.字符集就是字符和其编码的集合,查看数据库支持的字符集 show character set 2.查看服务端启动时默认的字符集 mysql> show variables like 'char ...

  4. MySQL学习笔记(四)—存储过程

    一.概述      存储过程是数据库定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程可以避免开发人员重复的编写相同的SQL语句,而且存储过程是在MySq ...

  5. MySQL学习笔记(四):存储引擎的选择

    一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...

  6. MySql学习笔记(四) —— 数据的分组

    前面介绍的聚集函数只是用来计算行数,平均数,最大值,最小值而不用检索所有数据.通过count()函数,我们可以计算生产商1003提供的产品数目,但如果我要查询所有生产商提供的商品数,这就需要进行分组查 ...

  7. openresty 学习笔记四:连接mysql和进行相关操作

    openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...

  8. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  9. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

随机推荐

  1. mysql 日期操作 增减天数、时间转换、时间戳(转)

    转自http://www.cnblogs.com/wenzichiqingwa/archive/2013/03/05/2944485.html http://hi.baidu.com/juntao_l ...

  2. mybatis基础系列(四)——关联查询、延迟加载、一级缓存与二级缓存

    关本文是Mybatis基础系列的第四篇文章,点击下面链接可以查看前面的文章: mybatis基础系列(三)——动态sql mybatis基础系列(二)——基础语法.别名.输入映射.输出映射 mybat ...

  3. zabbix4.0安装和配置

    以下为master端安装,开始 内核$ cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) $ uname -r 3.10.0-6 ...

  4. ASP 基础一 网站开发 初步认识

    一 .ASP 与 ASP.NET的区别 i.ASP是解释型的动态语言,asp文件包含了前端和动态语言VBScript,来实现对服务器的交互,运行在IIS.PWS等WEB服务器上 II.ASP.NET是 ...

  5. Android开发之加载GIF图片

    一.加载GIF图片我用的是GitHub上的开源库:android-gif-drawable,项目地址:https://github.com/koral--/android-gif-drawable 二 ...

  6. Luogu4131 WC2005 友好的生物 状压DP

    传送门 首先$C_i$是没有意义的,因为可以直接让$d_i \times= C_i$,答案也是一样的 所以我们现在考虑求$(\sum_{i=1}^{K-1} |d_{p,i}-d_{q,i}|) - ...

  7. Luogu4423 BJWC2011 最小三角形 平面最近点对

    传送门 题意:给出$N$个点,求其中周长最小的三角形(共线的也计算在内).$N \leq 2 \times 10^5$ 这道题唤起了我对平面最近点对的依稀记忆 考虑平面最近点对的分治,将分界线两边的求 ...

  8. npm install xxx --save-dev 与npm install xxx --save 的区别

    正常情况下: 当你为你的模块安装一个依赖模块时 1.你得先安装他们(在模块根目录下npm install module-name) 2.连同版本号手动将他们添加到模块配置文件package.json中 ...

  9. 让IIS7和IIS6识别PUT和DELETE请求

    项目组最近需要开展自动化测试,针对老的Aspx页面,这个做自动化测试的成本太高,于是我们想从老代码中封装一些ashx的Restful服务出来,Restful我们使用HTTP的GET.POST.PUT. ...

  10. jdk8+Mybatis3.5.0+Mysql读取LongBlob失败

    问题:在mysql中存储base64,因为太长,基本就是几百K,所以用longBlob 描述:在mysql中,LongBlob.blob算是二进制流文件了,所以用普通的数据格式是不行的,这里用Type ...