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复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...
随机推荐
- Python 数据分析:Pandas 缺省值的判断
Python 数据分析:Pandas 缺省值的判断 背景 我们从数据库中取出数据存入 Pandas None 转换成 NaN 或 NaT.但是,我们将 Pandas 数据写入数据库时又需要转换成 No ...
- spring boot配置分页插件
在springboot中使用PageHelper插件有两种较为相似的方式,接下来我就将这两种方式进行总结. 方式一:使用原生的PageHelper 1.在pom.xml中引入依赖 <depend ...
- letsencrypt 免费SSL证书申请, 自动更新
Let's Encrypt 泛域名 证书申请 及自动更新 关键字:SSL证书.HTTPS 初次申请 1. 下载certbot wget https://dl.eff.org/certbot-auto ...
- PCIe基础篇(二)、协议详解
一个完整的PCIe协议体系结构包括应用层.事务层(Transaction Layer).数据链路层(Data Link Layer)和物理层(Physical Layer).其中,应用层由用户需要自行 ...
- django2.0变动数据库设置外键报错
1.报错TypeError: __init__() missing 1 required positional argument: 'on_delete' django2.0以后创建数据库外键的时候必 ...
- WPF拖拽文件(拖入拖出),监控拖拽到哪个位置,类似百度网盘拖拽
1.往wpf中拖文件 // xaml <Grid x:Name="grid_11" DragOver="Grid_11_DragOver" Drop=&q ...
- Pose &&Get的区别
从一个页面转向另一个页面的请求方式有两种,Post和Get. 如果从原理上来探究他们的区别,涉及到Http传输协议的细节,本文不加探究,只讨论一下表象. 1.Post传输数据时,不需要在URL中显示出 ...
- uni-app中页面部分内容使用索引列表(uni-indexed-list),动态数据
一.引入uni-indexed-list.uni-icons组件 从uni-app插件市场下载或从HBuilder X提供的hello uni-app模板中复制 二.页面中引用 三.对请求获得的数据处 ...
- 2019-10-31-VisualStudio-2019-新特性
title author date CreateTime categories VisualStudio 2019 新特性 lindexi 2019-10-31 08:48:27 +0800 2019 ...
- Utorrent死机恢复种子下载
死机保存Utorrent种子不被删除方法: 保了200多个种,死机了重启就没有什么下载的种子的记录,要一个个导入实在奔溃. 从被删除的resume.dat恢复很有压力. 简单的方法: 在还没有死机前, ...