正文
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. 数据库非常重要, 不要随意执行删除操作. 能够备份就备份呢.
要避免不必要的麻烦和事故.