一,环境部署

192.168.113.129

193.168.113.130

二进制部署mysql5.7的方法见mysql5.7二进制部署,以及部分优化参数

二,mysql基于二进制日志点的复制

1,在mysql主从上面创建复制账号

>create user slave@'192.168.113.%' identified by '123456';

2,授权该账号拥有主从库的所有操作权限

>grant replication slave on *.* to slave@'192.168.113.%';

3,配置主数据库服务器

vim /etc/my.cnf
#在mysqld下面添加类容
log_bin=mysql-bin #开启二进制日志,并指定存储目录(mysql-bin),如果未启动二进制日志,则重启后才能生效
server-id=50 #需要指定serverid,在复制集群中必须唯一,主从id不能相同, 建议:server-id 可以用主机ip的后几段
binlog_format=row

4,配置从数据库服务器

vim /etc/my.cnf
log_bin=mysql-bin
binlog_format=row
server-id=51
relay_log=mysql-relay-bin
#log_slave_update=on
read_only=on # 安全配置参数,防止从写入,从库只读

relay_log 启动了主从复制,该参数就会默认启动,但在默认情况下,参数名字是主机名字,如果因为某种原因更改了主机名的命名策略,这时在启动了从服务器的复制链路的就会报找不到原来的中继日志的错误,从而中断主从复制的链路,所以要更改中继日志的名字,这样就不会造成复制链路的中断了

log_slave_update=on 决定是否要把sql线程存放的中继日志记录到从服务器本机的二进制日志中,如果后续要做链路复制,要把该从服务器作为其他从的主服务器,该参数必须配置

5,从库初始化同步主库所有数据

在主库上面备份所有数据
为保持数据库的一致性主库不要有写入操作
mysqldump -uroot -p --all-databases --skip-lock-tables > all.sql
scp all.sql root@192.168.113.130:/root
从库导入数据
mysql -uroot -p < all.sql

可以使用xtrabackup –slave-info 热备工具进行快速备份

6,在从库上面配置启动主从配置连接

主库上查看binlog日志信息
>show master status;
从库配置链接
>change master to master_host='192.168.113.129',master_user='slave',master_password='123456',MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=946;
>start slave; #启动从
>show slave status\G; # 查看状态
注意防火墙跟selinux的设置

7,验证效果

可以在从库创建新的表

或者在原有的表插入数据等

查看从库是否有新建的数据

优点:

1.是mysql最早支持的复制技术,BUG相对较少。

2.对SQL查询没有任何限制。

3.故障处理比较容易。

缺点:

故障转移时重新获取新主的日志点信息比较困难。

指定偏移量错误的时候会可能出现问题

三,mysql基于GTID的复制方式

从MYSQL5.6 开始,mysql开始支持GTID复制。

1,基于日志点复制的缺点

从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致。

基于GTID复制:

从服务器会告诉主服务器已执行的事务的GTID值。
主库会告诉从哪些GTID事务没有被执行。
同一个事务在指定的从库执行一次。

2,什么是GTID

GTID即全局事务ID,器保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID.

GTID=source_id:transaction_id

source_id:是主库的server UUID,在数据目录的auto.cnf 文件中。

transaction_id: 从1开始的一个序列。

3,基于GTID复制的步骤

在主库上创建复制账号及授权

>create user slave@'192.168.113.%' identified by '123456';
>grant all privileges on *.* to slave@'192.168.113.%' identified by '123456';

4,配置主数据库配置信息


vim /etc/my.cnf
log_bin=mysql-bin
server_id=50
gtid-mode=on #打开GTID
#强制事务一致性,保证事务的安全
#注意如果使用了基于事务点日志配置下面两种情况不能使用:
#1.create table 。。select
#2.在事务中使用create temporary table 建立临时表,使用关联更新事务表和非事务表。
enforce_gtid_consistency
#在从服务器记录主服务器发过来的修改日志(5.7之前必须有),增加了IO负载
log-slave-updates=on

5,配置从数据库服务器

vim /etc/my.cnf
server_id=51
log_bin=mysql-bin
relay_log=mysql-relay-bin
gtid-mode=on
enforce-gtid-consistency
read_only=on #建议配置,保证从服务器数据安全性建议配置
master_info_repository=TABLE #从服务器连接主服务器的信息和中继日志存放咱 master_info,和relay_log中。
relay_log_info_repository=TABLE

6,从库初始化同步主库所有数据

在主库上面备份所有数据
为保持数据库的一致性主库不要有写入操作
mysqldump -uroot -p --all-databases --skip-lock-tables > all.sql
scp all.sql root@192.168.113.130:/root
从库导入数据
mysql -uroot -p < all.sql

可以使用xtrabackup –slave-info 热备工具进行快速备份

7,从库启动基于GTID的复制

>change master to master_host='192.168.113.130',master_user='slave',master_password='123456',master_auto_position=1;
>start slave; #启动从库
>show slave status\G; #查看状态

8,验证效果

