免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

mysql【1】主從同步之人機(jī)交互自動(dòng)化配置腳本

:2024年09月11日 CSDN
分享到:

本文詳細(xì)描述了如何在MySQL中使用master.sh和slave.sh腳本進(jìn)行主從服務(wù)器的數(shù)據(jù)備份、同步用戶權(quán)限設(shè)置、配置文件生成以及驗(yàn)證主從狀態(tài)的過(guò)程。

首先將mysqlmasterbyslave文件夾(包含master.sh和slave.sh )貝到主服務(wù)器中,在主服務(wù)器上執(zhí)行master.sh

輸入序號(hào),確認(rèn)你要備份的數(shù)據(jù)庫(kù),將自動(dòng)導(dǎo)出你選擇的數(shù)據(jù)庫(kù)和先備份你的my.cnf文件,和配置my.cnf!

設(shè)置用于同步的用戶和密碼

選擇你的服務(wù)器IP,從服務(wù)器將查詢這個(gè)IP用于同步!

最后會(huì)生成配置文件tb.ini,

內(nèi)容如下

tbuser=xxxxx #同步用戶tbpwd=xxxxx #同步密碼File=mysql-bin.000009 #用于同步的日志文件Position=738 #日志文件位置IP=192.168.31.166 #服務(wù)器IPserver_uuid=ad35ab19-97bb-11eb-a83f-000c29c3cf9d #MYSQL的應(yīng)用ID標(biāo)識(shí),確保唯一,主從不能一樣!

把生成的所有文件拷貝到從服務(wù)器上??!

從服務(wù)器上執(zhí)行slave.sh!

輸入序號(hào),選擇要同步的數(shù)據(jù)庫(kù)!
等待執(zhí)行完畢,最后顯示如下圖!

表示主從同步狀態(tài)OK!

測(cè)試在主服務(wù)器上新增一個(gè)表!!并插入數(shù)據(jù)

從服務(wù)器上查看

同步完成!?。?/p>

master.sh內(nèi)容

變量相關(guān)內(nèi)容user請(qǐng)?zhí)顚?xiě)你mysql的管理員賬號(hào)!pwd填寫(xiě)你mysql的管理員密碼

