使用mysqlbinlog对主库binlog进行同步


#!/bin/bash
BASEDIR="/usr/local/mysql"
BIN="$BASEDIR/bin"
MYSQLBINLOG="$BIN/mysqlbinlog"
BINLOG_DIRECTORY="/usr/local/mysql/mysqldata/master_binlog_bak"

declare -A DICT_HOST
declare -A DICT_PORT
declare -A DICT_USER
declare -A DICT_PASSWORD
DICT_HOST=(["data1"]="192.168.1.108" ["data2"]="192.168.1.118" ["data3"]="192.168.1.110" )
DICT_PORT=(["data1"]="1234" ["data2"]="1234" ["data3"]="1234" )
DICT_USER=(["data1"]="replication" ["data2"]="replication" ["data3"]="replication" )
DICT_PASSWORD=(["data1"]="123" ["data2"]="123" ["data3"]="123" )



# get the last file name,input the file directory,get the last file`s name
get_last_file_name(){
    local DATANAME=$1
    LAST_FILE_DIRECTORY="$BINLOG_DIRECTORY/$DATANAME"
    LAST_FILE_NAME_NUMBER=`ls -l $LAST_FILE_DIRECTORY|tail -1|cut -d '.' -f 2`
    LAST_FILE_NAME="mysql-bin.$LAST_FILE_NAME_NUMBER"
    echo $LAST_FILE_NAME
}


# the mysqlbinlog replication function
start_mysqlbinlog(){
    local REMOTE_HOST=$1
    local PORT=$2
    local USER=$3
    local PASSWORD=$4
    local DATANAME=$5
    local LAST_BINLOG_NAME
    local RESULT_FILE_NAME=$6
    
    LAST_BINLOG_NAME=`get_last_file_name $DATANAME`
    #echo "/usr/local/mysql/bin/mysqlbinlog --raw --read-from-remote-server --stop-never --host=$REMOTE_HOST --port=$PORT --user=$USER --password=$PASSWORD $LAST_BINLOG_NAME --result-file=$RESULT_FILE_NAME  &"
    $MYSQLBINLOG --raw --read-from-remote-server --stop-never --host=$REMOTE_HOST --port=$PORT --user=$USER --password=$PASSWORD $LAST_BINLOG_NAME --result-file=$RESULT_FILE_NAME  &
    }


for DATA in {"data1","data2","data3"}
    do
        RESULT_FILE_FORMAT="$BINLOG_DIRECTORY/$DATA/back-"
        [ `ps -ef|grep mysqlbinlog|grep $DATA|wc -l` -eq 0 ] && start_mysqlbinlog `echo ${DICT_HOST["$DATA"]}` `echo ${DICT_PORT["$DATA"]}` `echo ${DICT_USER["$DATA"]}` `echo ${DICT_PASSWORD["$DATA"]}` $DATA $RESULT_FILE_FORMAT
done


        

  以字典的形式,将所有三个实例的信息存放到不同的字典中,通过循环,启动同步服务。

  字典实际上就是键值对的形式,通过键获取值。使用${dict[key]}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM