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

 

posted @ 2022-09-22 11:38  一只竹节虫  阅读(1300)  评论(0编辑  收藏  举报