【MySQL】手把手教你MySQL数据同步

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【MySQL】手把手教你MySQL数据同步

简介

此脚本用于在两个 MySQL 实例间同步数据,基于 mysqldumpmysql 进行数据同步。可选择全量、单库、单表、多表、指定文件同步表的多种同步方式,常见使用场景如:生产库同步数据至测试库、表在线备份、搭建主从等场景。并且可以通过调整 mysqldump的备份参数,实现其他种类的同步。

也可以将mysqldump替换成 mydumper 多线程工具,加速数据同步。

项目地址:https://gitee.com/hh688/data_sync

功能

  • 全量数据同步
  • 单库数据同步
  • 单表数据同步
  • 多表数据同步
  • 文件列表数据同步

使用脚本

# 安装格式转换工具
yum install -y dos2unix
# 下载脚本
curl -o data_sync.sh https://gitee.com/hh688/data_sync/raw/master/data_sync.sh
# 转换格式
dos2unix data_sync.sh
# 添加权限
chmod 700 data_sync.sh
# 修改参数定义
vim  data_sync.sh  # 编辑账号密码信息
# 运行脚本
sh data_sync.sh --sync_type=[type]  [options]
# 后台运行
nohup sh data_sync.sh --sync_type=[type]  [options]   &  # 后台运行适用于数据量大的情况

参数

--sync_type=[all|database|table]  # 指定同步类型 (同步整个实例/同步数据库/同步表)
  --source_database=<源库名>         # 指定源数据库名
  --target_database=<目标库名>       # 指定目标数据库名
  --table=<表名>                     # 指定单个表同步或多个表(多个表用 , 分隔)
  --table_file=<文件路径>             # 指定列出表名的文件路径 适用于表多的情况

常见用法

创建账号

使用前创建具有权限的同步用户

# 创建账号
create user your_user@'%' identified by 'your_password';  
# 授权账号
grant all on *.* to your_user@'%';
# 刷新权限信息
flush privileges;
# 同步结束后请删除用户
# drup user your_user@'%';

在脚本开头配置连接信息

vim data_sync.sh
# 配置源数据库和目标数据库的连接信息
SOURCE_HOST="10.0.0.1"  # 源 IP
SOURCE_PORT=3306        # 源端口
SOURCE_USER="your_user" # 源用户
SOURCE_PASSWORD='your_password' # 源密码
TARGET_HOST="10.0.0.2"  # 目标 IP
TARGET_PORT=3306        # 目标端口
TARGET_USER="your_user" # 目标用户
TARGET_PASSWORD="your_password"  # 目标密码

全量同步

同步整个实例的数据

适用于搭建主从或搭建测试库

./data_sync.sh --sync_type=all
# --sync_type=all  同步类型选择全量同步

同步库

同步单个数据库的数据

./data_sync.sh --sync_type=database --source_database=test --target_database=test1
# --sync_type=database     同步类型选择数据库 必选参数
# --source_database=test   选择源库为 test  必选参数
# --target_database=test1  选择目标库为 test1  // 可选参数,默认和源库名保持一致

同步表

同步单表或多表

./data_sync.sh --sync_type=table  --source_database=test --table=table1,table2,table3  --target_database=test1
# --sync_type=table        同步类型选择表   // 必选参数
# --table=table1,table2    选择需要同步的表(多表时用","分隔) // 必选参数
# --source_database=test   选择源库为 test  // 必选参数
# --target_database=test1  选择目标库为 test1  // 可选参数,默认和源库名保持一致

同步文件内的表

将表名写入到文件中,适用于需要同步的表较多的情况

./data_sync.sh --sync_type=table  --source_database=test --table_file=./table_file.txt --target_database=test1
# --sync_type=table        同步类型选择表     // 必选参数
# --table_file=./file.txt  保存表名的文件路径  // 必选参数
# --source_database=test   选择源库为 test    // 必选参数
# --target_database=test1  选择目标库为 test1  // 可选参数,默认和源库名保持一致

