MySQL 基于GID 的一主两从| 修改假造机uuid |修改MySQLuuid| 主从复制的一 ...

嚴華  金牌会员 | 2024-8-30 03:29:36 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

迩来有人私信我说,我两年前的文档主从配置,太长太乱,看不懂。
其实,信任也有人发现了,我的整体文章只有极小极小一部门适合新手,大部门都是作为职场新人或已经学了许多年计算机的大三,大四学生的的参考大概说思想启发教程,重要是看整体流程和思绪,方便排错和调优和思绪启发,以及抄袭我的思绪并运用于生产情况,这才是我写文合适的阅览者。为什么呢?我已经接触计算好久了,我写博客第一目标是沉淀技能,学的太杂了以是一边写一边梳理所学只管形成一个属于我的体系,这才是我的初志,以是我一样寻常写的有时间技能壁垒很高,不是那个范畴的根本听不了,比如像这种:怎样用sql在1分钟从1T数据中精准定位查询?Hive离线数仓 Spark分析_hive 通过sparksql查询能力-CSDN博客文章浏览阅读3.4k次,点赞66次,收藏21次。在大数据-Hadoop体系中 ,spark批处理和hive离线数仓可以说是对立并行的两个大分支技能栈,,,发起主攻其一,另一个机动使用就行。他们是2015出现在国内,2017年之后国外各大公司纷纷采用,国内2020采用的,现在属于很前沿,而且很主流,很顶层的技能。(注:19年国内云计算开始起势,大数据的发展与云计算和人工智能等密切相干,更离不开芯片,硬件存储技能等相干支撑,它们之间相辅相成_hive 通过sparksql查询能力
https://blog.csdn.net/qq_61414097/article/details/140999898
对于一些小白,对此,我只能说抱歉了,很抱歉,对不起,不外我在梳理归纳我的个人知识体系的时间,将来也会只管只管写许多比力零出发点的小白也能看的,比如像这种:Centos 7.9 安装 图解版 小白必看 最新_centos7.9 2009 系统-CSDN博客文章浏览阅读1.4k次,点赞33次,收藏24次。VMware安装win7用 12win10 用 15win11用 16.2.4别问为什么,问就是win和VMware不兼容导致假造机各种奇葩非常,重装集群了这已经是我当年实验了20多次得出的结果,最佳兼容性搭配。_centos7.9 2009 系统
https://sanfenyunjisuan.blog.csdn.net/article/details/141171717
现在有些我们所周知的根本概念,我没解释,比如 vim 命令行下 :q    # 退出   :wq 保存并退出,:wq! 强制保存并退出 :q! 强制退出,我直接在多篇文章教程中    vim编辑内容 我是直接用了并没阐明怎么保存退出,但是你们vim 编辑一定是要保存并退出的,但是在文章中,我一样寻常没做阐明,默认你们底子都会,因为如果像这种都解释,那样的话一篇文章起码上两万字了,根本没那么多的时间写的,再次说声抱歉
迩来有人私信我说,我两年前的文档太长太乱,看不懂,因此就有了这篇,这是我迩来做的,跟着做完上手就直接运行的  


主从复制的一些概念了解即可

 MySQL主从复制方式都有那些?区别是什么

MySQL的主从复制(Master-Slave Replication)是一种数据同步机制,它答应将一个MySQL服务器(主服务器)的数据复制到一个或多个MySQL服务器(从服务器)上。主从复制可以用于多种目标,比如数据备份、读取扩展、灾难规复等。实现MySQL主从复制的方式重要有以下几种:

1基于二进制日志(Binary Log)的复制

这是最常见的复制方式。
   主服务器记录所有对数据库的更改(如INSERT、UPDATE、DELETE等操作)到二进制日志中。
  从服务器毗连到主服务器,并请求最新的二进制日志事件。
  从服务器读取这些事件,并在本身的数据库上重放这些事件,从而实现数据同步。
  这种方式可以是同步复制也可以是异步复制。
  
2.

基于GTID(Global Transaction Identifiers)的复制

   GTID提供了一种全局唯一的事务标识符,使得复制过程更加可靠和易于管理。
  在GTID复制中,每个事务都有一个唯一的标识符,从服务器可以确保不会遗漏或重复执行事务。
  这种方式简化了故障转移和复制拓扑的管理。
  
3.

基于日志传输(Log Shipping)的复制

   这种方式通常用于灾难规复。
  主服务器的二进制日志文件被定期传输到一个或多个从服务器。
  从服务器应用这些日志文件来更新本身的数据。
  这种方法通常比基于二进制日志的复制要慢,因为它涉及到文件传输和应用。
  
4.

基于半同步复制(Semi-Synchronous Replication)

   半同步复制是介于异步复制和同步复制之间的一种方式。
  当事务提交时,主服务器会等候至少一个从服务器确认已经接收到事务的二进制日志,然后才返回给客户端事务提交成功。
  这种方式进步了数据的安全性,因为纵然主服务器失败,至少还有一个从服务器拥有最新的数据。
  
5.

基于复制过滤器的复制

   可以在主服务器或从服务器上设置过滤器,以决定哪些数据库或表应该被复制。
  这种方式答应更细粒度的控制复制过程,但需要仔细规划以避免数据不一致。
  
每种复制方式都有其特定的使用场景和优缺点。选择哪种方式取决于详细需求,如对数据一致性、性能、故障规复等方面的要求。在实施复制时,还需要思量网络延迟、复制延迟、主从服务器的硬件配置等因素。

  

所有主从复制前置条件:

 前置1centos 已安装,yum 已配置阿里云的源, 可ping通 如果没有 按照以下 ,操作


Centos 7.9 安装 图解版 小白必看 最新_centos7.9 2009 系统-CSDN博客文章浏览阅读1.5k次,点赞33次,收藏24次。VMware安装win7用 12win10 用 15win11用 16.2.4别问为什么,问就是win和VMware不兼容导致假造机各种奇葩非常,重装集群了这已经是我当年实验了20多次得出的结果,最佳兼容性搭配。_centos7.9 2009 系统
https://sanfenyunjisuan.blog.csdn.net/article/details/141171717
 前置2MySQL安装 三个都要装。

MySQL 安装 小白/新手入门 yum 安装MySQL 配置yum 安装MySQL5.7 yum 安装指定版本的MySQL 修改主机名 配置静态DNS解析 关闭防火墙及内核防火墙 设置出入站规则-CSDN博客文章浏览阅读296次,点赞18次,收藏5次。MySQL 安装 小白/新手入门 yum 安装MySQL 配置yum 安装MySQL5.7 yum 安装指定版本的MySQL 修改主机名 配置静态DNS解析 关闭防火墙及内核防火墙 设置出入站规则安装MySQL:配置安装源 :配置yum 安装MySQL指定版本所用的yum 堆栈源
https://blog.csdn.net/qq_61414097/article/details/141367105
 前置3三台台呆板情况必须一致,如下


集群主机名分别修改为 master  slave 1slave2 
然后,三台呆板配置hosts解析如下
三个假造机的/etc/hosts 文件 ,都需要添加内容变成如下 
 192.168.28.145这是我的假造机主机名,要改成你本身的假造机ip
    vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.28.145 root
192.168.28.144 slave1
192.168.28.143 slave2

   前置4  时间也得一致  使用NTP 来举行集群时间同步


基于RPM的Linux发行版(如CentOS、Fedora、RHEL等),
可以使用以下命令安装NTP服务:sudo yum install ntp
对于基于Debian的系统(如Ubuntu),
使用以下命令安装
   sudo apt-get install ntp
  默认的NTP服务器地址替换为阿里云提供的NTP服务器,如下
vim /etc/ntp.conf 
   #server 0.centos.pool.ntp.org iburst
  #server 1.centos.pool.ntp.org iburst
  #server 2.centos.pool.ntp.org iburst
  #server 3.centos.pool.ntp.org iburst
  server ntp.aliyun.com iburst
  server time1.aliyun.com iburst
  server time2.aliyun.com iburst
  server time3.aliyun.com iburst
  server time4.aliyun.com iburst
  server time5.aliyun.com iburst
  server time6.aliyun.com iburst
  :wq

重启服务 他只要ntpd服务运行,就会自动同步,不外自动同步之前先 关闭ntpd使用ntpdate一次性同步时间工具校准现在时间
   sudo systemctl restart ntpd
  一次性同步时间 ntpdate命令 
   [root@root ~]# systemctl stop ntpd
  
  [root@root ~]# sudo ntpdate ntp.aliyun.com time1.aliyun.com time2.aliyun.com time3.aliyun.com time4.aliyun.com time5.aliyun.com time6.aliyun.com
  执行ntpdate ntp.aliyun.com time1.aliyun.com 。。这个命令后输出如下:
   19 Aug 16:14:32 ntpdate[16365]: adjust time server 203.107.6.88 offset 0.006931 sec
  校准完成 ,开启自动同步
   sudo systemctl restart ntpd
  开机自启
   sudo systemctl enable ntpd
  
前置5修改uuid 

修改假造机uuid :可不做,假造机如果是克隆的需要改uuid 否则网卡报错

有一种野路子: 使用在线uuid天生器直接天生  uuid 然后直接找到配置文件修改
UUID在线天生器 在线批量天生UUID iP138在线工具UUID是通用唯一辨认码(Universally Unique Identifier)的缩写,指在一台呆板上天生的唯一数字,由32位16进制数字组成,形式为8-4-4-4-12。由于UUID的唯一性特性,通常用于分布式系统中对象的标识。本工具可批量天生指定数量的UUID。
https://tool.ip138.com/uuid/
   UUID=85e0b05c-db67-4785-9237-4b4c39afe49c
  # vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
   BOOTPROTO=static  # 或dhcp
  ONBOOT=yes
    重置网卡uuid
  rm -rf /etc/udev/rules.d/70-persistent-ipoib.rules
  Cd  /etc/udev/rules.d/
  Ls
  找到 带70-xxxxx的文件删除
  Vim /etc/sysconfig/network-scripts/ifcfg-eth0
  vim /etc/sysconfig/network-scripts/ifcfg-eth33
     把配置文件里的uuid 替换 成 刚刚在线天生的UUID=85e0b05c-db67-4785-9237-4b4c39afe49c
    # 禁用与启用网络接口
  # 禁用并重新启用 ens33 接口:
  Copyifdown ens33
  ifup ens33
  完成。



修改MySQL  uuid


查询uuid方法1

   
  systemctl  stop mysqld
  systemctl restart mysqld
    mysql -uroot -p
  Password123$
   
  mysql> SELECT UUID();
  +--------------------------------------+
  | UUID()                               |
  +--------------------------------------+
  | 82461950-5e1d-11ef-bf68-000c296de0fc |
  +--------------------------------------+
  1 row in set (0.00 sec)
    mysql> exit
  查询uuid方法2

 另外,
还有有一种野路子: 使用在线uuid天生器直接天生直接修改
 有一种野路子: 使用在线uuid天生器直接天生  uuid 然后直接找到配置文件修改
UUID在线天生器 在线批量天生UUID iP138在线工具
https://tool.ip138.com/uuid/


设置新的server-uuid

   注意:uuid 不支持SET PERSIST命令
  注意:获取到uuid后直接把刚刚SELECT UUID();  天生的uuid 添加到配置文档中
  
  yum安装的uuid在vim /var/lib/mysql/auto.cnf
    vim /var/lib/mysql/auto.cnf
  
  //修改server-uuid
    vim /etc/my.cnf 这个文档不可以添加uuid  会报错  yum安装的uuid在auto.cnf中
  [mysqld]  
    systemctl restart mysqld 注意如果有些随机天生的uuid曾经集群某个假造机用过,重启会失败,此时把uuid那行先解释掉,再重新天生uuid 重新设置uuid
    重启MySQL服务:重启失败 检查 .log 和.pid 文件是否存在
    [root@slave2 ~]# mkdir /var/log/mysqld.log
  mkdir: 无法创建目次"/var/log/mysqld.log": 文件已存在
  [root@slave2 ~]# mkdir /var/run/mysqld/mysqld.pid
  mkdir /var/lib/myssocket
  mkdir /var/lib/mysql/mysql.sock
为了使更改生效,您需要重启MySQL服务。根据您的操作系统和MySQL版本,使用相应的命令重启服务。比方,在基于RPM的系统上,您大概需要运行:
    systemctl restart mysqld
  在基于Debian的系统上,您大概需要运行:
  systemctl restart mysql
  验证设置:
重启MySQL服务后,您可以通过再次执行SELECT @@server_uuid;命令来验证新的UUID是否已正确设置。
  
总结

   无论配置什么服务的uuid 都可以使用
  使用在线uuid天生器直接天生 然后直接修改某指定服务配置文档中的uuid
  UUID在线天生器 在线批量天生UUID iP138在线工具 天生uuid
   注意:

yum安装的uuid在vim /var/lib/mysql/auto.cnf
二进制安装的
编译安装在编译安装的 MySQL 中,auto.cnf 文件的位置取决于你配置的数据目次(通常是 /usr/local/mysql/data)
vim /var/lib/mysql/auto.cnf



MySQL基于GTID配置原理 gid配置主从原理

1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。
2、slave端的i/o 线程将变更的binlog,写入到当地的relay log中。
3、sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。
4、如果有记录,阐明该GTID的事务已经执行,slave会忽略。
5、如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。
注意 :必看  !!!!!!!!!

当你开始配置主服务器时 ,备份导入导入到从服务器的方式

备份数据库时   /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
mysqldump -u root -p --all-databases --master-data > /path/to/backup.sql

导出的数据库 存储在/opt/backup-gid.sql,可以通过 FTP,SSH,SFTP,U盘,SCP 等方式 导入到从数据库,我个人发起,scp 和u盘拷贝  其他不是很安全。。。
导入到从服务器/opt下 举例:
   scp -p /opt/backup-gid.sql 192.168.28.143:/opt/ 
  scp -p /opt/backup-gid.sql 192.168.28.144:/opt/
  
主服务器的数据库备份: /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
mysql -u root -p < /path/to/backup.sql 
    /path/to指的是你本身的配置路径 backup是备份的意思,在企业中,通常做备份都会定名为.bak 或backup,这是在公司中一种约定俗成的做法,属于代码规范的一部门,bak-gid.sql或backup-gid.sql  表现这是MySQL数据库的做gid时 备份 
 


1.MySQL基于GTID配置一主两从详解:
 



IP为
   master 192.168.28.145
  slave1 192.168.28.144
  slave2 192.168.28.143
  配置MySQL基于GTID(全局事务标识符)的主从复制可以有效确保数据在多个服务器之间的一致性和高可用性。下面是一个详细的配置步骤和示例,假设你的主服务器IP为192.168.28.145,从服务器1的IP为192.168.28.144,从服务器2的IP为192.168.28.143。
1. 预备工作

确保在三台服务器上都已经安装了MySQL,而且版本支持GTID(MySQL 5.6及以上)
2. 配置主服务器(192.168.28.145) 编辑MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下配置:

   
  [mysqld]
  server-id=1
  log-bin=mysql-binbinlog-format=ROW
  gtid-mode=ONenforce-gtid-consistency=ON
  
  
  重启MySQL服务以应用配置更改:
注意:如果重启报错,那么,先创建用户授权,锁表在改配置。

   systemctl restart mysqld
  创建一个用于复制的用户,并授予必要的权限:
   CREATE USER 'repl'@'192.168.28.144' IDENTIFIED BY 'password';CREATE USER 'repl'@'192.168.28.143' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.28.144';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.28.143';
  
  
  FLUSH PRIVILEGES;
    锁定数据库以举行快照(可选,但保举):
  FLUSH TABLES WITH READ LOCK;
    获取主服务器的二进制日志文件名和位置:
  SHOW MASTER STATUS;
  
  
  记下File和Position的值。
    备份数据库: /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
  
  mysqldump -u root -p --all-databases --master-data > /path/to/backup.sql
  
  
  解锁数据库:
   UNLOCK TABLES;
  3. 配置从服务器1(192.168.28.144)

   编辑MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下配置:
  
  [mysqld]
  server-id=2
  gtid-mode=ONenforce-gtid-consistency=ON
    重启MySQL服务以应用配置更改:
  
  sudo systemctl restart mysqld
    导入主服务器的数据库备份: /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
  
  mysql -u root -p < /path/to/backup.sql
  
配置从服务器与主服务器举行复制:
   
  CHANGE MASTER TO
      MASTER_HOST='192.168.28.145',
      MASTER_USER='repl',
      MASTER_PASSWORD='password',
      MASTER_AUTO_POSITION=1;
    启动复制进程:
  
  START SLAVE;
    检查复制状态:
  
  SHOW SLAVE STATUS\G;
  
  确保Slave_IO_Running和Slave_SQL_Running都显示为Yes,而且没有错误。
  
   4. 配置从服务器2(192.168.28.143)

  
  编辑MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下配置:
  
  [mysqld]
  server-id=3
  gtid-mode=ON
  enforce-gtid-consistency=ON
    重启MySQL服务以应用配置更改:
  
  sudo systemctl restart mysqld
    导入主服务器的数据库备份: /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
  
  mysql -u root -p < /path/to/backup.sql
    配置从服务器与主服务器举行复制:
  
  CHANGE MASTER TO
      MASTER_HOST='192.168.28.145',
      MASTER_USER='repl',
      MASTER_PASSWORD='password',
      MASTER_AUTO_POSITION=1;
    启动复制进程:
  
  START SLAVE;
    检查复制状态:
  
  SHOW SLAVE STATUS\G;
  
确保Slave_IO_Running和Slave_SQL_Running都显示为Yes,而且没有错误。

5. 验证配置

   在主服务器上创建一个新的数据库或表,并插入一些数据。然后检查两个从服务器上是否同步了这些更改。
  -- 在主服务器上
  
    CREATE DATABASE test_db;
  
  USE test_db;CREATE TABLE test_table (id INT PRIMARY KEY, value VARCHAR(100));INSERT INTO test_table (id, value) VALUES (1, 'Hello, world!');
  -- 在从服务器1和从服务器2上
   SHOW DATABASES;
  
  USE test_db;SELECT * FROM test_table;
  如果在从服务器上能看到主服务器上的更改,阐明GTID主从复制配置成功。
总结

   以上步骤详细先容了怎样配置MySQL基于GTID的一主两从复制。通过这种配置,可以确保数据在主从服务器之间的一致性和高可用性。记得在实际生产情况中,根据需要调解配置和举行安全性设置。
  MySQL基于GTID配置一主一从详解

 IP为
   master 192.168.28.145
  slave1 192.168.28.144
  
配置MySQL基于GTID(全局事务标识符)的主从复制是一项重要的任务,可以确保数据在多个服务器之间的一致性和高可用性。下面是一个详细的配置步骤和示例,
假设主服务器IP为192.168.28.145, 从服务器IP为192.168.28.144。

1. 预备工作

确保在两台服务器上都已经安装了MySQL,而且版本支持GTID(MySQL 5.6及以上)。
2. 配置主服务器(192.168.28.145)

编辑MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下配置:

   [mysqld]
  server-id = 1
  log-bin = mysql-binbinlog-format = ROWgtid-mode = ONenforce-gtid-consistency = ON
  
   重启MySQL服务以应用配置更改:
  
  sudo systemctl restart mysqld
  

   创建一个用于复制的用户,并授予必要的权限:
  
  CREATE USER 'repl'@'192.168.28.144' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.28.144';
  FLUSH PRIVILEGES;
  

   锁定数据库以举行快照(可选,但保举):
  
  FLUSH TABLES WITH READ LOCK;
  

   获取主服务器的二进制日志文件名和位置:
  
  SHOW MASTER STATUS;
  记下File和Position的值。

   备份数据库: /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
  mysqldump -u root -p --all-databases --master-data > /path/to/backup.sql
    解锁数据库:
  UNLOCK TABLES;
  3. 配置从服务器(192.168.28.144)

   编辑MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下配置:
  [mysqld]
  server-id = 2
  gtid-mode = ON
  enforce-gtid-consistency = ON
    重启MySQL服务以应用配置更改:
  sudo systemctl restart mysqld
    导入主服务器的数据库备份: /path/to/backup.sql  要改成你本身的路径比如/opt/backup-gid.sql 
  mysql -u root -p < /path/to/backup.sql 
    配置从服务器与主服务器举行复制:
  CHANGE MASTER TO
      MASTER_HOST='192.168.28.145',
      MASTER_USER='repl',
      MASTER_PASSWORD='password',
      MASTER_AUTO_POSITION=1;
    启动复制进程:
  START SLAVE;
    检查复制状态:
  SHOW SLAVE STATUS\G;
    确保Slave_IO_Running和Slave_SQL_Running都显示为Yes,而且没有错误。
  
4. 验证配置

在主服务器上创建一个新的数据库或表,并插入一些数据。然后检查从服务器上是否同步了这些更改。
-- 在主服务器上CREATE DATABASE test_db;
   USE test_db;CREATE TABLE test_table (id INT PRIMARY KEY, value VARCHAR(100));INSERT INTO test_table (id, value) VALUES (1, 'Hello, world!');
  -- 在从服务器上SHOW DATABASES;
    USE test_db;SELECT * FROM test_table;
  如果在从服务器上能看到主服务器上的更改,阐明GTID主从复制配置成功。
总结
以上步骤详细先容了怎样配置MySQL基于GTID的一主一从复制。通过这种配置,可以确保数据在主从服务器之间的一致性和高可用性。记得在实际生产情况中,根据需要调解配置和举行安全性设置。







免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表