Tidb异名恢复Mysql数据库的过程

发布时间 2023-08-10 21:47:23作者: 济南小老虎

Tidb异名恢复Mysql数据库的过程


背景

先说坑:
TiDB备份恢复的方式
1. mysqldump + mysql source 的方式.
2. mydumper + loader  tidb 的一个工具组件
3. lightning dumpling的备份恢复方式是
4. br backup restore 备份恢复的方式. 

好像除了方式1 都没提供明确的 更换数据库的备份呢恢复机制.
所以在数据库表不是非常大的情况下可能只能使用方式1 来进行处理. 

备份恢复的注意事项

mysqldump -uroot -p -h192.168.255.xx -P3306  Yourdatabase > /home/mysql/Yourdatabase.sql

# 需要注意 -d 是结构 -t 是数据, 数据库前面啥都不加是 架构 + 数据
# 输入密码就可以备份了. 

需要注意 这里有第二个坑. TiDB 非常号称是兼容 MySQL5.7 但是实际上还是有很多不一样的地方
比如字符集, 仅支持 utf8mb4. 并且排序部分的支持也非常有限, 需要执行如下SQL进行一些切换. 
当然可能不限于此. 不符合的部分需要继续进行替换. 

sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_bin/g'  /home/mysql/xxl.sql
sed -i 's/utf8mb3/utf8mb4/g' /home/mysql/xxl.sql
sed -i 's/utf8mb3_bin/utf8mb4_bin/g' /home/mysql/xxl.sql

然后创建数据库:
create database NewDatabase

mysql -uroo -pxxxx -P4000 -h192.xx.xx.x 
use NewDatabase
source xxl.sql

就可以在当前use 的数据库里面执行数据库的备份与恢复了. 

其他注意事项

1. Mysqldump 和 source 的方式非常慢
在大量表时 速度可能仅仅比直接执行SQL快一点点. 
2. 数据库非常重要, 不要随意执行删除操作. 能够备份就备份呢. 
要避免不必要的麻烦和事故.