后台运行

后台运行脚本 防止退出

nohup ./data_sync.sh 参数··· &

小技巧

  • 同步数据量较大时尽量使用nohup运行脚本
  • 脚本包含两个日志文件data_sync_xxx.logdata_sync_mysql_xxx.log
  • mysqlmysqldump 命令的报错查看 data_sync_mysql_xxx.log即可
  • 脚本报错和同步信息查看 data_sync_xxx.log即可
  • 使用前检查你的 mysql 版本是否支持 GTID 并在 MYSQLDUMP_SOURCE_CONN变量中修改备份的参数
  • 所有备份参数都可以在 MYSQLDUMP_SOURCE_CONN 变量中修改
  • 常见需要修改的参数
mysqldump:
  -R, --routines     # 备份存储过程
  -E, --events       # 备份事件
  --triggers         # 备份触发器
  --ignore-table     # 忽略表
  --set-gtid-purged  # 是否记录 GTID

本脚本仅供学习交流,使用前请自行验证。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
120 1
|
2月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
628 4
|
30天前
|
消息中间件 NoSQL 关系型数据库
一文彻底搞定Redis与MySQL的数据同步
【10月更文挑战第21天】本文介绍了 Redis 与 MySQL 数据同步的原因及实现方式。同步的主要目的是为了优化性能和保持数据一致性。实现方式包括基于数据库触发器、应用层双写和使用消息队列。每种方式都有其优缺点,需根据具体场景选择合适的方法。此外,文章还强调了数据同步时需要注意的数据一致性、性能优化和异常处理等问题。
333 0
|
3月前
|
SQL 关系型数据库 MySQL
“震撼揭秘!Flink CDC如何轻松实现SQL Server到MySQL的实时数据同步?一招在手,数据无忧!”
【8月更文挑战第7天】随着大数据技术的发展,实时数据同步变得至关重要。Apache Flink作为高性能流处理框架,在实时数据处理领域扮演着核心角色。Flink CDC(Change Data Capture)组件的加入,使得数据同步更为高效。本文介绍如何使用Flink CDC实现从SQL Server到MySQL的实时数据同步,并提供示例代码。首先确保SQL Server启用了CDC功能,接着在Flink环境中引入相关连接器。通过定义源表与目标表,并执行简单的`INSERT INTO SELECT`语句,即可完成数据同步。
338 1
|
3月前
|
SQL canal 关系型数据库
(二十四)全解MySQL之主从篇:死磕主从复制中数据同步原理与优化
兜兜转转,经过《全解MySQL专栏》前面二十多篇的内容讲解后,基本对MySQL单机模式下的各方面进阶知识做了详细阐述,同时在前面的《分库分表概念篇》、《分库分表隐患篇》两章中也首次提到了数据库的一些高可用方案,但前两章大多属于方法论,并未涵盖真正的实操过程。接下来的内容,会以目前这章作为分割点,开启MySQL高可用方案的落地实践分享的新章程!
1634 1
|
3月前
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
746 0
|
4月前
|
分布式计算 关系型数据库 MySQL
MySQL超时参数优化与DataX高效数据同步实践
通过合理设置MySQL的超时参数,可以有效地提升数据库的稳定性和性能。而DataX作为一种高效的数据同步工具,可以帮助企业轻松实现不同数据源之间的数据迁移。无论是优化MySQL参数还是使用DataX进行数据同步,都需要根据具体的应用场景来进行细致的配置和测试,以达到最佳效果。
|
4月前
|
分布式计算 关系型数据库 MySQL
MaxCompute产品使用合集之用flink mysql的数据同步到mc的Transaction Table2.0,时间会比mysql的时间多8小时,是什么导致的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
Java 关系型数据库 流计算
实时计算 Flink版操作报错合集之配置cats进行从MySQL到StarRocks的数据同步任务时遇到报错,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
348 0

热门文章

最新文章