day08-04-迁移

大表快速迁移

# 注意事项:
1. 可传输表空间方案仅适用于Innodb引擎;
2. 表必须使用独立表空间(innodb_file_per_table=on);
3. 可传输表空间需要锁定目标表(如果已有其他锁,则等待),业务应提前进行评估;
4. discard tablespace 操作不支持分区表;
5. discard tablespace操作不支持所有福字关系的表(暂时禁用外键: foreign_key_checks=0,此时import tablespaces)时才不会检查主外键关系);


#################################################
# Step1 导出表 【源库操作】
# session_A 执行:
flush tables tbl_name for export;	# 刷新表脏数据,等待并添加锁表(同时生成tbl_name.cfg文件,存储表的数据字典信息)

# session_B 执行:【注意空间是否充足】
TMOUT=0
cd /data/mysql/data/

# 复制数据字典信息文件至目标库数据目录(目标库的主备节点都需要操作)
scp -pr tbl_name.cfg username@1.1.1.1:/tmp/

# 复制数据文件至目标库数据目录(目标库的主备节点都需要操作)
scp -pr tbl_name.ibd username@1.1.1.1:/tmp/

# session_A 执行:
# 解锁表
unlock tables;


# Step2 导入表 【目标库操作】
------------------------------------------------
警告! 千万务必确认正在操作的主机是目标主机,否则会造成数据丢失!!!
警告! 千万务必确认正在操作的主机是目标主机,否则会造成数据丢失!!!
警告! 千万务必确认正在操作的主机是目标主机,否则会造成数据丢失!!!
------------------------------------------------

# 1. 创建表结构
create table tbl_name ...		# 创建表结构(从源库获得创建语句,注意自增主键需要重置)
alter table tbl_name discard tablespace;		# 注意!!! 会删除表.ibd文件,请谨慎操作

# 2. 移动数据文件
su - root
mv /tmp/tbl_name* /data/mysql/data/
chown -R mysql. /data/mysql/data

# 3. 导入表空间
# 导入表(主备环境时,仅主库操作即可)
alter table tbl_name import tablespace;

# 验证数据量
select count(*) from tbl_name;

# 校验目标表
checksum table tbl_name;



#################################################

posted @   oldSimon  阅读(3)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示