mysql学习笔记四 —— AB复制
要点:
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复制的更多相关文章
- MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
- MySQL学习笔记十七:复制特性
一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...
- MySQL学习笔记四:字符集
1.字符集就是字符和其编码的集合,查看数据库支持的字符集 show character set 2.查看服务端启动时默认的字符集 mysql> show variables like 'char ...
- MySQL学习笔记(四)—存储过程
一.概述 存储过程是数据库定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程可以避免开发人员重复的编写相同的SQL语句,而且存储过程是在MySq ...
- MySQL学习笔记(四):存储引擎的选择
一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...
- MySql学习笔记(四) —— 数据的分组
前面介绍的聚集函数只是用来计算行数,平均数,最大值,最小值而不用检索所有数据.通过count()函数,我们可以计算生产商1003提供的产品数目,但如果我要查询所有生产商提供的商品数,这就需要进行分组查 ...
- openresty 学习笔记四:连接mysql和进行相关操作
openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
随机推荐
- Sysbench-OLTP数据库测试
使用sysbench进行oltp测试之前,需要核对一下sysbench的版本,因为不同版本在使用的参数时,会有一定的差异. mysql dba这本书中的sysbench使用的是0.5的版本,ubunt ...
- PAT A1104 Sum of Number Segments (20 分)——数学规律,long long
Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For exam ...
- pacman详解及常见问题
安装软件包:软件包有很多可选依赖,是为软件提供额外功能, 安装软件时pacman 会输出可选依赖, 但不会在 pacman.log中,浏览安装软件的可选以来可用pacman -Si得到可选依赖的简短描 ...
- 工具 使用Fiddler进行手机抓包
Fiddler 手机抓包 Web代理服务器 可以抓https包 手机和电脑处于同一网络 Tools -> Options... -> Connections Allow remote co ...
- QT QLabelde 使用技巧总结
QLabel提供了一个文本或图像的显示,没有提供用户交互功能. 一个QLabel可以包含以下任意内容类型: 内容 设置 纯文本 使用setText()设置一个QString 富文本 使用setText ...
- ubuntu14.04下播放器SMplayer的安装
1. Mplayer 与 SMplayer的区别 虽然MPlayer播放器是人类史上最强大的播放器(参数超过千个),但是其默认编译没有界面,所以写参数时间甚至比看片时间还长.虽然编译时候可以选择--e ...
- Linux系列教程(六)——Linux常用命令之文件搜索命令
前一篇博客我们讲解了Linux链接命令和权限管理命令, 通过 ln -s 链接名 表示创建软链接,不加-s表示创建硬链接:还有三个更改权限的命令,chmod命令可以更改文件或目录权限,chown命令 ...
- Vue-Vue列表渲染v-for
v-for 指令需要以 site in sites 形式的特殊语法 一.v-for 循环数组 HTML代码 <div id="app"> <ul> < ...
- BootStrap学习(1)
一.Bootstrap简介 BootStrap是由Twitter推出的前端框架,2011 年八月在 GitHub 上发布,BootStrap是基于Html,Css,Javascript的,可用于快速开 ...
- dotnetcore/CAP
CAP带你轻松玩转Asp.Net Core消息队列 CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前 ...