shell脚本使用mysqldump+mysql同步线上库和测试库数据
【摘要】 实现同一台服务器不同数据库的单表同步
完整脚本
#!/bin/bash
# 执行方式
# bash demo.sh <table_name>
# 配置数据库账号密码
username='root'
password='123456'
# 配置数据源库 和 数据目标库
source_database='data'
target_database='d...
实现同一台服务器不同数据库的单表同步
完整脚本
#!/bin/bash
# 执行方式
# bash demo.sh <table_name>
# 配置数据库账号密码
username='root'
password='123456'
# 配置数据源库 和 数据目标库
source_database='data'
target_database='dev_data'
# 接收参数 表名
table_name=$1
if [ ! $table_name ]; then echo "error: 数据表名称未知" echo "执行方式: bash demo.sh <table_name>" exit
fi echo "开始同步..."
echo "$source_database.$table_name => $target_database.$table_name"
# 2>/dev/null 可以抑制警告信息
mysqldump -u"${username}" -p"${password}" $source_database $table_name 2>/dev/null \
| mysql -u"${username}" -p"${password}" $target_database 2>/dev/null \
&& echo "同步完成 success"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
可以根据需求自行修改
使用方式
$ bash demo.sh <table_name>
- 1
遇到的问题及解决
mysqldump: Couldn't execute '
SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')
FROM information_schema.COLUMN_STATISTICS
WHERE SCHEMA_NAME = 'admin_xlmstore_c' AND TABLE_NAME = 'tb_article';':
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
- 1
- 2
- 3
- 4
- 5
解决方法:
# 添加参数 --column-statistics=0
mysqldump --column-statistics=0 -h ip -u root -p dbname > db.sql;
- 1
- 2
同步不同主机数据
#!/bin/bash
# 执行方式
# bash sync_data.sh [table_name]
####################################################
# 参数配置
####################################################
# 数据源
source_host='127.0.0.1'
source_port='3306'
source_user='root'
source_password='123456'
source_database='data'
# 数据目标
target_host='127.0.0.1'
target_port='3306'
target_user='root'
target_password='123456'
target_database='data_dev'
# 可选接收参数 表名
table_name=$1
# if [ ! $table_name ]; then
# echo "error: 数据表名称未知"
# echo "执行方式: bash demo.sh <table_name>"
# exit
# fi
####################################################
# 脚本执行
####################################################
echo "开始同步..."
echo "$source_database.$table_name => $target_database.$table_name"
# 2>/dev/null 可以抑制警告信息
mysqldump \
--column-statistics=0 \
--host "${source_host}" \
--port "${source_port}" \
-u"${source_user}" \
-p"${source_password}" \
$source_database \
$table_name \
| mysql \
--host "${target_host}" \
--port "${target_port}" \
-u"${target_user}" \
-p"${target_password}" \
$target_database \
&& echo "同步完成 success"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/103208622
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)