可以在从库创建新的表

或者在原有的表插入数据等

查看从库是否有新建的数据

四,常见设计复制拓扑

           

         

           

           

               

mysql常规主从复制跟基于GTID的主从复制方法的更多相关文章

  1. 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)

    主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...

  2. 基于GTID搭建主从MySQL

    目录 基于gtid搭建主从MySQL 一.GTID的使用 二.GTID的简介 三.GTID的构成 四.查看GTID的执行情况 4.1 gtid_executed 4.2 gtid_own 4.3 gt ...

  3. 详解MySQL主从复制实战 - 基于GTID的复制

    基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交 ...

  4. Mysql5.7实现主从复制、基于GTID的主从复制、并行复制

    (一.主从复制) 一.mysql主从复制原理    mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...

  5. 深入MySQL复制(二):基于GTID复制

    相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多.本文对gtid复制稍作介绍. MySQL基于GTID复制官方手册:https://dev.mysql.com/doc/refman ...

  6. 配置percona mysql server 5.7基于gtid主主复制架构

    配置mysql基于gtid主主复制架构 环境: 操作系统 centos7. x86_64 mysql版本:Percona-Server-- 测试环境: node1 10.11.0.210 node2 ...

  7. 基于GTID的主从架构异常处理流程

    通常情况下我们主库的binlog只保留7天,如果从库故障超过7天以上的数据没有同步的话,那么主从架构就会异常,需要重新搭建主从架构. 本文就简单说明下如何通过mysqldump主库的数据恢复从库的主从 ...

  8. 基于GTID Replication主从数据不一致操作

    基本的M-S结构   现在master与slave主机数据一致:   mysql> select * from t1; +------+ | id   | +------+ |    1 | | ...

  9. percona mysql server5.7基于gtid的主从复制

    配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...

  10. MySQL 基于 GTID 主从架构添加新 Slave 的过程

    内容全部来自: How to create/restore a slave using GTID replication in MySQL 5.6 需求说明 需求: 对于已经存在的 MySQL 主从架 ...

随机推荐

  1. 从个人角度谈为什么要使用git多分支?

    今天烦死了,公司的项目没有使用多分支管理,造成给某客户的打包的代码竟然需要截取gitlab节点重新打包. 在我上家公司开发Android项目的时候,使用了非常鲜明的多分支管理,当时作为项目运维,对gi ...

  2. Burp学院-SQL注入

    前言: 上传下自己做的笔记,这些题做了好久好久了,一直没冒泡,之前想上传些东西结果博客园炸了就忘了,周五快下班了手头工作暂时缓解了,传点东西上来. 1.SQL injection UNION atta ...

  3. 【GENERAL FRAMEWORK】总框架——持续更新

    引: 鉴于目前挖的坑较多,未防止某些即将长期更新的博文出现烂尾,特设此框架 1.蓝桥杯(完结)         1.[蓝桥杯单片机组]LED.蜂鸣器与继电器--138-573的外设操作         ...

  4. python 链表推导式x for xx in yy

    一.(x for xx in yy )当x为固定参数 如: n = 10 # 生成n个0 matrix = [0 for i in range(n)]# 这里面0代表返回值,后面的for循环就是返回的 ...

  5. shell语法5-判断语句、循环语句、函数

    一.判断语句 if-then形式类似于C/C++中的if-else语句. 1.单层if命令格式:if conditionthen    语句1    语句2    ...fi 2.单层if-else命 ...

  6. redis缓存一致性

    redis缓存一致性 redis是目前使用最广泛的分布式缓存系统,几乎每家公司都在用.它使用简单,吞吐量高,单机 qps 可以达到 10 万每秒,但在使用redis缓存时存在一个问题,即如何保证缓存数 ...

  7. javascript获取浏览器窗口分辨率|浏览器全屏分辨率|屏幕分辨率

    浏览器窗口分辨率指显示网页的区域,在PC端由于浏览器窗口大小可调节,这个值是可变的.在手机等移动端浏览器窗口大小不可调节,宽度值是固定的,但竖屏和横屏切换会改变. 浏览器全屏分辨率是指浏览器启用全屏显 ...

  8. 关于安装hadoop时在centos上修改主机名总是不成功

    按照老师给的文件和网上搜的代码改了很多次,比如改/etc/sysconfig/network这些,无论改几次都没用,找了个帖子,说可能是因为 CentOS7版本由于与之前版本变化比较大,修改主机名的方 ...

  9. Typora以及Markdown学习

    Typora以及Markdown学习 标题 n级标题 一级标题为#+[空格]+标题或者ctrl+1 二级标题则为``##+[空格]+标题`或者ctrl+2 后续几级标题依此类推... 最多支持6级标题 ...

  10. SpringMVC文件上传详解

    声明 源码基于Spring Boot 2.3.12.RELEASE.Spring Framework 5.2.15.RELEASE Servlet3.0 文件上传 Servlet 3.0对于HttpS ...