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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 【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

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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
296 0
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
382 1
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
1864 4
|
消息中间件 NoSQL 关系型数据库
一文彻底搞定Redis与MySQL的数据同步
【10月更文挑战第21天】本文介绍了 Redis 与 MySQL 数据同步的原因及实现方式。同步的主要目的是为了优化性能和保持数据一致性。实现方式包括基于数据库触发器、应用层双写和使用消息队列。每种方式都有其优缺点,需根据具体场景选择合适的方法。此外,文章还强调了数据同步时需要注意的数据一致性、性能优化和异常处理等问题。
2831 0
|
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`语句,即可完成数据同步。
1504 1
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
1796 0
|
分布式计算 关系型数据库 MySQL
MySQL超时参数优化与DataX高效数据同步实践
通过合理设置MySQL的超时参数,可以有效地提升数据库的稳定性和性能。而DataX作为一种高效的数据同步工具,可以帮助企业轻松实现不同数据源之间的数据迁移。无论是优化MySQL参数还是使用DataX进行数据同步,都需要根据具体的应用场景来进行细致的配置和测试,以达到最佳效果。
|
分布式计算 关系型数据库 MySQL
MaxCompute产品使用合集之用flink mysql的数据同步到mc的Transaction Table2.0,时间会比mysql的时间多8小时,是什么导致的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
181 0
|
Java 关系型数据库 流计算
实时计算 Flink版操作报错合集之配置cats进行从MySQL到StarRocks的数据同步任务时遇到报错,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
550 0

热门文章

最新文章

推荐镜像

更多