MySQL主从复制之异步模式
MySQL主从复制有异步模式、半同步模式、GTID模式以及多源复制模式,MySQL默认模式是异步模式。所谓异步模式,只MySQL 主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不会考虑二进制日志是否完整传输到从服务器以及是否完整存放到从服务器上的relay日志中,这种模式一旦主服务(器)宕机,数据就会发生丢失。
基于偏移量的主从复制
主库开启binlog功能并授权从库连接主库,从库通过change master得到主库的相关同步信息然后连接主库进行验证,主库IO线程根据从库slave线程的请求,从master.info开始记录的位置点向下开始取信息,同时把取到的位置点和最新的位置与binlog信息一同发给从库IO线程,从库将相关的sql语句存放在relay-log里面,最终从库的sql线程将relay-log里的sql语句应用到从库上,至此整个同步过程完成,之后将是无限重复上述过程
1.设置MySQL主从同步 (1)主数据库实例设置server-id和开启bin-log; (2)主数据库实例创建用于同步的账号; (3)从数据库实例设置server-id; (4)从数据库实例配置同步参数; (5)从数据库实例启动同步开关。

一:利用mysqldump搭建传统主从复制
1.1主数据库实例设置server-id和开启bin-log 在my.cnf文件的[mysqld]节点处:
[mysqld]
server-id = 1
log-bin= /usr/local/mysql-5.7.18/data/3306/mysql-bin
#另外还需要注意的是这个参数replicate-ignore-db = mysql 它的意思是在进行主从同步时忽略mysql这个库,因为mysql库主要存放账号及授权信息的,不同数据库实例账号和授#权信息不同的可能性极大,因此没有必要同步这个库。 通过如下命令可以快速查看是否已经正确配置:
[root@localhost ~]# egrep "server-id|log-bin" /usr/local/mysql-5.7.18/data/3306/my.cnf
查看一下主数据库的状态:
mysql> show master status \G;
搭建对sakila数据库进行复制的环境
主库:
对库sakila做备份
[root@vhost1 ~]# mysqldump -uroot -p --socket=/u01/tmp/mysql.sock --master-data=2 --single-transaction -q -B sakila |gzip > /tmp/sakila.sql.gz
############################################
全库导出
# mysqldump -uroot -p --master-data=2 --single-transaction -R --triggers -A > mysql_all.sql
其中
–master-data=2代表备份时刻记录master的Binlog位置和Position,
–single-transaction意思是获取一致性快照,
-R意思是备份存储过程和函数,
–triggres的意思是备份触发器,
-A代表备份所有的库。
############################################
从库:
创建数据库mysql> create database sakila;
[root@vhost1 ~]# gunzip < /tmp/sakila.sql.gz | mysql -uroot -p --socket=/u02/33061/tmp/mysql.sock sakila 1.2主数据库实例创建用于同步的账号 在主数据库创建一个replication账号用于从主库同步数据到从库,创建replication账号的语句如下: Mysql>grant replication slave on *.* to 'rep'@'%' identified by 'rep';
Mysql>flush privileges;
1.3从数据库实例设置server-id 同样,其实在上面的3307的配置文件里已经配置了server-id和bin-log,就在/usr/local/mysql-5.7.18/data/3307/my.cnf文件的[mysqld]节点处:
[mysqld]
server-id = 2
注意:在一个主从关系群中server-id是唯一的,另外在由于从数据库不向其它库同步数据,因此没有开启bin-log。这里也通过egrep查看一下: egrep "server-id|log-bin" /usr/local/mysql-5.7.18/data/3307/my.cnf
1.4从数据库实例配置同步参数 登录3307端口对应的实例:
确定binlog及偏移量:当主库备份时候,加master-data=2,备份文件中有这两项信息
然后执行以下语句:
CHANGE MASTER TO \
MASTER_HOST='127.0.0.1', \
MASTER_PORT=3306, \
MASTER_USER='replication', \
MASTER_PASSWORD='your_password', \
MASTER_LOG_FILE='mysql-bin.000003', \
MASTER_LOG_POS=154;
说明: MASTER_HOST为主服务器IP或主机名; MASTER_PORT为主服务器端口; MASTER_USER为主服务器上用于同步的数据库账户名; MASTER_PASSWORD为主服务器上用于同步的数据库账户对应的密码; MASTER_LOG_FILE为当前bin-log日志文件名; MASTER_LOG_POS为当前偏移量; 其中MASTER_LOG_FILE和MASTER_LOG_POS可以在主数据库上执行” show master status \G;”SQL语句来获得
二:利用innobackupex搭建传统主从复制
1:主库:利用innobackupex做备份,拷贝至从库
innobackupex --user=root --socket=/u02/33061/tmp/mysql.sock --port=33061 /tmp/
2:主库创建从库的同步复制用户
mysql> grant replication slave on *.* to 'rep1'@'%' identified by 'rep1';
3:从库:停掉从库MySQL服务,删除MySQL数据目录datadir
rm -rf /data/mysql/data
应用日志,追平备份过程中的事务
innobackupex --defaults-file=/etc/my.cnf --user=dba --password=xxx --apply-log /data/backup
根据my.cnf将备份复制到MySQL数据目录下:
innobackupex --defaults-file=/etc/my.cnf --user=dba --password=xxx --copy-back /data/backup
修改数据目录权限
chown mysql.mysql -R /data/mysql/data
4:启动从库MySQL服务.并执行change master
cat xtrabackup_info,确定binlog和pos位置,start slave;
MySQL主从复制之异步模式的更多相关文章
- MySQL主从复制(异步复制与半同步复制)
1.MySQl主从复制 原理:将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态. 过程:从库开启一个I/O线程,向主库请求Binlog日志.主节点开启一个binlog du ...
- 将mysql主从复制由ABB模式修改为ABC模式
最近遇到一个奇葩的需求,需要将mysql的主从复制模式由ABB修改为ABC,恰好这个mysql集群没有开启GTID,当时是在B上做了一次全量备份,然后使用该全量备份恢复C的方式进行的.做完之后在想有没 ...
- MySQL主从复制之GTID模式介绍
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GTID概述 MySQL5.6 在原有主从复制的基础上增加了一个新的复制方式,即基于GTID的复制方式,它由UUID和事务 ...
- mysql主从复制的异步复制与同步复制
异 步复制:MySQL本身支持单向的.异步的复制.异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机 ...
- Mysql半同步复制模式说明及配置示例 - 运维小结
MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二 ...
- 深度探索MySQL主从复制原理
深度探索MySQL主从复制原理 一 .概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什么? 1.1 MySQL 主从复制概念 MySQ ...
- 在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)【转】
mysql主从复制架构,是mysql数据库主要特色之一,绝大多数公司都有用到. 而GTID模式是基于事务的复制模式的意思,发展到现在也是越来越多人用. 以前很多文章,介绍搭建mysql主从复制架构,是 ...
- MySQL主从复制之半同步模式
MySQL主从复制之半同步模式 MySQL半同步介绍: 一般情况下MySQL默认复制模式为异步,何为异步?简单的说就是主服务器上的I/O threads 将binlog写入二进制日志中就返回给客户端一 ...
- Mysql主从复制_模式之日志点复制
MySQL数据复制的原理 MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...
随机推荐
- Linux环境部署Node.js
介绍 先前在阿里云ECS上部署Node.js,碰到不少坑,都是自己不仔细造成的,所以准备再部署一遍,并记录下来.我将我的服务器重置了,这次选择的是CentOS 7.4 64位,上次的是7.2的. 使用 ...
- P1622释放囚犯
这是一道绿题,是一道让人想用贪心但却是区间DP的题目,难倒了我这个蒟蒻. 这个题其实仔细观察是类似于石子合并的!合并石子的代价便是肉的数量,求最小代价.所以我们设dp[i][j]为释放第i个到第j个所 ...
- [BZOJ3451]Normal(点分治+FFT)
[BZOJ3451]Normal(点分治+FFT) 题面 给你一棵 n个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心.定义消耗时间为每层分治的子树大小之和,求消耗时间的期望. 分析 根据 ...
- jquery导航栏高亮(二级菜单点击一级保持高亮)
<script type="text/javascript"> var urlstr = location.href; var urlstatus=false; $(& ...
- 数据库与前端与Django目录
数据库 [怀心抱素]初步认识数据库 [怀心抱素]mysql的表操作 [怀心抱素]mysql记录操作 [怀心抱素]mysql索引与补充 [怀心抱素]python操作mysql 前端 [怀心抱素]HTML ...
- 1、Java语言概述与开发环境——Java特性和技术体系平台
一.Java语言的主要特性 1.Java语言是易学的: Java语言的语法与C语言和C++语言很接近,使得大多数的程序员很容易学习和使用Java. 2.Java语言是强制面向对象的: Java语言提供 ...
- 【 React -- 2/100 】使用React实现评论功能
React| 组件化 | 递归 | 生成唯一ID 需要探究一下 .find() 和 findIndex() 的区别 import React from 'react' import './commen ...
- Python基础2——数据类型的操作
列表操作 列表.字符串.元组的切片总结: num=[1, 2, 3, 4, 5, 6] 1.切片是通过下面来切,下标可以正数,也可以是复数.注意:复数的话,最后一个值的下标为-1,往前面推导就是-1, ...
- Datatable中对某列求和,三种不同情况下的方法
C# code 方法一. object sumObject = DataTable.Compute("sum(Qty)", "TRUE"); 直接对数据表中的字 ...
- myeclipse2014下卸载,安装maven插件。
转自:https://blog.csdn.net/gaoshang10/article/details/21177893 一.卸载方法: 点击Help->About Myeclipse Ente ...