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 ...
随机推荐
- 为什么学习Lua
目前公认的最快的脚本语言 可以编译调试 与C/C++结合容易 Lua是对性能有要求的必备脚本 C++的缺点: 编译慢,调试难 学习难度大
- Centos6.8配置HTTPS
HTTPS服务http+openssl 环境要求:CA证书: 192.168.1.103网站服务器: 192.168.1.104客户端: 192.168.1.107 (linux图形化界面) 内核:( ...
- C# 语法一 构造函数
1.构造函数的执行顺序 2.静态变量和成员变量的区别 代码示例: using System; using System.Collections.Generic; using System.Linq; ...
- python之字符串、列表和元组
先简单的了解一下两个相关概念 模块 python中的模块需要使用特殊的命令import来导入.格式:模块.函数.如下: 在确定自己不会导入多个同名函数的情况下,可以使用import命令的另外一种形式: ...
- Python、Lua和Ruby三大语言脚本哪家强?
这三种语言中的哪一种更合适你的项目?很大程度取决于你想达到什么样的目标.作为一书的结尾,在这一节里,我会描述一下它们各自的优点和不足. Python的优点和不足 Python的优点如下: 1. P ...
- Luogu3702 SDOI2017 序列计数 矩阵DP
传送门 不考虑质数的条件,可以考虑到一个很明显的$DP:$设$f_{i,j}$表示选$i$个数,和$mod\ p=j$的方案数,显然是可以矩阵优化$DP$的. 而且转移矩阵是循环矩阵,所以可以只用第一 ...
- React-使用react-redux
react-redux可以方便在react中使用redux,我们就可以忘记subscribe,只需要记住reducer,action和dispatch就可以了.react-redux提供Provide ...
- 【php增删改查实例】第十四节 - 用户管理模块(起步)
从这一节开始,开始着手开发部门管理模块. 之后的内容就在此基础上进行增加. 1.用户查询 在目录中建立一个user文件夹,作为我们用户管理的模块. 打开这个文件,新建一个userManage.html ...
- 给 MSYS2 添加中科大的源
最近一段时间不知怎么的,使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢.所以就翻了翻国内的几个开源软件的镜像库,发现中科大的库里就有 MSYS2.所以就研究了一下,给 MSYS2 添加了中 ...
- loj6062 pair
直接套用霍尔定理. 由于A有多个选择,考虑维护B是否合法. 首先B数组的顺序显然是没有用的,可以直接排序. 然后每个A就都变成了向一个后缀连边. 对于B,原本需要check每一个集合是否满足|u|&l ...