首页
学习
活动
专区
圈层
工具
发布

mysql修改server uuid

基础概念

MySQL的server_uuid是一个全局唯一的标识符,用于区分不同的MySQL实例。它在MySQL服务器启动时自动生成,并存储在auto.cnf文件中。server_uuid在复制和集群环境中尤为重要,因为它帮助节点识别彼此。

修改server_uuid的原因

在某些情况下,可能需要修改server_uuid,例如:

  1. 复制环境:在主从复制环境中,如果主服务器和从服务器的server_uuid相同,会导致复制失败。
  2. 集群环境:在MySQL集群中,如果多个节点的server_uuid相同,会导致节点冲突。
  3. 故障恢复:在某些故障恢复场景中,可能需要手动更改server_uuid以避免冲突。

修改方法

1. 停止MySQL服务

首先,停止MySQL服务:

代码语言:txt
复制
sudo systemctl stop mysql

2. 备份auto.cnf文件

备份auto.cnf文件以防止数据丢失:

代码语言:txt
复制
sudo cp /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak

3. 生成新的server_uuid

生成一个新的UUID:

代码语言:txt
复制
new_uuid=$(uuidgen)

4. 修改auto.cnf文件

编辑auto.cnf文件,将旧的server_uuid替换为新的UUID:

代码语言:txt
复制
sudo sed -i "s/server_uuid=[^"]*/server_uuid=$new_uuid/" /var/lib/mysql/auto.cnf

5. 启动MySQL服务

重新启动MySQL服务:

代码语言:txt
复制
sudo systemctl start mysql

注意事项

  1. 备份数据:在修改server_uuid之前,确保已经备份了所有重要数据。
  2. 测试环境:在生产环境中修改server_uuid之前,建议在测试环境中进行充分测试。
  3. 复制和集群:在修改server_uuid后,确保重新配置复制和集群环境,以避免潜在的问题。

应用场景

  • 主从复制:在主从复制环境中,如果发现复制失败,可能是由于server_uuid冲突导致的。
  • MySQL集群:在MySQL集群中,如果节点之间发生冲突,可能需要修改server_uuid以解决冲突。
  • 故障恢复:在某些故障恢复场景中,可能需要手动更改server_uuid以避免冲突。

参考链接

通过以上步骤,你可以成功修改MySQL的server_uuid,并解决相关的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql java uuid_Java生成UUID 与 MySQL数据库如何生成uuid数据

