Open Group于1997年10月发布,UUID遵从此协议。

UUID被设计成一个在空间和时间上的唯一值。两次调用的UUID将产生两个不同的值,即使这些调用是在两个不连接的,彼此独立的计算机。

由一串数字表示

aaaaaaaa-bbbb-cccc

-

dddd

-

eeeeeeeeeeee

format:

mysql> SELECT UUID(); -> '6ccd780c-baba-1026-9564-0040f4311e29'

虽然UUID()值是唯一的,但它们不一定是不可猜测的或不可预测的。如果需要不可预测性,UUID值应该以其他方式生成。

UUID

不基于statement replication.

The

first three numbers

are generated from a timestamp.

The

fourth number

preserves temporal uniqueness in case the timestamp value loses monotonicity (for example, due to daylight saving time).

由于夏令时导致的

The

fifth number

is an IEEE 802 node number that provides spatial uniqueness. A random number is substituted if the latter is not available (for example, because the host computer has no Ethernet card, or we do not know how to find the hardware address of an interface on your operating system). In this case, spatial uniqueness cannot be guaranteed. Nevertheless, a collision should have

very

low probability.

第五个数字是,它提供空间唯一一个IEEE802节点号。

The MAC address of an interface is taken into account only on FreeBSD and Linux. On other operating systems, MySQL uses a randomly generated 48-bit number.

uuid我在百度百科上也看到了... ...

1 2 3

段是与时间有关的。

time_low

time_mid

time_high_and_version

转成

16

进制后分别对应第

1 2 3

段。这个时间是从

1582-10-15 00:00:00.00

到当前时间的

100ns

值。(实际上系统只能取到精确

us

,再乘以

10

)。所以你短时间连续执行的话,比较可能只有第一个值在改,实际上

1 2 3

都可能会改变。

4

段是你启动这个

MySQL

后第一次执行

select uuid()

时的随机数,每次重启会改变。

5

段是

mac

值转过来的,同一个机器多实例的一般相同。如果

mac

值获取不到,则是一个随机值。

所以这个值可以认为是每次执行都不相同。并且不同实例之间也只有极微小概率重复。

Returns a

short

universal identifier as a 64-bit unsigned integer (rather than a string-form 128-bit identifier as returned by the

UUID()

function).

The value of

UUID_SHORT()

is guaranteed to be unique if the following conditions hold:

The

UUID_SHORT()

return value is constructed this way:

(server_id & 255) <

