跳至主要內容
检查名字是否重复

检查名字是否重复

检查名字是否重复是很常用的业务需求,本文推荐一种更省心、更少bug的做法。


levy大约 1 分钟JavaMySQLDaily
MySQL 命令行执行SQL的细节

MySQL 命令行执行SQL的细节

背景

经过调试与验证,我们可以确信自己编写的SQL是正确的,是时候到目标库执行SQL了!

但要小心,在正式环境中执行 SQL,也许会有意想不到的坑!

环境说明

先说明下我们的环境信息。

我们只能通过跳板机的终端连接 mysql、执行SQL,没有DBeaver、Navicat等工具可用。


levy大约 3 分钟DailyMySQL
数据备份案例:mysqldump实战

数据备份案例:mysqldump实战

背景

前面有讲数据迁移的案例(mysql-a -> mysql-b),其实在迁移前还少不了备份。

并且,因为不想停机迁移,因此还要新起一个数据库实例,记为 mysql-b',复制 mysql-b 的相关数据。这样就能在 mysql-b' 里验证迁移SQL的正确性,以确保 mysql-b 能不宕机完成数据迁移。

在这种情况下,就需要用到我们今天的主角,数据备份工具 mysqldump。


levy大约 4 分钟DailyMySQL
数据迁移案例:表AUTO_INCREMENT加10w

数据迁移案例:表AUTO_INCREMENT加10w

背景

项目要做数据迁移,要把 mysql-a 的数据,迁移至 mysql-b,同时 mysql-b 的数据不能丢失。

问题分析:

  1. 两个 mysql 实例的表的主键都是自增的,若直接合并,必然造成主键冲突。
  2. 可以修改某一方的主键后再迁移,但要注意后续不会因主键增长而发生冲突。

迁移思路:

  1. 由于 mysql-b 的数据更重要、且数据量更大,故决定修改 mysql-a 的数据的主键,方案是增加 10w(mysql-b 的单表数据不超过 10w条)
  2. mysql-b 的相应的表 AUTO_INCREMENT 加 10w
  3. 记得动手前先确保数据已备份

注意:

  • mysql-b 的数据量比 mysql-a 的大,所以 mysql-b 也直接设置 AUTO_INCREMENT 加10w。
  • 但如果 mysql-a的数量比较大,那是不可行的,此时 mysql-b 需要先 select 出每张表的最大id,作为需要增加的 AUTO_INCREMENT。

levy大约 2 分钟DailyMySQL
Beyond UTF-8, do you know utf8mb4 and utf8mb4_unicode_ci?

Beyond UTF-8, do you know utf8mb4 and utf8mb4_unicode_ci?

Background

Look at the DDL below, can you tell the meaning of CHARSET=utf8mb4 and COLLATE=utf8mb4_general_ci?

CREATE TABLE `my_table` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

That is the knowledge that today I want to share with you.


levy大约 2 分钟DailyVideoMySQL