UUID 来作为数据库数据表主键是非常不错的选择,保证每次生成的UUID 是唯一的。 UUID的唯一缺陷在于生成的结果串会比较长。...a.生成 UUID public static voidmain(String[] args) {for(int i=0;i<10;i++){ String uuid= UUID.randomUUID...* @return String UUID*/ public staticString getUUID(){ String uuid=UUID.randomUUID().toString();//...去掉“-”符号 return uuid.replaceAll(“-“, “”); } 二、MySQL数据库如何批量插入不重复uuid数据 第一步:先把需要查询的数据列出来select UUID(), a.Code...生成UUID /*只能生成一条*/SELECT REPLACE(UUID(),’-‘,”) AS id;/*在数据库中找一张数据多的表执行生成多条*/SELECT (REPLACE(UUID(),’-‘

6K30
  • MySQL中存储UUID的最佳实践

    在MySQL中有一个UUID () 函数,通常用UUID做唯一标识,需要在数据库中进行存储。使用此函数可以让MySQL生成一个UUID值,并以VARCHAR(36)类型的可读形式返回。...但是对于像MySQL的InnoDB存储引擎来说,使用UUID作为主键(PRIMARY KEY)会带来一些问题。 1、问题阐述 问题一:UUID的长度问题 UUID的长度为36个字符。...如果这样的UUID作为主键的话,不仅会是主键的尺寸很大,而且会使二级索引的尺寸变大,原因是MySQL中的二级索引的value存的是PRIMARY KEY。...由于主键和二级索引的尺寸很大,所以不利于在内存中操作 问题二:UUID的格式问题 MySQL的UUID ()使用的是version 1的UUID,该类型的UUID的特点是基于时间,它是一个128位的数字...那么我们可以使用虚拟列(MySQL5.7的新特性,虚拟列不占用存储空间)来存放文本形式的UUID。 然后,还有如何巧妙地重新排列二进制形式的字节的问题。

    11.1K30

    Mysql 8.0 更好的支持了 UUID

    定义了5个版本,MySQL 实现的是版本1,由 时间戳、UUID版本、MAC地址构成 好处 MySQL 中使用 UUID 是对 AUTO_INCREMENT PRIMARY KEY的一个很好的替代,有如下好处...keys 在不同 表、库、服务器 中都是唯一的 安全性更好,很难猜 可以离线生成 可以简化数据库复制 不足 但也有不好的地方: 增加了存储空间 增加了问题调试的难度 有性能问题,因为长度更长,并且无序 MySQL...8.0 的处理方法 MySQL8.0 新增了3个函数: UUID_TO_BIN BIN_TO_UUID IS_UUID 通过这3个函数,使我们可以更方便的应用UUID,并且是对上面提到的几点不足的一个解决方案...UUID_TO_BIN 用于对 UUID 字符串进行二进制压缩,32字符-->16bit BIN_TO_UUID 是相应的解压操作,16bit-->32字符 用法示例: 建表 CREATE TABLE...t (id binary(16) PRIMARY KEY); 插入 INSERT INTO t VALUES(UUID_TO_BIN(UUID())); 查询 SELECT BIN_TO_UUID(

    6K110

    为啥不能用uuid做MySQL的主键 ?

    在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,...本篇博客的目录 mysql程序实例 使用uuid和自增id的索引结构对比 总结 一、mysql和程序实例 1.1.要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid...,提升了页面的最大填充率,不会有页的浪费 ②新插入的行一定会在原有的最大数据行下一行,mysql定位和寻址很快,不会为计算新行的位置而做出额外的消耗 ③减少了页分裂和碎片的产生 2.2.使用uuid的索引内部结构...innodb在插入之前不得不先找到并从磁盘读取目标页到内存中,这将导致大量的随机IO ②因为写入是乱序的,innodb不得不频繁的做页分裂操作,以便为新的行分配空间,页分裂导致移动大量的数据,一次插入最少需要修改三个页以上...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。

    4.7K20

    MySQL数据迁移批量写UUID数据工作记录

    MySQL数据迁移批量写UUID数据工作记录 背景:最近在迁移表数据,需要向一张业务关联表批量写数据,所以需要批量生成uuid和时间等等数据 软件环境: Mysql5.0+ navicat 注意:遇到一个问题...replace(uuid() , '-' ,''),通过replace查询uuid,发现全都一样,所以批量写数据时候,不能使用replace,直接使用uuid()这个函数就可以批量生成uuid,然后再更新...uuid就行 使用uuid()才会生成不一样的uuid insert into t_catalog_division (CODE, CREATE_MAN, CREATE_MAN_NAME, CREATE_TIME...,UPDATE_MAN,UPDATE_MAN_NAME,UPDATE_TIME,valid,FROM_CATALOG_CODE,BUSINESS_DIVISION_CODE) SELECT UUID()...(select FORM_CATALOG_CODE from t_catalog_division where FORM_CATALOG_CODE = a.CODE) limit 100 批量更新主键uuid

    1.9K20

    测试修改gcs_server_processes参数

    而我们针对这种情况是建议RAC各节点使用相同的gcs_server_processes参数值,尽可能的确保稳定性。当然,最棒的选择还是用同样的硬件。...1.模拟环境 2.修改参数 3.回退修改 1.模拟环境 我有一套Oracle 10.2.0.5 RAC (3 nodes)的RAC测试环境,之前每个虚拟机的CPU都是1,如今将节点2的CPU改为4。...2.修改参数 在节点2上操作,统一修改gcs_server_processes参数: alter system set gcs_server_processes = 1 scope=spfile sid...3.回退修改 可以使用reset回退修改: alter system reset gcs_server_processes scope=spfile sid='*'; --reset 回退 SYS@jy2...实验过程中看了下ASM实例的这个参数本来都是1,也就是不需要修改,实际大家有类似生产环境可以再确认下这个ASM实例上的gcs_server_processes参数是否都是1。

    1.3K50
    领券