分分鐘搭建MySQL一主多從環(huán)境(r12筆記第31天)-創(chuàng)新互聯(lián)

   之前寫過一篇分分鐘搭建MySQL Group Replication的測試環(huán)境,如果我們在一臺服務(wù)器上想搭建一主多從的測試環(huán)境,怎么能夠分分鐘搞定呢,其實(shí)稍花點(diǎn)時(shí)間寫個(gè)腳本即可搞定,無非就是把哪些程式化的東西整合起來,化繁為簡。能夠提高效率才是好。

創(chuàng)新互聯(lián)為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì), 我們的網(wǎng)頁設(shè)計(jì)師為您提供的解決方案。

   搭建主從的環(huán)境,我們還是準(zhǔn)備一個(gè)配置文件init2.lst,里面主要是端口和節(jié)點(diǎn)標(biāo)示。

24801 s1   Y
24802 s2   N
24803 s3   N
24804 s4   N
24805 s5   N比如上面的寫法,就是我創(chuàng)建了5個(gè)節(jié)點(diǎn),端口是第一列,第2列是節(jié)點(diǎn)的一個(gè)標(biāo)示,生成的節(jié)點(diǎn)目錄名就是參考這個(gè),第3列是節(jié)點(diǎn)的角色,比如一主四從。主為P,從為N

統(tǒng)一的參數(shù)文件,這個(gè)地方是值得我們改進(jìn)的地方,因?yàn)閭€(gè)別的配置化參數(shù)的不同,就無需指定多個(gè)參數(shù)文件,可以動(dòng)態(tài)生成。# cat s2.cnf
[mysqld]
# server configuration
datadir=${base_data_dir}/${node_name}
basedir=${base_dir}
port=${port}
socket=${base_data_dir}/${node_name}/${node_name}.sock
server_id=${port}
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

而這個(gè)功能主角就是整個(gè)腳本內(nèi)容了。

腳本的內(nèi)容如下:

base_dir=/usr/local/mysql
base_data_dir=/home/data
pri_port=`cat init2.lst|grep Y|awk '{print $1}'`
pri_ip=127.0.0.1
pri_node=`cat init2.lst|grep Y|awk '{print $2}'`
function init_node
{
port=$1
node_name=$2
primary_flag=$3
${base_dir}/bin/mysqld --initialize-insecure --basedir=${base_dir} --datadir=${base_data_dir}/${node_name} --explicit_defaults_for_timestamp
chown -R mysql:mysql  ${base_data_dir}/${node_dir}
cp ${base_data_dir}/s2.cnf ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${base_data_dir}:'"${base_data_dir}:g"'' ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${base_dir}:'"${base_dir}:g"'' ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${node_name}:'"${node_name}:g"''  ${base_data_dir}/${node_name}/${node_name}.cnf
sed -i 's:${port}:'"${port}:g"''  ${base_data_dir}/${node_name}/${node_name}.cnf
chown -R mysql:mysql ${base_data_dir}/${node_name}
${base_dir}/bin/mysqld_safe --defaults-file=${base_data_dir}/${node_name}/${node_name}.cnf &
sleep  5
${base_dir}/bin/mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock  -e "show databases"
if [[ ${primary_flag} = 'Y' ]];then
mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock -e "
CREATE USER rpl_user@'%';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'rpl_pass';
FLUSH PRIVILEGES;
"
elif [[ ${primary_flag} = 'N' ]];then
echo ${pri_node}"primary"
echo ${pri_port}
mysqldump -P${pri_port} -S ${base_data_dir}/${pri_node}/${pri_node}.sock  --default-character-set=utf8 --single-transaction -R --triggers -q --all-databases  |mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock
echo "CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass' , MASTER_HOST='127.0.0.1',MASTER_PORT="${pri_port}",MASTER_AUTO_POSITION = 1"|mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock
mysql -P${port}  -S ${base_data_dir}/${node_name}/${node_name}.sock -e "
start slave;
show slave status\G;
"
else
   echo 'Please check variable primary_flag'
fi
}
#MAIN
while read line
do
echo ${seed_list}
init_node $line
done <init2.lst 有了之前的模板和基礎(chǔ)準(zhǔn)備,整個(gè)過程大概也就一個(gè)小時(shí)就能夠在一個(gè)小時(shí)左右完成測試和練習(xí)。

 我寫文章的這會兒,已經(jīng)創(chuàng)建了快十多遍。所以分分鐘絕對不是噱頭。

網(wǎng)站名稱:分分鐘搭建MySQL一主多從環(huán)境(r12筆記第31天)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.bm7419.com/article2/ihsoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)品牌網(wǎng)站設(shè)計(jì)云服務(wù)器企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營