MariaDB GTID 复制同步

MariaDB GTID 复制同步

GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事物ID是不能相同的。全局事务ID是Mster服务器生成一个128位的UUID+事物的ID号组成的,UUID标示主服务器的身份,此UUID在整个主从复制架构中是绝对唯一,而且即使更换主服务器后UUID也不会改变而是继承当前主服务器的UUID身份。

一、环境确认

master  IP : 10.6.0.96

slave   IP :  10.6.0.138

配置本地hosts

vim /etc/hosts

10.6.0.96 master.mysql

10.6.0.138 slave.mysql

二、配置文件确认,确保配置文件中有以下的配置:

binlog_format                         二进制日志的格式,有row、statement和mixed几种类型;

log-slave-updates、

report-port

report-host:                         用于启动GTID及满足附属的其它需求;

master-info-repository

relay-log-info-repository             启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能;

sync-master-info                      启用之可确保无信息丢失;

slave-parallel-workers                设定从服务器的SQL线程数;0表示关闭多线程复制功能;

binlog-checksum

master-verify-checksum

slave-sql-verify-checksum             启用复制有关的所有校验功能;

binlog-rows-query-log-events          启用之可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度;

log-bin                               启用二进制日志,这是保证复制功能的基本前提;

server-id                             同一个复制拓扑中的所有服务器的id号必须惟一.

三、配置master配置文件

//修改如下内容

log-bin=/opt/local/mysql/binlog/mysql-bin          #二进制日志文件目录

server-id       = 1                                #从服务器不能跟此id重复

binlog_format=ROW                                  #二进制日志文件格式

innodb_file_per_table=1                            #innodb表空间独立

log-slave-updates=true                             #从master取得并执行的二进制日志写入自己的二进制日志文件中

//添加以下内容

master-info-repository=TABLE                       #用于实现在崩溃时保证二进制及从服务器安全的功能;

relay-log-info-repository=TABLE                    #用于实现在崩溃时保证二进制及从服务器安全的功能;

sync-master-info=1                                 #启用之可确保无信息丢失

slave-parallel-threads=2                           #设定从服务器的SQL线程数;0表示关闭多线程复制功能

binlog-checksum=CRC32                              #启用复制有关的所有校验功能

master-verify-checksum=1                           #启用复制有关的所有校验功能

slave-sql-verify-checksum=1                        #启用复制有关的所有校验功能

binlog-rows-query-log_events=1                     #启用之可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度;

report-host=master.mysql                           #master 主机名,必须能ping通

report-port=3306                                   #端口

// 重启 mysql

service mysqld restart

//master创建用于主从复制的账号

mysql -uroot -p

grant replication slave,replication client on *.* to "rep"@‘10.6.0.138‘ identified by ‘rep12345‘;

flush privileges;

四、配置slave配置文件

//修改如下内容

log-bin=/opt/local/mysql/binlog/mysql-bin          #二进制日志文件目录

server-id       = 10                               #从服务器不能跟此id重复

binlog_format=ROW                                  #二进制日志文件格式

innodb_file_per_table=1                            #innodb表空间独立

log-slave-updates=true                             #从master取得并执行的二进制日志写入自己的二进制日志文件中

relay-log=/opt/local/mysql/relaylog/s74-relay-bin

//添加以下内容

master-info-repository=TABLE                       #用于实现在崩溃时保证二进制及从服务器安全的功能;

relay-log-info-repository=TABLE                    #用于实现在崩溃时保证二进制及从服务器安全的功能;

sync-master-info=1                                 #启用之可确保无信息丢失

slave-parallel-threads=2                           #设定从服务器的SQL线程数;0表示关闭多线程复制功能

binlog-checksum=CRC32                              #启用复制有关的所有校验功能

master-verify-checksum=1                           #启用复制有关的所有校验功能

slave-sql-verify-checksum=1                        #启用复制有关的所有校验功能

binlog-rows-query-log_events=1                     #启用之可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度;

report-host=slave.mysql                            #slave 主机名,必须能ping通

report-port=3306                                   #端口

# 在slave服务器使用主mysql上创建的账号密码登陆

mysql -uroot -p

change master to master_host=‘10.6.0.96‘,master_user=‘rep‘,master_password=‘rep12345‘,master_use_gtid=current_pos;

start slave;

# 查看是否启用 gtid:

show processlist;

# 查看同步状态:

show slave status\G;

