当前位置: 首页 > news >正文

加快 MySQL 数据迁移

目录

一、先导

1. 自建目标实例

2. 配置目标主从

二、源导出

1. 生成查询用户权限的SQL语句

2. 生成权限的SQL语句

3. 生成创建非主键索引的SQL语句

4. 导出源库结构

5. 导出源库数据

三、目标导入

1. 目标实例设置

2. 创建用户与权限

3. 处理结构导出文件

4. 导入结构

5. 导入数据

6. 添加索引

四、后续

1. 配置到源的复制

2. 切换


一、先导

1. 自建目标实例


2. 配置目标主从


二、源导出

1. 生成查询用户权限的SQL语句

mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('show grants for \`',user,'\`@\`',host,'\`;') from mysql.user where user not like 'mysql.%';" -N > show_grants.sql

2. 生成权限的SQL语句

mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -N < show_grants.sql > grants.sql
sed -i 's/$/&;/g' grants.sql;

3. 生成创建非主键索引的SQL语句

mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('alter table ',table_schema,'.',table_name,' add ',concat('index ',index_name),' (',col,');') create_indexfrom (
select table_schema,table_name,index_name,group_concat(column_name order by seq_in_index) colfrom information_schema.statistics where table_schema in ('test', 'test_jhy') and index_name <> 'PRIMARY'group by table_schema,table_name,index_nameorder by table_schema,table_name,index_name) t;" -N > create_index.sql

4. 导出源库结构

# max_allowed_packet 不能大于目标库的值
mysqldump -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock --no-data --single-transaction --triggers --routines --events --set-gtid-purged=OFF --master-data=2 -e --max_allowed_packet=1073741824 -e --net_buffer_length=16384 --databases test test_jhy | gzip > dump_db.sql.gz

5. 导出源库数据

mysqldump -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock --single-transaction --set-gtid-purged=OFF --master-data=2 -e --max_allowed_packet=1073741824 -e --net_buffer_length=16384 --no-create-db --no-create-info --databases test test_jhy | gzip > dump_data.sql.gz


三、目标导入

1. 目标实例设置

bulk_insert_buffer_size=1073741824
innodb_buffer_pool_size=34359738368
innodb_flush_log_at_trx_commit=0
max_allowed_packet=1073741824
concurrent_insert=AUTO
innodb_autoinc_lock_mode=2

2. 创建用户与权限

mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < grants.sql

3. 处理结构导出文件

gunzip dump_db.sql.gz
# 删除除主键外的索引。不能删除主键,否则建表时遇到自增列报错:
# Incorrect table definition; there can be only one auto column and it must be defined as a key
sed -i '/ KEY `/d;' dump_db.sql
# 删除闭括号前的逗号
sed -i ':a;N;$!ba;s/,\n) ENGINE=InnoDB/\n) ENGINE=InnoDB/g' dump_db.sql

4. 导入结构

mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < dump_db.sql

5. 导入数据

gunzip dump_data.sql.gz
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < dump_data.sql

6. 添加索引

mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock < create_index.sql


四、后续

1. 配置到源的复制

# 查看复制坐标
more dump_data.sql-- 配置并启动复制
change master to
master_host='10.10.10.1',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='aaaaaaaaaaaa',
master_log_pos=xxxxxx;start slave;
show slave status\G

2. 切换

http://www.lryc.cn/news/151498.html

相关文章:

  • CANalyzer panel
  • 延迟队列的理解与使用
  • jQuery成功之路——jQuery的DOM操作简单易懂
  • C++ 学习系列 -- 智能指针 make_shared 与 make_unique
  • 贝叶斯神经网络 - 捕捉现实世界的不确定性
  • games101作业1
  • LeetCode 面试题 02.08. 环路检测
  • 【Linux】线程安全-生产者消费者模型
  • 优化(2) 2023/09/03
  • Swap and Reverse 题解
  • 单元测试:优雅编写Kotlin单元测试
  • 深度学习入门教学——卷积神经网络CNN
  • 【MySQL】MySQL系统变量(system variables)列表(mysqld --verbose --help的结果例)
  • Python学习之四 数据输入与输出
  • VBA技术资料MF51:VBA_在Excel中突出显示唯一值
  • Mqtt学习笔记--交叉编译移植(1)
  • Gateway的服务网关
  • 信息化发展18
  • TypeScript学习 + 贪吃蛇项目
  • YOLO-NAS详细教程-介绍如何进行物体检测
  • 容器没有命令时,如何查看进程、容器executable file not found in $PATH: unknown
  • 如何使用 Amazon EMR 在 Amazon EKS 上构建可靠、高效、用户友好的 Spark 平台
  • 国产IDE如何获得捐赠和风险投资
  • 【数学建模】清风数模正课5 相关性分析
  • Java设计模式:一、六大设计原则-03:里氏替换原则
  • jmeter 固定定时器
  • 【微服务部署】07-调用链追踪
  • 【C++入门】命名空间、缺省参数、函数重载、引用、内联函数
  • c++ 学习之 构造函数的使用规则
  • C++操作符重载的注意事项