+ (server_startup_time_in_seconds <

+ incremented_variable++;

mysql> SELECT UUID_SHORT(); -> 92395783831158784

Note that

UUID_SHORT()

does not work with statement-based replication.

The

server_id

of the current host is unique among your set of master and slave servers

server_id

is between 0 and 255

You do not set back your system time for your server between

mysqld

restarts

uuid

返回固定长度字符串不同,

uuid_short

的返回值是一个

unsigned long long

类型。

MySQL

启动后第一次执行的值是通过

server_id << 56 + server_start_time << 24

来初始化。

server_start_time

单位是秒。

之后每次执行都加

1

由于每次加

1

都会加全局

mutex

锁,因此多线程安全,可以当作

sequence

来用,只是初始值有点大。

You do not invoke

UUID_SHORT()

on average more than 16 million times per second between

mysqld

restarts

In an

INSERT ... ON DUPLICATE KEY UPDATE

statement, you can use the VALUES(

col_name

) function in the

UPDATE

clause to refer to column values from the

INSERT

portion of the statement. In other words, VALUES(

col_name

) in the

UPDATE

clause refers to the value of

col_name

that would be inserted, had no duplicate-key conflict occurred. This function is especially useful in multiple-row inserts. The

VALUES()

function is meaningful only in the ON DUPLICATE KEY UPDATE clause of

INSERT

statements and returns NULL otherwise. See

Section 13.2.5.3, “INSERT ... ON DUPLICATE KEY UPDATE Syntax”

.

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

当开启gitd时,binlog中会多出gtid event,扫描binlog就会知道GTID对应的filename和position,主从日志落后很多,就会扫描很多binlog日志。

Previous_gtids表示这之前的binlog运行到的GTID的位置。GTID比当前值到就去扫这个binlog,比这个小就去扫描之前的binlog日志。

说到切换,有的时候主库恢复后,可能从库还没有应用完,虽然我们事先准备好了切换脚本,但是到这时候我们还是很犹豫的,经历过后会深有感触。金融行业不允许切半同步,

mysql gtid寻找位置_【MySQL】UUID与GTID以及如何根据GTID找寻filename和position相关推荐

  1. mysql查看脚本错误位置_记一次mysql启动不了查找经历

    在linux上用的是xampp,mysql启动没有报任何错误,但就是查找不到进程,于是找mysql错误日志,日志在哪?在lampp/var/mysql 以.err结尾的文件里.里面内容如下; /opt ...

  2. 查询mysql日志存储位置_查看mysql日志存放地点

    登录mysql终端 日志文件路径 mysql> show variables like 'general_log_file'; +------------------+------------- ...

  3. mysql运维技巧_​mysql初级运维使用技巧

    整理了一下,工作中用到的最高的关于mysql的一些命令和使用技巧,分享给刚接触mysql的小伙伴么. 1mysql最基础 1.1mysql安装 建议新人安装mysql直接使用yum安装即可,大牛们已经 ...

  4. 更改mysql数据库存放位置_更改mysql数据库存放位置

    由于要做一个数据库的测试,所以选了台虚拟机进行,无奈硬盘分的太小,数据太大. 只能把数据放到新的硬盘上.所以要更改数据库的存储位置. 1.新添加块硬盘,分区,挂载到/mysql下,新建lib文件夹. ...

  5. mysql修改binlog 位置_查看mysql 的binlog日志存放的位置(转)

    首先查看配置文件中是否启用Binlog日志 [Linux ~]#vim /etc/my.cnf my.cnf内容: log-bin = mysqlbin #默认配置 一般放在/var/lib/mysq ...

  6. 查看mysql 的配置文件位置_查看当前mysql使用的配置文件是哪个

    my.cnf是mysql启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载. 安装mysql后,系统中会有多个my.cnf文件,有些是用于测试的. 使用locate m ...

  7. centos 程序 mysql数据库文件位置_Centos mysql数据库存放位置更换

    由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,没有办法,只能想办法转移数据的目录. 下面我简单整理一下这几天把MySQL从/var/lib/mysql目录下面转移到/h ...

  8. mysql索引 钱缀_-MySQL索引背后的数据结构及算法原理--索引选择性与前缀索引

    既然索引可以加快查询速度,那么是不是只要是查询语句需要,就建上索引?答案是否定的.因为索引虽然加快了查询速度,但索引也是有代价的:索引文件本身要消耗存储空间,同时索引会加重插入.删除和修改记录时的负担 ...

  9. mysql存储引擎处理_[MySql学习笔记] 四 存储引擎事务处理

    MySql有一个重要的特征,被称为Pluggable Storage Engine Architecture(可替换存储引擎构架).有两个重要的存储引擎:MyISAM 和 InnoDB .其中MyIS ...

最新文章

  1. Outlook 2010如何更改脱机缓存数据OST文件位置?
  2. ALV 简单实现HTML抬头的方法 (介绍 一)
  3. 【c++面向对象编程】工资管理系统
  4. 链表实现c语言通讯录管理系统,C++链表实现通讯录管理系统.pdf
  5. PKU A Simple Problem with Integers 3468
  6. iis7.0 https访问显示403访问被拒绝_提高网站访问性能——Tomcat优化
  7. hdu 2612 Find a way (广搜)
  8. 微软开源的Trill是什么?
  9. 怎么单选_听力三个选项都出的单选怎么破?| 附今日听力S1S2及听力原文
  10. 数学与计算机科学奖王小云,2019 数学与计算机科学奖 获奖人 —— 王小云 - 未来科学大奖...
  11. 半导体丨索尼推出世界最小监控用CMOS图像传感器IMX415
  12. 算法(2)计算出101-200之间的素数
  13. 【新星计划】Matlab pid参数调节工具箱
  14. device no response, device descriptor read/64, error -71
  15. ValueError: Format specifier missing precision
  16. html 3D球状旋转标签云文字云效果
  17. hive时金额为科学记数法转为普通的数字
  18. muParser公式库使用简介( 转)
  19. EduCoder-程序设计技术R(第四部分循环结构程序设计1)- 第1关:小球自由落体运动
  20. csgo账号连接服务器错误,steam csgo连接服务器发生错误 | 手游网游页游攻略大全...

热门文章

  1. OC_KVC与KVO简单介绍
  2. 互联网企业安全高级指南3.6 需要自己发明安全机制吗
  3. java中GET方式提交和POST方式提交
  4. Android 从AndroidManifest获取meta-data
  5. dm365 resize
  6. xvid 数据编码和解码
  7. HALCON示例程序resistor.hdev通过不同焦距图像提取深度信息
  8. 四六级php,详解四六级查询API+网页
  9. sigmoid函数的数值稳定性
  10. 对勾函数_对勾函数?2020福建省中考压轴题分析