mysql常规主从复制跟基于GTID的主从复制方法
一,环境部署
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的主从复制方法的更多相关文章
- 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)
主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...
- 基于GTID搭建主从MySQL
目录 基于gtid搭建主从MySQL 一.GTID的使用 二.GTID的简介 三.GTID的构成 四.查看GTID的执行情况 4.1 gtid_executed 4.2 gtid_own 4.3 gt ...
- 详解MySQL主从复制实战 - 基于GTID的复制
基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交 ...
- Mysql5.7实现主从复制、基于GTID的主从复制、并行复制
(一.主从复制) 一.mysql主从复制原理 mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...
- 深入MySQL复制(二):基于GTID复制
相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多.本文对gtid复制稍作介绍. MySQL基于GTID复制官方手册:https://dev.mysql.com/doc/refman ...
- 配置percona mysql server 5.7基于gtid主主复制架构
配置mysql基于gtid主主复制架构 环境: 操作系统 centos7. x86_64 mysql版本:Percona-Server-- 测试环境: node1 10.11.0.210 node2 ...
- 基于GTID的主从架构异常处理流程
通常情况下我们主库的binlog只保留7天,如果从库故障超过7天以上的数据没有同步的话,那么主从架构就会异常,需要重新搭建主从架构. 本文就简单说明下如何通过mysqldump主库的数据恢复从库的主从 ...
- 基于GTID Replication主从数据不一致操作
基本的M-S结构 现在master与slave主机数据一致: mysql> select * from t1; +------+ | id | +------+ | 1 | | ...
- percona mysql server5.7基于gtid的主从复制
配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...
- MySQL 基于 GTID 主从架构添加新 Slave 的过程
内容全部来自: How to create/restore a slave using GTID replication in MySQL 5.6 需求说明 需求: 对于已经存在的 MySQL 主从架 ...
随机推荐
- 在sublime text 3中编译javascript
1.整理步骤: 1).安装node.js: 2).配置js编译系统: 2.过程 1).先是按照网上的方法,在配置的时候输入如下内容: {"cmd": ["node&quo ...
- docker部署flask+uwsgi+nginx+postgresql,解耦拆分到多个容器,实现多容器互访
本人承诺,本博客内容,亲测有效. dockerfile文件, FROM centos:7 RUN mkdir /opt/flask_app COPY ./show_data_from_jira /op ...
- 12组-Beta冲刺-总结
组长博客链接 https://www.cnblogs.com/147258369k/p/15615820.html 一.基本情况 1.1 现场答辩总结 柯老师意见: 面向普通用户群体推出排行榜功能 增 ...
- 27_wbpack_自定义Plugin
Tapable 要想学会自定义Plugin就要先了解Tapable这个库 在我们的wbpack中有两个非常重要的两个类Compiler和Compilation 他们是通过注入插件的方式,来监听webp ...
- JUC续
设计模式,保护性暂停.解耦 生产者消费者模式 park.unpark 线程状态转换 锁超时 锁超时可以解决哲学家就餐问题 公平锁 条件变量 线程控制顺序
- go 的 wire 依赖注入
首先安装 wire 工具 go install github.com/google/wire/cmd/wire@latest go 文件 package main import ( "fmt ...
- this指向问题大全和call,apply,bind详解
详细笔记链接:https://www.jianshu.com/p/bc541afad6ee 函数内外作用域问题: var a = 1function f1(){ var a = 2 console.l ...
- 【小白必经之路:玩转STL】array容器
此篇随笔将示范array容器的基本操作 1.介绍 array容器在C++普通数组的基础上,添加了一些函数.在使用上,它比普通数组更安全. 2.头文件及命名空间 1 #include<array& ...
- 互联网公司IT系统架构进化之路
一日,与一高手在茶馆聊天.他问道:在鞋厂剑派这两年,可习的什么高深的剑法?我不由一愣,细细想来,这两年每日练习的都是简单的劈砍动作和一些简练的套路.并没有去练什么高深的剑法.不过鞋厂剑派在江湖上也算小 ...
- 87、linux root 密码忘记了
子账户登录,然后重置即可