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主从复制之异步模式的更多相关文章

  1. MySQL主从复制(异步复制与半同步复制)

    1.MySQl主从复制 原理:将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态. 过程:从库开启一个I/O线程,向主库请求Binlog日志.主节点开启一个binlog du ...

  2. 将mysql主从复制由ABB模式修改为ABC模式

    最近遇到一个奇葩的需求,需要将mysql的主从复制模式由ABB修改为ABC,恰好这个mysql集群没有开启GTID,当时是在B上做了一次全量备份,然后使用该全量备份恢复C的方式进行的.做完之后在想有没 ...

  3. MySQL主从复制之GTID模式介绍

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GTID概述 MySQL5.6 在原有主从复制的基础上增加了一个新的复制方式,即基于GTID的复制方式,它由UUID和事务 ...

  4. mysql主从复制的异步复制与同步复制

    异 步复制:MySQL本身支持单向的.异步的复制.异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机 ...

  5. Mysql半同步复制模式说明及配置示例 - 运维小结

    MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二 ...

  6. 深度探索MySQL主从复制原理

    深度探索MySQL主从复制原理 一 .概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什么? 1.1 MySQL 主从复制概念 MySQ ...

  7. 在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)【转】

    mysql主从复制架构,是mysql数据库主要特色之一,绝大多数公司都有用到. 而GTID模式是基于事务的复制模式的意思,发展到现在也是越来越多人用. 以前很多文章,介绍搭建mysql主从复制架构,是 ...

  8. MySQL主从复制之半同步模式

    MySQL主从复制之半同步模式 MySQL半同步介绍: 一般情况下MySQL默认复制模式为异步,何为异步?简单的说就是主服务器上的I/O threads 将binlog写入二进制日志中就返回给客户端一 ...

  9. Mysql主从复制_模式之日志点复制

    MySQL数据复制的原理 MySQL复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新.删除等等).因此,要进行复制,必须在主服务器上启用二进制日志. 每个从服务器从主服务器接收主服务器已经记 ...

随机推荐

  1. [2019上海网络赛F题]Rhyme scheme

    题目链接 题意,求出合法的长度为n的字典序第k小字符串,合法的定义为除了最后一位,每一位的取值范围为'A'到'A'+pos-1,而最后一位的取值范围'A'到当前字符串最大值+1. 队友tql,Orz ...

  2. P1507NASA食物

    这道题是一个01背包的延伸题,只要透彻理解了,就不难了. 这个题有两个T,一个是体积一个是质量,所以这时候我们必须要加一个for了,同时要优化空间(三维降二维),然后用f[j][k]来表示当体积为j, ...

  3. 一致性Hash算法(转)

    一致性Hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Balance):平衡性是指哈希的结果能够尽可能分布在所有的缓冲(Cache)中去,这样可以使得所有的缓 ...

  4. 洛谷 - P1462 - 通往奥格瑞玛的道路 - 二分 - Dijkstra

    https://www.luogu.org/problem/P1462 感觉,要二分最大收费权的城市,把小于等于它的全部插进去,Dijkstra一下求出最小的血量.这样感觉太暴力了. 考虑只有1000 ...

  5. django2.0url的变动

    WARNINGS:?: (urls.W001) Your URL pattern '^$' uses include with a route ending with a '$'. Remove th ...

  6. 【nginx】上传文件error报413 Request Entity Too Large

    nginx配置增大上传文件限制 如果访问地址是通过nginx转发配置的 server{ ... ... client_max_body_size 50M; ... ... } ingress配置增大上 ...

  7. redis防止抢购商品超卖

    前言: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用. 本篇博文用来测试下使用redis来防止抢购商品超卖问题. 内容: 使用redis的list进行测试 思路是设置一个 ...

  8. New Machine Learning Server for Deep Learning in Nuke(翻译)

    最近一直在开发Orchestra Pipeline System,歇两天翻译点文章换换气.这篇文章是无意间看到的,自己从2015年就开始关注机器学习在视效领域的应用了,也曾利用碎片时间做过一些算法移植 ...

  9. impala常用语法

    参考:https://www.w3cschool.cn/impala/impala_alter_table.html

  10. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...