首页 / MYSQL / 91.mysql主从配置自动部署
91.mysql主从配置自动部署
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了91.mysql主从配置自动部署,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2853字,纯文字阅读大概需要5分钟。
内容图文
![91.mysql主从配置自动部署](/upload/InfoBanner/zyjiaocheng/864/78aed62eda544b90b96973ae8d9082db.jpg)
#!/bin/bash
#The script is used for master-slave configuration.
#Date 2021-02-21
master_ip=192.168.32.1
slave_ip=192.168.32.2
mysql="/usr/local/mysql/bin/mysql -uroot -ppassword"
my_cnf=/etc/my.cnf
master_dir=/tmp/mysql_slave
pass="hSlneoT03j"
#检测命令是否执行成功
check_ok() {
if [ $? -ne 0 ];then
echo "$1 command is error."
exit 1
fi
}
#检测文件是否存在
file_exist() {
d=`date +%F-%T`
if [ -f $1 ];then
mv $1 $1_$d
fi
}
#判断是否含有serve-id配置项,无则添加
if ! grep '^server-id' $my_cnf;then
sed -i '/^\[mysqld\]$/a\server-id = 1001' $my_cnf
fi
#判断是否含有log-bin配置项,无则添加
if ! grep '^log-bin.*=.*' $my_cnf;then
sed -i '/^\[mysqld\]$/a\log-bin = maria_bin' $my_cnf
fi
#判断是否含有binlog-ignore-db配置项,无则添加
if ! grep '^binlog-ignore-db' $my_cnf;then
sed -i '/^log-bin.*/a\binlog-ignore-db = mysql' $my_cnf
fi
#重启mysql服务
systemctl restart mysql
#检测是否重启成功
check_ok "restart mysql"
#EOF赋值mysql从库账号密码
$mysql << EOF
grant replication slave on *.* to 'repl'@$slave_ip identified by '$pass';
flush tables with read lock;
EOF
#判断是否有该存放目录
[ -d $master_dir ] || mkdir -p $master_dir
#将master两个参数File和Position存放至master.log
$mysql -e "show master status" > $master_dir/master.log
file=`tail -1 $master_dir/master.log |awk '{ print $1}'`
pos=`tail -1 $master_dir/master.log |awk '{print $2}'`
#判断文件是否存在
file_exist $master_dir/slave.sh
a='EOF'#定义变量
#从库shell脚本
cat > $master_dir/slave.sh <<EOF
#!/bin/bash
check_ok() {
if [ $? -ne 0 ];then
echo "$1 command is error."
exit 1
fi
}
#判断my.cnf文件是否包含server-id配置项,无则添加
if ! grep '^server-id' /etc/my.cnf;then
sed -i '/\[mysqld\]$/a\server-id = 1002' /etc/my.cnf
fi
#重启服务
systemctl restart mysql
check_ok "slave mysql restart"
$mysql <<EOF
stop slave;
change master to master_host="$master_ip",master_user='repl',master_password="$pass",
master_log_file="$file",master_log_pos=$pos;
start slave;
$a#内嵌不能双EOF,用变量代替
EOF
#检测文件是否存在
file_exist $master_dir/rs_slave.expect
#内嵌expect交互脚本将slave.sh传输至从库
cat > $master_dir/rs_slave.expect <<EOF
#!/usr/bin/expect
set passwd "password"
spawn rsync -a $master_dir/slave.sh root@$slave_ip:/tmp/slave.sh
expect {
"yes/no" { send "yes\r"}
"password:"{ send "\$passwd\r"}
}
expect eof
EOF
#rs_slave.expect文件给予执行权限
chmod +x $master_dir/rs_slave.expect
$master_dir/rs_slave.expect
check_ok "rysnc"
#检测文件是否存在
file_exist $master_dir/exe.expect
#内嵌expect交互脚本执行命令
cat > $master_dir/exe.expect <<EOF
#!/usr/bin/expect
set password "password"
spawn ssh root@$slave_ip
expect {
"yes/no"{ send "yes\r"}
"password:"{ send "\$password\r" }
}
expect "]*"
send "/bin/bash /tmp/slave.sh\r"
expect "]*"
send "exit\r"
EOF
#exe.expect文件给予执行权限
chmod +x $master_dir/exe.expect
$master_dir/exe.expect
check_ok "exe.expect excute“
#主库解除锁表
$mysql -e "unlock tables"
内容总结
以上是互联网集市为您收集整理的91.mysql主从配置自动部署全部内容,希望文章能够帮你解决91.mysql主从配置自动部署所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。