首页 > 数据库 >MySQL高可用-gtid

MySQL高可用-gtid

时间:2022-08-22 18:45:28浏览次数:106  
标签:可用 mysql MySQL master GTID 172.16 3306 gtid

课前回顾

MySQL高可用MHA

#!/bin/bash

mysql_conn='mysql -uuser -ppwd -h127.0.0.1 -P2345'
mha_log_file="/etc/mha/app1/manager.log"
down_master_ip=`sed -nr 's#^mha.*failover (.*)\(.* (.*)\(.* succeeded$#\1#gp' $mha_log_file`
new_master_ip=`sed -nr 's#^mha.*failover (.*)\(.* (.*)\(.* succeeded$#\2#gp' $mha_log_file`
new_master_id=`$mysql_conn -e 'select * from backends'|grep "$new_master_ip"|awk '{print $1}'`



$mysql_conn -e "remove backend $new_master_id"
$mysql_conn -e "add slave $down_master_ip:3306"
$mysql_conn -e "save config"


mysql> select * from backends;
+-------------+------------------+-------+------+
| backend_ndx | address          | state | type |
+-------------+------------------+-------+------+
|           1 | 172.16.1.55:3306 | up    | rw   |
|           2 | 172.16.1.54:3306 | up    | ro   |
|           3 | 172.16.1.53:3306 | up    | ro   |
|           4 | 172.16.1.52:3306 | up    | ro   |
+-------------+------------------+-------+------+


[root@db04 ~]# mysql -uuser -ppwd -h127.0.0.1 -P2345 -e "select * from backends"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+------------------+-------+------+
| backend_ndx | address          | state | type |
+-------------+------------------+-------+------+
|           1 | 172.16.1.55:3306 | up    | rw   |
|           2 | 172.16.1.53:3306 | up    | ro   |
|           3 | 172.16.1.52:3306 | up    | ro   |
|           4 | 172.16.1.54:3306 | up    | ro   |
+-------------+------------------+-------+------+


From:
(172.16.1.54)(172.16.1.54:3306) (current master)
 +--172.16.1.51(172.16.1.51:3306)
 +--172.16.1.52(172.16.1.52:3306)
 +--172.16.1.53(172.16.1.53:3306)

To:
172.16.1.51(172.16.1.51:3306) (new master)
 +--172.16.1.52(172.16.1.52:3306)
 +--172.16.1.53(172.16.1.53:3306)

基于GTID的主从复制

1)什么是GTID?
GTID(Global Transaction ID)全局事务标识符:是一个唯一的标识符,它创建并与源服务器(主)上提交的每个事务相关联。
此标识符不仅对其发起的服务器是唯一的,而且在给定复制设置中的所有服务器上都是唯一的。 所有交易和所有GTID之间都有1对1的映射。
GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。
下面是一个GTID的具体形式:
3E11FA47-71CA-11E1-9E33-C80AA9429562:23

2)GTID新特性
(1).支持多线程复制:事实上是针对每个database开启相应的独立线程,即每个库有一个单独的(sql thread).

(2).支持启用GTID,在配置主从复制,传统的方式里,你需要找到binlog和POS点,然后change master to指向.
在mysql5.6里,无须再知道binlog和POS点,只需要知道master的IP/端口/账号密码即可,因为同步复制是自动的,MySQL通过内部机制GTID自动找点同步.

(3).基于Row复制只保存改变的列,大大节省Disk Space/Network resources和Memory usage.

(4).支持把Master 和Slave的相关信息记录在Table中
原来是记录在文件里,记录在表里,增强可用性

(5).支持延迟复制

## 传统主从复制
change master to
master_host=
master_user=
master_password=
master_log_file=
master_log_pos=





## GTID主从复制
change master to
master_host=
master_user=
master_password=
master_autoposition=1

部署gtid主从复制

