设置服务器
[root@localhost bin]# cat ip.txt
192.168.10.53 master
192.168.10.223 slave02
192.168.10.218 slave03
192.168.10.93 slave04
免密安装
[root@localhost bin]# cat autologin.sh
#!/bin/bash
yum -y install sshpass
echo "Generate Keys ..."
ssh-keygen <<EOF
EOF
for ip in `cat ip.txt | awk '{print $1 }' `
do
sshpass -p '123456' ssh-copy-id -o StrictHostKeyChecking=no $ip
echo "$ip login without password success"
done
安装mysql 5.7
[root@localhost bin]# cat install-mysql.sh
#!/bin/bash
if [ $# -lt 1 ] ; then
exit 1
fi
ip=$1
echo "prepare mysql repository"
cat <<'EOF' >mysql.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
EOF
scp -o 'StrictHostKeyChecking=no' mysql.repo root@$ip:/etc/yum.repos.d
ssh root@$ip <<'EOF'
yum -y install mysql-server net-tools wget
systemctl start mysqld
sleep 1
password=`cat /var/log/mysqld.log | grep password |head -1 | awk '{print $NF}'`
echo "password is $password"
mysql -uroot -p"$password" --connect-expired-password -e " alter user root@localhost identified by '1qaz!QAZ' ; "
EOF
设置初始化和主从复制
[root@localhost bin]# cat install-ms.sh
#!/bin/bash
id=1
cat ip.txt |while read ip role
do
echo "start to install mysql $ip : $role "
install-mysql.sh $ip
if [ $role = "master" ] ; then
hostip=$ip
sed -i.bak "s/HOSTIP/$ip/g" slave.template.sh
scp master.template.sh root@$ip:/tmp
ssh root@$ip <<-EOF
chmod +x /tmp/master.template.sh
/tmp/master.template.sh $id
systemctl stop mysqld
systemctl start mysqld
EOF
ssh root@ip <<-'EOF'
mysql -uroot -p'1qaz!QAZ' -e " show master status;"
EOF
else
scp slave.template.sh root@$ip:/tmp
ssh root@$ip <<-EOF
chmod +x /tmp/slave.template.sh
/tmp/slave.template.sh $id
systemctl stop mysqld
systemctl start mysqld
mysql -uroot -p'1qaz!QAZ' -e " show slave status\G"
EOF
fi
((id++))
done
运行模板
[root@localhost bin]# cat master.template.sh
id=$1
sed -i '/server-id/d' /etc/my.cnf
sed -i '/log-bin/d' /etc/my.cnf
echo "server-id=$1" >> /etc/my.cnf
echo "log-bin=master" >> /etc/my.cnf
mysql -uroot -p'1qaz!QAZ' <<EOF
create user slave@'%' identified by '1qaz!QAZ';
grant replication slave,replication client on *.* to slave@'%';
flush privileges;
EOF
[root@localhost bin]# cat slave.template.sh
id=$1
sed -i '/server-id/d' /etc/my.cnf
echo "server-id=$id" >> /etc/my.cnf
mysql -uroot -p'1qaz!QAZ' <<EOF
stop slave;
reset slave;
change master to master_host='192.168.10.53',master_user='slave', master_password='1qaz!QAZ' ;
start s
作者:严锋 创建时间:2025-05-22 12:58
最后编辑:严锋 更新时间:2025-05-22 13:05
最后编辑:严锋 更新时间:2025-05-22 13:05