简介
此脚本用于在两个
MySQL
实例间同步数据,基于
mysqldump
和
mysql
进行数据同步。可选择全量、单库、单表、多表、指定文件同步表的多种同步方式,常见使用场景如:生产库同步数据至测试库、表在线备份、搭建主从等场景。并且可以通过调整
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
# 添加权限chmod700 data_sync.sh
# 修改参数定义vim data_sync.sh # 编辑账号密码信息# 运行脚本sh data_sync.sh --sync_type=[type][options]# 后台运行nohupsh data_sync.sh --sync_type=[type][options]&# 后台运行适用于数据量大的情况
参数
--sync_type=[all|database|table] # 指定同步类型 (同步整个实例/同步数据库/同步表)
--source_database=<源库名> # 指定源数据库名
--target_database=<目标库名> # 指定目标数据库名
--table=<表名> # 指定单个表同步或多个表(多个表用 , 分隔)
--table_file=<文件路径> # 指定列出表名的文件路径 适用于表多的情况
常见用法
创建账号
使用前创建具有权限的同步用户
# 创建账号createuser your_user@'%' identified by'your_password';# 授权账号grantallon*.*to your_user@'%';# 刷新权限信息
flush privileges;# 同步结束后请删除用户# drup user your_user@'%';
在脚本开头配置连接信息
vim data_sync.sh
# 配置源数据库和目标数据库的连接信息SOURCE_HOST="10.0.0.1"# 源 IPSOURCE_PORT=3306# 源端口SOURCE_USER="your_user"# 源用户SOURCE_PASSWORD='your_password'# 源密码TARGET_HOST="10.0.0.2"# 目标 IPTARGET_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.log
和data_sync_mysql_xxx.log
-mysql
或mysqldump
命令的报错查看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
本脚本仅供学习交流,使用前请自行验证。
版权归原作者 hh真是个慢性子 所有, 如有侵权,请联系我们删除。