【MySQL+expect】非交互式建立数据库主从


一、实验环境

mysql01    xx.xx.xx.xx

mysql02    xx.xx.xx.xx

二、软件安装

# yum  -y install expect

三、脚本内容

在mysql01

################################################################

#!/bin/bash

parent_path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )

cd "$parent_path"

# set variables

mysql01_ip=""

mysql01_root_passwd=""

mysq01_os_passwd=""

mysql02_ip=""

mysql02_root_passwd=""

mysq02_os_passwd=""

# SSH login expect shell script to supply username and password

rm -f  ~/.ssh/id_rsa

rm -f  ~/.ssh/id_rsa.pub

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

expect -c "

  set timeout 100

  spawn ssh-copy-id root@${mysql02_ip}

  expect {

  *yes/no* {send "yes"\r;exp_continue;}

  *assword* {send "${mysq02_os_passwd}"\r;}

}

  expect -re \](\$|#)

  exit

"

master_log_file=`ssh root@${mysql02_ip}   "mysql -uroot -p${mysql02_root_passwd}  --execute='show master status;'"|awk '{print $1}'|sed -n '2p'`

master_log_pos=`ssh  root@${mysql02_ip}   "mysql -uroot -p${mysql02_root_passwd}  --execute='show master status;'"|awk '{print $2}'|sed -n '2p'`

mysql -uroot -p"{mysql01_root_passwd}" <<EOF 2>/dev/null

change master to master_host='${mysql02_ip}',master_user='repl',master_password='Repl@123',master_log_file='${master_log_file}',master_log_pos='${master_log_pos}';

quit

EOF

mysql -uroot -p"${mysql01_root_passwd}" <<EOF 2>/dev/null

start slave;

quit

EOF

################################################################

12979420-d70a895608ea4932

在mysql02上脚本内容,将上述过程反过来实现。

猜你喜欢

转载自blog.csdn.net/weixin_34415923/article/details/87552787