1. 引言
数据迁移是一个常见的需求,比如以下的场景,我们都需要进行数据迁移。
- 大表修改表结构
- 单表拆分进行分库分表、扩容
- 系统重构,使用新的表结构来存储数据
2. 迁移准备
2.1 备份工具
2.1.1 mysqldump
mysqldump 是 MySQL 自带的用于备份和恢复的命令行工具。它允许用户导出 MySQL 数据库的结构、数据以及表之间的关系,以便在数据库发生问题时进行恢复。它是一个逻辑备份工具,导出的内容是一条条 SQL。
2.1.2 XtraBackup
它使用了 InnoDB 存储引擎的数据备份技术,支持增量备份和恢复,并且支持多主机备份和恢复。它是一个物理备份工具,相当于直接复制 InnoDB 的底层存储文件。
2.2 innodb_autoinc_lock_mode
innodb_autoinc_lock_mode 是 InnoDB 引擎里面控制自增主键生成策略的参数,它有三个取值。
- 0:使用表自增锁,在 INSERT 语句结束之后才会释放锁;
- 1:使用表自增锁,如果是普通的 INSERT INTO VALUE 或者 INSERT INTO VALUES 语句,申请了主键就释放锁,而不是整个 INSERT 语句执行完毕才释放。如果是 INSERT SELECT 等语句,因为无法确定究竟要插入多少行,所以都是整个 INSERT 语句执行完毕才释放。
- 2:使用表自增锁,所有的语句都是申请了主键就立刻释放。
在执行 INSERT INTO VALUES 的时候,不管插入多少行,都只申请一次主键,一次申请够,这些主键必然是连续的,我们可以从第一个 ID 推测出全部 ID。
CREATE TABLE `kkk` (
`

最低0.47元/天 解锁文章
7366

被折叠的 条评论
为什么被折叠?



