Mysql多表数据同步方案
1. 【my.cnf】里配置源库,目标库的数据库连接参数
样例:/etc/my.cnf 里
添加如下内容
#目标库
[mysql]
host=10.51.7.41
user=root
password=Mics@123
#源数据库
[mysqldump]
host=127.0.0.1
user=root
password=Mics@123
2. 同步数据的shell脚本如下(提前建好备份脚本存放目录)
#!/bin/bash # /etc/my.cnf 文件中配置源库和目标库数据库连接信息 sou_mysql_db_name='micssta' #源中央库名称 des_mysql_db_name='micssta' #目标车站库名称 # 两张数据库中相同的表的名字,同步哪些填哪些,空格相隔 sou_mysql_table_name=( BA_MODE_DEVICES MICS_APP_TYPE SE_ACTION_GROUP_MAP SE_PROFILE_PARAMETERS ENTITY ) # 存放备份sql文件的目录 sync_db_dir='/home/mysql/backup_sql' # 存放同步数据日志目录 log_file='/home/mysql/syncdata.log' func_writeLog(){ local getString=$1 if [ $? -eq 0 ];then echo "TIME:$(date +"%Y%m%d_%H:%M"),The ${getString}" echo "TIME:$(date +"%Y%m%d_%H:%M"),The ${getString}" >>${log_file} else echo "TIME:$(date +"%Y%m%d_%H:%M"),The ${getString}" echo "TIME:$(date +"%Y%m%d_%H:%M"),The ${getString}" >>${log_file} fi } func_sourceBackupCmd(){ for tabname in $(echo ${sou_mysql_table_name[@]}|sed 's/ / /g');do home=/etc /usr/local/mysql/bin/mysqldump \ --insert-ignore=true \ --default-character-set=utf8 \ -t ${sou_mysql_db_name} ${tabname} >${sync_db_dir}/${sou_mysql_db_name}_${tabname}.sql func_writeLog "${sou_mysql_db_name}_${tabname}.sql backup ok" done } func_syncMysqlCmd(){ for sqlname in $(ls ${sync_db_dir}/*.sql);do home=/etc /usr/local/mysql/bin/mysql \ --default-character-set=utf8 ${des_mysql_db_name} < ${sqlname} func_writeLog "${sqlname} load ok" [ $? -eq 0 ] && rm -f ${sqlname} func_writeLog "${sqlname} deleted ok" done } main(){ func_sourceBackupCmd; func_syncMysqlCmd; } main
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了