出现 Got fatal error 1236 from master when reading data from binary log: ‘Error: connecting slave requested to start from GTID 0-10-223, which is not in the master‘s binlog‘

这类错误

# 在master 查看 Position

show master status;

记录 Position

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000008 |     1062 |              |                  |

+------------------+----------+--------------+------------------+

# 在 slave 上面 执行

stop slave;

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000008‘,MASTER_LOG_POS=1062;

start slave;

show slave status \G;

时间: 2024-08-06 07:56:49

MariaDB GTID 复制同步的相关文章

MariaDB 10 Slave Crash-Safe需转为GTID复制模式

之前写了一篇<MySQL5.6 crash-safe replication> ,但在Mariadb10.0.X和10.1.X上不支持relay_log_info_repository = TABLE参数,官网建议用GTID复制模式代替传统复制模式,传统复制模式是不支持Slave Crash-Safe的. 在mysql库下,会有一张gtid_slave_pos表(在安装初始化时,就已经是innodb引擎) START TRANSACTION; -- Statement 1 -- ... -- 

MariaDB的GTID复制和多源复制

什么是GTID? GTID就是全局事务ID(global transaction identifier ),最初由google实现,官方MySQL在5.6才加入该功能.GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标识.TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增. 什么是多源复制? 多源复制意味着一个服务器能从多个从服务器上复制.这是MariaDB 10.0的一个新特性. 实验系统:CentOS 6.6_x86_64 实验前提:防火墙和se

判断GTID复制中主从是否同步脚本

判断GTID复制中从库有没有与主库同步 show slave stautus\G中: 当Retrieved_Gtid_Set = Executed_Gtid_Set 表示从库已经和主库完成同步 #!/bin/bash Exec_num=$(mysql -uroot -p147258 -e "show slave status\G;" 2>/dev/null|grep 'Executed_Gtid_Set'| awk -F":" '{print $3}'|awk

MySQL5.7.16 gtid复制

<基础环境准备:> 首先安装两台MySQL5.7.16数据库,安装如下步骤即可: 一.系统环境准备: ①:系统yum源配置: [linux] name=linux hae baseurl=file:///media/ gpgcheck=1 gpgkey=file:///media/RPM-GPG-KEY-redhat-release ②:挂载Linux7.1系统盘安装必要的软件 yum -y install gcc* gcc-c++ ncurses ncurses-devel cmake bi

mysql 5.6 的新特性:GTID 复制

mysql 5.6 的新特性: MySQL 5.6 包含了一个复制的新功能,enabling DevOps teams to reliably scale-out their MySQL infrastructure across commodity hardware, rel="nofollow">Global Transaction Identifiers (GTIDs)功能, 为了解决以下问题: -能够无缝的故障恢复和master与slave的切换 -能把slave指向新的

MySQL--------基于GTID半同步搭建主从

1. 背景 * GTID: 全局事物ID(Global Transaction ID),在整个事务架构中每一个事务ID号是全局唯一的,不止是在一个节点上而是整个主从复制架构中每任何两个事务的ID号都不会相同. * GTID就是由当前节点的UUID(一个128位的随机数)和为当前节点生成的自增数(TID)组成的. * GTID在分布式架构中可以保证数据的一致性.从而也实现了mysql的高可用性. * MySQL 5.6开始支持. GTID在复制中代替原有的binlog file和file posi

MySQL 5.6.10 跨平台GTID复制实践

根据业务需要,建立MySQL复制来实现数据冗余. MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几率. 在官方文档中提到,最保险可靠的复制方式,是基于row的复制,所以宁可牺牲一些性能也要保证数据的安全. 现实环境中,master主数据库MySQL 5.6.10(msi安装方式)安装在Windows 2008 Server x64上,slave从服务器是一台老旧的DELL服务器,运行CentOS

mysql之 mysql 5.6不停机主从搭建(一主一从基于GTID复制)

环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火墙已关 补充: 主从复制原理: http://blog.csdn.net/zhang123456456/article/details/72972701GTID 复制原理: http://blog.csdn.net/zhang123456456/article/details/73002216mys

mysql之 MySQL 主从基于 GTID 复制原理概述

一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid,UUID保存在mysql数据目录的auto.cnf文件中,这是一个非常重要的文件,不能删除,这一部分是不会变的.另外一部分就是事务ID了,随着事务的增加,值一次递增,如下图+---------------+----------+--------------+------------------+-