分分鐘搭建MySQL一主多從環境(r12筆記第31天)
之前寫過一篇分分鐘搭建MySQL Group Replication的測試環境,如果我們在一臺伺服器上想搭建一主多從的測試環境,怎麼能夠分分鐘搞定呢,其實稍花點時間寫個指令碼即可搞定,無非就是把哪些程式化的東西整合起來,化繁為簡。能夠提高效率才是好。
搭建主從的環境,我們還是準備一個配置檔案init2.lst,裡面主要是埠和節點標示。
24801 s1 Y
24802 s2 N
24803 s3 N
24804 s4 N
24805 s5 N比如上面的寫法,就是我建立了5個節點,埠是第一列,第2列是節點的一個標示,生成的節點目錄名就是參考這個,第3列是節點的角色,比如一主四從。主為P,從為N
統一的引數檔案,這個地方是值得我們改進的地方,因為個別的配置化引數的不同,就無需指定多個引數檔案,可以動態生成。# 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
而這個功能主角就是整個指令碼內容了。
指令碼的內容如下:
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 有了之前的模板和基礎準備,整個過程大概也就一個小時就能夠在一個小時左右完成測試和練習。
我寫文章的這會兒,已經建立了快十多遍。所以分分鐘絕對不是噱頭。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2137063/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分分鐘搭建MySQL Group Replication測試環境(二)(r12筆記第41天)MySql筆記
- 分分鐘搭建MySQL Group Replication測試環境(r11筆記第83天)MySql筆記
- 分分鐘搭建Oracle環境Oracle
- 在eclipse中配置MySQL原始碼環境(r12筆記第14天)EclipseMySql原始碼筆記
- 使用pt工具檢測MySQL主從延遲(r12筆記第7天)MySql筆記
- MySQL自增列主從不一致的測試(r12筆記第37天)MySql筆記
- 新環境搭建Mysql主從MySql
- MySQL主從不一致發現的細小問題分析(r12筆記第63天)MySql筆記
- MySQL中的derived table(r12筆記第47天)MySql筆記
- MySQL原始碼安裝總結(r12筆記第12天)MySql原始碼筆記
- mysql8.0以後的版本,進行多主一從的叢集環境搭建MySql
- 一個IT人和ppt的故事(r12筆記第39天)筆記
- 玩足彩的一點感受(r12筆記第80天)筆記
- 筆記一:前期 docker 環境搭建筆記Docker
- 【Mysql】Mariadb多主一從的搭建MySql
- MySQL傳輸表空間小結(r12筆記第2天)MySql筆記
- MySQL service啟動指令碼淺析(r12筆記第59天)MySql指令碼筆記
- 記一次 MySQL 主從搭建MySql
- mysqldump的一點使用總結(r12筆記第81天)MySql筆記
- 駕考的一點總結(r12筆記第93天)筆記
- 騰訊雲使用筆記一: 環境搭建筆記
- MySQL中的binlog和redo淺析(r12筆記第5天)MySql筆記
- MySQL自增列的重複值問題(r12筆記第25天)MySql筆記
- MySQL無法建立表的問題分析(r12筆記第73天)MySql筆記
- mysql 5.7 多主一從的多源複製搭建MySql
- 歸零的心態(r12筆記第82天)筆記
- mysqlpump的效能測試(r12筆記第89天)MySql筆記
- mysql主從複製(一):一主多從MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- 一種Oracle快速的整合遷移方案(r12筆記第98天)Oracle筆記
- 我爸爸眼中的我(r12筆記第22天)筆記
- 我的女兒二三事(七)(r12筆記第58天)筆記
- 相同update語句在MySQL,Oracle的不同表現(r12筆記第30天)MySqlOracle筆記
- 用 Docker 構建 MySQL 主從環境DockerMySql
- Docker環境搭建redis叢集(主從模式)DockerRedis模式
- 總結一下這一百天來的收穫(r12筆記第100天)筆記
- Laravel 開發環境搭建-筆記Laravel開發環境筆記
- 學習筆記:MQTT環境搭建筆記MQQT