###變量相關(guān)
data="zabbix"
user="root"
pwd="Zabbix@123"
backuppath="/winshare/backup"
###變量相關(guān)
clear
cnf=`find / -name "my.cnf" `
echo backup your $cnf
cp  $cnf `date +%F`"[master]"${cnf##*/}
 
items=(log-bin server-id binlog_format  auto-increment-offset auto-increment-increment)
values=(mysql-bin 1 mixed 1 10)
 
for (( i = 0; i < ${#items[@]}; i++ )); do
    #echo ${items[$i]}
    sed -i "/${items[$i]}.*/d" $cnf
    echo ${items[$i]}=${values[$i]} >>$cnf
done
mysql -uroot -pZabbix@123 -e "show databases;"|grep -Ev "Database"|awk '{i++}{print "a["i-1"]="$1}'>tmp.txt
while read line;do
    echo ${j:=0}:${line##*=}
    eval $line    
let j++
done <tmp.txt
echo "select your Synchronize data,such as 2"
read -p "" n
#binlog-ignore-db binlog-do-db
declare -r ignoredb="binlog-ignore-db" 
declare -r dodb="binlog-do-db"
sed -i "/${ignoredb}.*/d" $cnf
sed -i "/${dodb}.*/d" $cnf
 
for (( i = 0; i < ${#a[@]}; i++ )); do
    if [[ $i -ne $n ]]; then
        echo ${ignoredb}=${a[$i]} >>$cnf
    else
        echo ${dodb}=${a[$i]} >>$cnf    
    fi
done
 
systemctl restart mysqld
sleep 2
systemctl list-units --type=service|grep  -i -E "mysqld"|awk '{if($4=="running"&&$3=="active"){print $1",服務(wù)啟動(dòng)成功"}else{print $1",服務(wù)啟動(dòng)失敗,請(qǐng)檢查"}}'
 
 
read -p "設(shè)置用于同步的用戶" tbuser
read -p "設(shè)置用于同步的密碼" tbpwd
echo tbuser=${tbuser}|tee tb.ini
echo tbpwd=${tbpwd}|tee -a tb.ini
#sql="show global variables like 'validate_password%'" 密碼策略
mysql -u"${user}" -p"${pwd}" -e "GRANT REPLICATION SLAVE ON *.* TO '${tbuser}'@'%' IDENTIFIED BY '${tbpwd}';flush privileges;" -N
#mysql -u"${user}" -p"${pwd}" -e "SELECT HOST,USER,Repl_slave_priv,password_last_changed from mysql.user WHERE USER='${tbuser}';" -N
mysql -u"${user}" -p"${pwd}" -e "show grants for ${tbuser};" -N
 
 
#備份數(shù)據(jù)庫(kù)
mysql -u"${user}" -p"${pwd}" -e "flush tables with read lock;" -N
mysqldump -u"${user}" -p"${pwd}" "${a[$n]}" -B -x> ./"${a[$n]}".sql
mysql -u"${user}" -p"${pwd}" -e "unlock tables;" -N
mysql -u"${user}" -p"${pwd}" -e "show master status\G;" |awk -F : '/File|Position/ {print $1"="$2 }'|tr -d " "|tee -a tb.ini
 
#你服務(wù)器IP
echo please confirm your serverIP,such as 1
ifconfig | grep inet | awk '{print "["NR"]"$2}'
read -p "" ip
ifconfig | grep inet | awk 'NR=="'${ip}'"{print "IP="$2}'|tee -a tb.ini
 
#關(guān)鍵是取UUID,防止是克隆主機(jī)一樣!
mysql -u"${user}" -p"${pwd}" -e "show variables like '%server_uuid%'"|awk '/uuid/{print $1"="$2}'|tee -a tb.ini
 
———————————————— 
                            版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
                         
原文鏈接:https://blog.csdn.net/u014332402/article/details/134475802

slave.sh內(nèi)容

###變量相關(guān)
user="root"
pwd="Zabbix@123"
###變量相關(guān)
clear
find ./ -name "*.sql" -type f|awk '{i++}{print "a["i-1"]="$0 }' >tmp.txt
while read line;do
    eval $line    
done <tmp.txt
 
echo "select your Synchronize data,such as 0"
for (( i = 0; i < ${#a[@]}; i++ )); do
    name[$i]=`echo ${a[i]##*/}|awk '{gsub(".sql","",$0);print $0}'`
    echo "[${i}]${name[$i]}  Path:${a[i]}"
done
read -p "" sb
echo ${name[$sb]} 
 
if [[ ! -e ./tb.ini ]]; then
    echo tb.ini not exist! please check !!!
fi
while read line;do
    eval $line
done <./tb.ini
 
echo 用于同步的用戶 $tbuser
echo 用戶密碼 $tbpwd
echo 數(shù)據(jù)庫(kù)同步的日志文件 $File
echo 文件位置 $Position
echo 服務(wù)器IP $IP
echo 主服務(wù)器UUID ${server_uuid}
mysql -u${tbuser} -p${tbpwd} -h ${IP} -e "show grants for ${tbuser} ;"
if [[ $? -ne 0 ]]; then
    echo [master]mysqlserver can not connected! please check!!
    exit
fi 
cnf=`find / -name "my.cnf" `
echo backup your $cnf
cp  $cnf `date +%F`"[slave]"${cnf##*/}
 
items=(relay-log server-id)
values=(relay-log 2 information_schema performance_schema)
for (( i = 0; i < ${#items[@]}; i++ )); do
    #echo ${items[$i]}
    sed -i "/${items[$i]}.*/d" $cnf
    echo ${items[$i]}=${values[$i]} >>$cnf
done
sed -i "/replicate-ignore-db.*/d" $cnf
ignoredb=information_schema,performance_schema
echo $ignoredb | awk '{split($0,a,",");for(i in a) system("echo replicate-ignore-db="a[i]"|tee -a '${cnf}'")}'
 
#關(guān)鍵對(duì)比UUID,一樣是克隆機(jī)要改!
slave_uuid=$(mysql -u"${user}" -p"${pwd}" -e "show variables like '%server_uuid%'"|awk '$0~"uuid"{print $2}')
if [[ "${slave_uuid}" == "${server_uuid}" ]]; then
    echo UUID IS SAME! MUST UPDATE!
    read -p "press any key for continue!" s
    find / -name "auto.cnf"|while read line;do
        echo auto backup $line!
        mv $line $line`date +%F`".bak"
    done
    
else
      echo  slave_uuid:${slave_uuid}
fi
 
#service mysqld restart
systemctl restart mysqld
sleep 2
systemctl list-units --type=service|grep  -i -E "mysqld"|awk '{if($4=="running"&&$3=="active"){print $1",服務(wù)啟動(dòng)成功"}else{print $1",服務(wù)啟動(dòng)失敗,請(qǐng)檢查"}}'
mysql -u${user} -p${pwd} < ${a[$sb]} 
 
sql="
STOP SLAVE;
CHANGE MASTER TO 
       MASTER_HOST='${IP}',
       MASTER_USER='${tbuser}',
       MASTER_PASSWORD='${tbpwd}',             
       MASTER_LOG_FILE='${File}',
       MASTER_LOG_POS=${Position};
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; 
START SLAVE;
"
mysql -u${user} -p${pwd} -e "${sql}"
 
systemctl restart mysqld
sleep 2
systemctl list-units --type=service|grep  -i -E "mysqld"|awk '{if($4=="running"&&$3=="active"){print $1",服務(wù)啟動(dòng)成功"}else{print $1",服務(wù)啟動(dòng)失敗,請(qǐng)檢查"}}'
 
mysql -u"${user}" -p"${pwd}" -e "show slave status\G;SHOW VARIABLES LIKE '%server_%';" 
 
 
 
 
 
———————————————— 
                            版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
                         
原文鏈接:https://blog.csdn.net/u014332402/article/details/134475802

————————————————

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。

原文鏈接:https://blog.csdn.net/u014332402/article/details/134475802

[我要糾錯(cuò)]
文:宋聰喬&發(fā)表于江蘇
關(guān)鍵詞: 首先 mysqlmasterbyslave 文件夾 包含 master.sh

來(lái)源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來(lái)源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁(yè)對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。

點(diǎn)個(gè)贊
0
踩一腳
0

您在閱讀:mysql【1】主從同步之人機(jī)交互自動(dòng)化配置腳本

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司

南京思必達(dá)教育科技有限公司版權(quán)所有   百度統(tǒng)計(jì)

主站蜘蛛池模板: 欧美日韩国产在线人成 | 天天摸天天躁天天添天天爽 | 欧美黄色成人 | 国产欧美日韩在线观看无需安装 | 午夜高清免费在线观看 | 国产一区二区三区在线看 | 黄色免费影视 | 欧美日韩一区二区在线视频播放 | 麻豆成人久久精品二区三区小说 | 日日日操操操 | 日韩免费大片 | 福利片影院 | 国产精品bbwbbwbbw | 免费一级欧美片在线观免看 | a毛片在线看片免费 | 国产91精品系列在线观看 | 久久亚洲综合网 | 丁香网五月| 最近中文字幕免费版在线 | 欧美色噜噜 | 最近的2019中文字幕免费一页 | 国产夜夜爽 | 很黄很色很爽无病毒网站 | 国外免费一级 | 一个人的视频日本免费 | 国产成人精品视频频 | 国产成人精品视频 | 看全色黄大色大片免费久久久 | 免费一看一级毛片人 | 亚洲欧美日韩中文在线 | 国产自产视频 | 人人看人人添人人谢 | 国产污污视频 | 日本欧美一区二区三区免费不卡 | 欧美日韩国产成人高清视频 | 久久精品国产无限资源 | 污黄视频在线观看 | 最近中文字幕完整在线看一 | 色婷婷狠狠久久综合五月 | 999www成人免费视频 | 欧美在线精品一区二区在线观看 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價(jià)格低
  • 蘋(píng)果原裝手機(jī)殼