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 主从架 ...
随机推荐
- redis cluster 部署
redis cluster 部署 服务器说明 192.168.2.200:7000 ... 192.168.2.200:7005 创建集群目录 mkdir cluster-test cd cluste ...
- 生产中遇到的spark任务问题
spark版本 2.2.0 日志里面的信息: WARN RowBasedKeyValueBatch: Calling spill() on RowBasedKeyValueBatch. Will no ...
- Redis的不同客户端对比
Redis 官方推荐的 Java 客户端有Jedis.lettuce 和 Redisson 客户端 简介 优点 缺点 Jedis 提供了比较全面的 Redis 操作 Jedis 简单全面, 支持 pi ...
- npm vue-router安装报错
因为2022年2月7日以后,vue-router的默认版本,为4版本,而且 vue-router4,只能在vue3中,只有vue-router3中,能用在vue 2中 如果把vue-router4强制 ...
- Springboot打包部署的步骤
1.配置pom.xml 引入插件 <groupId>com.bostech</groupId> <artifactId>dcs</artifactId> ...
- TIDB-DM数据迁移第一部(安装部署)
官方连接: https://docs.pingcap.com/zh/tidb/stable/dm-overview 架构: 1.安装DM download https://tiup-mirrors.p ...
- C#中延迟初始化实现原理的一点浅见。
定义 延迟初始化:一个对象的延迟初始化意味着它的创建被推迟到它第一次使用.(对于本主题,延迟初始化和延迟实例化是同义词.)延迟初始化主要用于提高性能.避免浪费计算和减少程序内存需求. 用法及简单介绍 ...
- Java基础__05.网络编程
通信协议 即约定网络通信时的一些内容. TCP和UDP对比 TCP:类比打电话 连接稳定 三次握手.四次挥手 客户端.服务端 传输完成.释放连接,效率低 UDP:类比发短信 不连接.不稳定: 客户端. ...
- WPF中获取主窗口 MainWindow 实例,以及在其他窗口中获取 MainWinodw 中的控件
var _mainWindow = Application.Current.Windows .Cast<Window>() .FirstOrDefault(window => win ...
- drupal clean url 配置
使用 find / -name "apachectl"查找文件目录下执行 ./apachectl -v 转载于:https://www.cnblogs.com/thinkingth ...