shell 脚本部署nginx 双主多从,一主多从模式。(基于docker)

我做了一个导航站(域名是挂路灯的全拼gualudeng.com),里面精选了各种影视,动漫,黑科技,实用工具,搞笑有趣的站点,动动大家可爱的小手,点进来看看吧,良心站点。

1.目录结构

├─mysql1             
│  │  build.sh       
│  │  del_data.sh    
│  │  test.txt       
│  │                 
│  ├─mysql_master    
│  │  │  Dockerfile  
│  │  │  my.cnf      
│  │  │              
│  │  └─data         
│  ├─mysql_master1   
│  │  │  Dockerfile  
│  │  │  my.cnf      
│  │  │              
│  │  └─data         
│  ├─mysql_slave     
│  │  │  Dockerfile  
│  │  │  my.cnf      
│  │  │              
│  │  └─data         
│  └─mysql_slave1    
│      │  Dockerfile 
│      │  my.cnf     
│      │             
│      └─data        
└─mysql2             
    │  build.sh      
    │  del_data.sh   
    │                
    ├─mysql_master   
    │  │  Dockerfile 
    │  │  my.cnf     
    │  │             
    │  └─data        
    └─mysql_slave    
        │  Dockerfile
        │  my.cnf    
        │            
        └─data       

2.脚本文件

#!/bin/bash
#自动化配置mysql主从复制(双主双从)

master="mysql1-master"
master_ip="192.168.33.10"
slaves=(mysql1-slave)

master1="mysql1-master1"
master1_ip="192.168.33.10"
slaves1=(mysql1-slave1)
#数据库密码
mysql_pwd="fangzq"
grant_user="deng" #授权用户名
grant_pwd="123456"

#获取容器的端口号
get_port(){
	docker inspect $1 | grep HostPort | awk -F'"' 'NR==1{print $4}'
}

#生成slave配置master语句

#-e后面要加双引号
get_master(){
	conn_cmd='mysql -uroot -p'${mysql_pwd}' -e "'
	slave_master="CHANGE MASTER TO MASTER_HOST='$4',
        MASTER_USER='${grant_user}',
        MASTER_PASSWORD='${grant_pwd}',
        MASTER_LOG_FILE='$2',
        MASTER_LOG_POS=$3,master_port=$(get_port $1);start slave;"
    conn_cmd+=$slave_master
    conn_cmd+='"'
}

#配置从服务器信息
set_slave(){
	status=`docker exec $1 sh -c "mysql -uroot -p$mysql_pwd -e 'show master status'"`
	file=$(echo $status | awk '{print $6}')
	position=`echo $status | awk '{print $7}'`
	for slave in $2;do
		get_master $1 $file $position $3
		docker exec $slave sh -c "$conn_cmd"  #注意这里的引号
		echo "服务器$1配置结果:\n"
		docker exec $slave sh -c "mysql -uroot -p${mysql_pwd} -e 'show slave status \G'" | grep "Running"
	done
}

#为每一个master建立授权用户
grant='GRANT REPLICATION SLAVE ON *.* TO "'$grant_user'"@"%" IDENTIFIED BY "'$grant_pwd'"; FLUSH PRIVILEGES;'
docker exec $master sh -c "mysql -uroot -p$mysql_pwd -e '$grant'"
docker exec $master1 sh -c "mysql -uroot -p$mysql_pwd -e '$grant'"




#配置从服务器信息
set_slave $master ${slaves[@]} $master_ip
set_slave $master1 ${slaves1[@]} $master1_ip

#配置两个主服务器之间相互复制
set_slave $master $master1 $master_ip
set_slave $master1 $master $master1_ip



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值