2.2.2 TiDB配置
# TiDB配置优化 [tidb] ti_server_memory_limit = 16G txnsize_limit = 104857600 max-server-connections = 3000风哥提示: [pd] schedule.leader-schedule-limit = 4 schedule.region-schedule-limit = 2048 schedule.replica-schedule-limit = 64 [raftstore] raftdb.defaultcf.compression-per-level = ["no", "no", "lz4", "lz4", "lz4", "lz4", "lz4"]
2.3 网络规划
- 网络带宽:建议10Gbps以上,确保数据传输速度
- 网络延迟:控制在1ms以内,减少同步延迟
- 网络隔离:使用专用网络,避免其他业务影响
- 防火墙配置:开放必要的端口,如MySQL 3306、TiDB 4000、PD 2379等
# 查看MySQL数据库大小
mysql -u root -p -e “SELECT table_schema AS ‘Database’, SUM(data_length + index_length) / 1024 / 1024 AS ‘Size (MB)’ FROM information_schema.tables GROUP BY table_schema;”
mysql -u root -p -e “SELECT table_schema AS ‘Database’, SUM(data_length + index_length) / 1024 / 1024 AS ‘Size (MB)’ FROM information_schema.tables GROUP BY table_schema;”
# 在MySQL中创建迁移用户
CREATE USER ‘dm_user’@’%’ IDENTIFIED BY ‘password’;
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘dm_user’@’%’;
CREATE USER ‘dm_user’@’%’ IDENTIFIED BY ‘password’;
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘dm_user’@’%’;
# 在TiDB中创建迁移用户
CREATE USER ‘dm_user’@’%’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON *.* TO ‘dm_user’@’%’;
# 安装DM
tiup install dm
tiup dm deploy dm-master 1.0.0 192.168.1.10:8261 –user root -p
tiup dm deploy dm-worker 1.0.0 192.168.1.11:8262 192.168.1.12:8262 –user root -p
tiup install dm
tiup dm deploy dm-master 1.0.0 192.168.1.10:8261 –user root -p
tiup dm deploy dm-worker 1.0.0 192.168.1.11:8262 192.168.1.12:8262 –user root -p
3.2 迁移方案选择
| 迁移工具 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| DM | 大规模数据迁移,需要增量同步 | 支持全量+增量,自动化程度高 | 配置复杂,资源消耗大 |
| DTS | 云环境迁移,中小规模数据 | 操作简单,可视化管理 | 可能产生额外费用 |
| mysqldump | 小数据量,简单场景 | 使用简单,无需额外工具 | 迁移时间长,需要停机 |
| mydumper/myloader | 中等数据量,需要并行导入 | 并行处理,速度快 | 需要额外工具支持 |
3.3 DM迁移配置
# 数据源配置 - source.toml
[source.mysql-1]
type = "mysql"学习交流加群风哥QQ113257174
host = "192.168.1.5"
port = 3306
user = "dm_user"
password = "password"
# 任务配置 - task.toml
name = "mysql-to-tidb"
task-mode = "all"
target-database:
host = "192.168.1.20"
port = 4000
user = "dm_user"
password = "password"
mysql-instances:
- source-id: "mysql-1"
block-allow-list:
bw-rule-1:
database: "test"
table: "%"
sync:
worker-count: 16
batch-size: 10000
enable-ansi-quotes: true
safe-mode: true
3.4 执行迁移
- 启动DM服务:
tiup dm start dm-master
tiup dm start dm-worker - 添加数据源:
tiup dmctl –master-addr 192.168.1.10:8261 operate-source create source.toml
- 启动迁移任务:
tiup dmctl –master-addr 192.168.1.10:8261 start-task task.toml
- 监控迁移进度:
tiup dmctl –master-addr 192.168.1.10:8261 query-status mysql-to-tidb
3.5 迁移后验证
- 数据量验证:
# 对比MySQL和TiDB的数据量
# MySQL
mysql -u root -p -e “SELECT COUNT(*) FROM test.table;”
# TiDB
mysql -h 192.168.1.20 -P 4000 -u root -p -e “SELECT COUNT(*) FROM test.table;” - 数据一致性验证:
# 使用checksum验证
# MySQL
mysql -u root -p -e “CHECKSUM TABLE test.table;”
# TiDB
mysql -h 192.168.1.20 -P 4000 -u root -p -e “CHECKSUM TABLE test.table;” - 应用验证:
- 连接应用到TiDB
- 执行关键业务操作
- 验证功能正常
更多视频教程www.fgedu.net.cn
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