## 需要修改配置文件,报错
mysql> change master to
master_host='172.16.1.53',
master_user='slave',
master_password='123',
master_auto_position=1;
ERROR 1777 (HY000): CHANGE MASTER TO MASTER_AUTO_POSITION = 1 cannot be executed because @@GLOBAL.GTID_MODE = OFF.



#####################  每一个数据库都要加该配置  ####################################

# 1.查看GTID相关配置
mysql> show variables like '%gtid%';
  ---------------------------------+-----------+
| Variable_name                    | Value     |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery      | ON        |
| enforce_gtid_consistency         | OFF       |
| gtid_executed_compression_period | 1000      |
| gtid_mode                        | OFF       |
| gtid_next                        | AUTOMATIC |
| gtid_owned                       |           |
| gtid_purged                      |           |
| session_track_gtids              | OFF       |
+----------------------------------+-----------+


| gtid_mode                        | OFF       |  GTID模块关闭
| enforce_gtid_consistency         | OFF       |  GTID强一致性


# 2.修改配置文件(MySQL5.7)
[root@db04 ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency

# 2.修改配置文件(MySQL5.6)
[root@db04 ~]# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency
log-slave-updates

# 3.重启数据库
[root@db04 ~]# /etc/init.d/mysqld restart


log-slave-updates:日志,从库,更新,   更新从库上的binlog

标签:可用,mysql,MySQL,master,GTID,172.16,3306,gtid
From: https://www.cnblogs.com/wangchengww/p/16613861.html

相关文章

  • Rancher高可用部署(k8s)
    先决条件1、k8s集群2、CLI工具(helm,kubectl)3、IngressController添加HelmChart仓库使用helmrepoadd命令添加含有RancherChart的HelmChart仓库。请将命令中......
  • MySQL之char、varchar、text类型
      在存储字符串时,可以使用char、varchar或者text类型,那么具体使用场景呢? 参考下面这个表结构:   分析 一,char类型char列的长度固定为创建表时声明的长......
  • mysql_backup_extract.py
     #!/usr/bin/envpython#-*-coding:utf-8-*-"""Desc:decryptthedbbackupfile,thentoungzipit,finally,tobeaoriginstate.Date:2016-08-10......
  • MySQL表结构快速转化成数据库设计说明书的表格格式
    大家平时在实际研发中,肯定遇到过编写数据库设计说明书时,需要将表结构转化成表格格式并插入到word文档中.这里推荐一种方式,借助navicat工具即可轻松实现:1.navicat......
  • Navicate连接MySQL 出现报错2013 - Lost connection to MySQL server at 'waiting for
      ......
  • Mysql Order By 字符串排序,1 10 2 20,以字符串排序,不是使用数字排序
    一、问题描述:Mysql排序时如果用的的字段为字符串型的,排序规则是这样的:如1,10,2,20,3,4,5,这种排序是按照字符从第一个字符开始比较出来的,但不是我想要的,我想要的是:1,2,3,4,5……,10,20......
  • lnmp重新安装mysql
    安装mysql好长时间,一直没去管,后来一直频繁重启,各种网上找方案去解决,最后问题太异常,一顿操作猛如虎之后把mysql彻底搞垮,无奈只能进行重装。whereismysqlmysql:/usr/bin/......
  • 详解MySQL游标
    1、什么是游标(或光标)虽然我们也可以通过筛选条件WHERE和HAVING,或者是限定返回记录的关键字LIMIT返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后......
  • mysql索引失效的情况及解决
    原文出处:https://www.cnblogs.com/aspirant/p/16166851.html关于explain的详解:MySQLEXPLAIN详解 经典问题:1、如果A,B两列都有索引,那么 select*fromTablewh......
  • Linux启动Mysql出现command not found的解决方法
    当在Linux中安装Mysql后,不管是在根目录下还是在安装mysql的bin下执行mysql-uroot-p结果都是commandnotfound,如下图所示:问题原因,linux默认启动Mysql,会在根目录下的bin中......