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复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...
随机推荐
- Dva框架从初识到上手
引言 最近工作需要用dva框架,同事帮我培训了一下,有一点点认识,在此总结. 当然,以后对dva可能会了解更透彻,文章会不断更新的. 初识 开始看架构代码,没有看文档的时候,不知道里面的几个关键字 ...
- java上传文件-大文件以二进制保存到数据库
转自:https://blog.csdn.net/qq_29631069/article/details/70054201 1 一.创建表 oracle: create table baoxianda ...
- AF封装的关于一次请求上传多图到服务器!!!
方式一:图片封装在模型数组中 /** * 上传多图到服务器 * * @param URLString 请求地址 * @param parameters 请求的其他参数 * ...
- Linux学习--第五天--vim使用、rpm命令
vim使用 三种模式: 编辑模式 插入模式 命令模式 |命令|作用| |--|--| |a|在光标字符后插入| |A|在光标行尾插入| |i|在光标字符前插入| |I|在光标行首插入| |o|在光标下 ...
- vscode 黑屏及类名报错解决方案
1.安装vscode之后打开黑屏,解决方案如下图,右键--属性--兼容性--勾选上 2.vscode 类名总报错 是ES2017的语法修饰器引起vscode警告. 解除的方法如果你使用的typescr ...
- Python列表(list)的方法调用
#list# n = [12,34,"yue"]# v = n.append(27) #增加元素,注意是在尾部增加,由于列表是可修改的,所以是在原列表中增加,与字符串存在区别# p ...
- java打印树形目录结构
import java.io.File; public class MainTest { public static void main(String[] args) { String dirname ...
- bzoj5020 & loj2289 [THUWC 2017]在美妙的数学王国中畅游 LCT + 泰勒展开
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5020 https://loj.ac/problem/2289 题解 这个 appear 和 d ...
- cocos随笔
随笔: [ 1 ] active能隐藏元素,且不占空间,但仍存在,索引时,仍能得到 [ 2 ] 碰到参数传不进去的时候可以试着用属性赋值的方法代替传参 [ 3 ] getChildByName是按照 ...
- Tymeleaf模板引擎背景图片路径书写方式
<body style="background: url(../static/assets/img/bg-so-white.png);" th:style="'ba ...