#! /bin/bash
#脚本运行环境:
#关闭防火墙
#准备两台虚拟机做从库和主库
#确保主库和从库 /opt/目录下有MySQL安装包(mysql-5.7.35-el7-x86_64.tar)
#主库从库能够基于RSA使用ssh免密登录
#互相免密登录方法:
#主库:ssh-keygen -t rsa
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.175.148
#试验是否能主库能免密登录从库:ssh root@192.168.175.148
#截取IP地址
#ifconfig | awk -F " " 'NR==2{print $2}'(这个命令用不上。。)
#问一下你想怎样?
read -p "What kind of installs do you want?
Please Press:
A for common install
B for guolv(DB250) install
C for yanshi 300s install :" str
if test -z "$str"
then
echo "You must input A or B or C !"
exit 1
fi
case $str in
A)
echo "你选择了普通安装"
#先安装主库
#首先移除历史环境,否则影响mysqld的安装
yum remove mariadb-libs -y
#安装环境,否则mysql输入显示error while loading shared libraries: libncurses.so.5: cannot open shared object file
yum install libncurses* -y
#创建用户和组
useradd mysql -s /sbin/nologin
#创建binlog目录
mkdir -p /data/binlog
#创建数据储存目录
mkdir -p /data/mysqldata
##创建日志目录
mkdir -p /var/log/mysql
##设置权限
chown mysql:mysql -R /data/binlog
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql
#增加环境变量
#echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
#source /etc/profile
##到放安装包的目录
cd /opt/
echo "loading... please wait a moment ###########################"
##解压tar包
tar -xvf mysql-5.7.35-el7-x86_64.tar
##删除tar包,因为gunzip mysql-5.7.35-el7-x86_64.tar.gz解压之后,也有个包叫mysql-5.7.35-el7-x86_64.tar,不删要手动覆盖
rm -rf mysql-5.7.35-el7-x86_64.tar
##再次确认安装gzip命令
yum install -y gzip
echo "loading... please wait a moment ###########################"
##解压.gz包
gunzip mysql-5.7.35-el7-x86_64.tar.gz
echo "loading... please wait a moment ###########################"
#解压tar包,!!注意这不是之前的tar包!!只是和之前同名
tar -xvf mysql-5.7.35-el7-x86_64.tar
echo "loading... please wait a moment ###########################"
#解压mysql-5.7.35-el7-x86_64.tar后得到一个目录,将此目录移动到/usr/local/下,并命名为mysql
mv mysql-5.7.35-el7-x86_64 /usr/local/mysql
##修改所属用户和组为mysql
chown mysql:mysql -R /usr/local/mysql
##初始化数据库(不生成临时密码)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
##配置文件 /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#注意id和主库不能一样
server_id=6
log-error=/var/log/mysql/error.log
pid-file=/data/mysqldata/mysql.pid
socket=/tmp/mysql.sock
port=3306
#主库开binlog
log_bin=/data/binlog/mysql-bin
EOF
##启动mysql服务
/usr/local/mysql/support-files/mysql.server start
#复制启动脚本生产系统命令
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#做一个软连接,LINUX默认命令放在/usr/bin下,不做mysql命令要加绝对路径
ln -s /usr/local/mysql/bin/mysql /usr/bin
#关闭防火墙
systemctl stop firewalld
#主库建立复制用户:
mysql -uroot -e "grant replication slave on *.* to repl@'%' identified by '123';"
#######################
#主库远程登录192.168.175.148安装从库
ssh root@192.168.175.148 <<END
#移除历史环境
yum remove mariadb-libs -y
#安装环境
yum install libncurses* -y
useradd mysql -s /sbin/nologin
mkdir -p /data/mysqldata
mkdir -p /var/log/mysql
mkdir -p /data/binlog
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql
chown mysql:mysql -R /data/binlog
cd /opt/
tar -xvf mysql-5.7.35-el7-x86_64.tar
rm -rf mysql-5.7.35-el7-x86_64.tar
yum install -y gzip
echo "loading... please wait a moment ###########################"
gunzip mysql-5.7.35-el7-x86_64.tar.gz
echo "loading... please wait a moment ###########################"
tar -xvf mysql-5.7.35-el7-x86_64.tar
echo "loading... please wait a moment ###########################"
mv mysql-5.7.35-el7-x86_64 /usr/local/mysql
chown mysql:mysql -R /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
##配置文件 /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#注意id和主库不能一样
server_id=7
log-error=/var/log/mysql/error.log
pid-file=/data/mysqldata/mysql.pid
socket=/tmp/mysql.sock
port=3306
#从库开不开binlog都行
log_bin=/data/binlog/mysql-bin
EOF
/usr/local/mysql/support-files/mysql.server start
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/mysql /usr/bin
#关闭防火墙
systemctl stop firewalld
mysql -uroot -e "CHANGE MASTER TO MASTER_HOST='192.168.175.128',MASTER_USER='repl',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154,MASTER_CONNECT_RETRY=10;"
mysql -uroot -e "start slave;"
END
;;
B)
echo "你选择了过滤DB250库的安装"
#先安装主库
yum remove mariadb-libs -y
yum install libncurses* -y
useradd mysql -s /sbin/nologin
mkdir -p /data/binlog
mkdir -p /data/mysqldata
mkdir -p /var/log/mysql
chown mysql:mysql -R /data/binlog
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql
cd /opt/
tar -xvf mysql-5.7.35-el7-x86_64.tar
rm -rf mysql-5.7.35-el7-x86_64.tar
yum install -y gzip
echo "loading... please wait a moment ###########################"
gunzip mysql-5.7.35-el7-x86_64.tar.gz
echo "loading... please wait a moment ###########################"
tar -xvf mysql-5.7.35-el7-x86_64.tar
echo "loading... please wait a moment ###########################"
mv mysql-5.7.35-el7-x86_64 /usr/local/mysql
chown mysql:mysql -R /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
##配置文件 /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#注意id和主库不能一样
server_id=6
log-error=/var/log/mysql/error.log
pid-file=/data/mysqldata/mysql.pid
socket=/tmp/mysql.sock
port=3306
#主库开binlog
log_bin=/data/binlog/mysql-bin
#过滤DB250库
binlog_ignore_db = DB250
EOF
/usr/local/mysql/support-files/mysql.server start
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/mysql /usr/bin
systemctl stop firewalld
mysql -uroot -e "grant replication slave on *.* to repl@'%' identified by '123';"
#######################
#主库远程登录192.168.175.148安装从库
ssh root@192.168.175.148 <<END
yum remove mariadb-libs -y
yum install libncurses* -y
useradd mysql -s /sbin/nologin
mkdir -p /data/mysqldata
mkdir -p /var/log/mysql
mkdir -p /data/binlog
chown mysql:mysql -R /data/binlog
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql
cd /opt/
tar -xvf mysql-5.7.35-el7-x86_64.tar
rm -rf mysql-5.7.35-el7-x86_64.tar
yum install -y gzip
echo "loading... please wait a moment ###########################"
gunzip mysql-5.7.35-el7-x86_64.tar.gz
echo "loading... please wait a moment ###########################"
tar -xvf mysql-5.7.35-el7-x86_64.tar
echo "loading... please wait a moment ###########################"
mv mysql-5.7.35-el7-x86_64 /usr/local/mysql
chown mysql:mysql -R /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
##配置文件 /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#注意id和主库不能一样
server_id=7
log-error=/var/log/mysql/error.log
pid-file=/data/mysqldata/mysql.pid
socket=/tmp/mysql.sock
port=3306
#从库开不开binlog都行
log_bin=/data/binlog/mysql-bin
EOF
/usr/local/mysql/support-files/mysql.server start
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/mysql /usr/bin
#关闭防火墙
systemctl stop firewalld
#mysql -uroot -e "help change master to;"
mysql -uroot -e "CHANGE MASTER TO MASTER_HOST='192.168.175.128',MASTER_USER='repl',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154,MASTER_CONNECT_RETRY=10;"
mysql -uroot -e "start slave;"
#mysql -uroot -e "show slave status\G"
END
;;
C)
echo "你选择了从库延时300秒安装"
#先安装主库
yum remove mariadb-libs -y
yum install libncurses* -y
useradd mysql -s /sbin/nologin
mkdir -p /data/binlog
mkdir -p /data/mysqldata
mkdir -p /var/log/mysql
chown mysql:mysql -R /data/binlog
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql
##到放安装包的目录
cd /opt/
tar -xvf mysql-5.7.35-el7-x86_64.tar
rm -rf mysql-5.7.35-el7-x86_64.tar
yum install -y gzip
echo "loading... please wait a moment ###########################"
gunzip mysql-5.7.35-el7-x86_64.tar.gz
echo "loading... please wait a moment ###########################"
tar -xvf mysql-5.7.35-el7-x86_64.tar
echo "loading... please wait a moment ###########################"
mv mysql-5.7.35-el7-x86_64 /usr/local/mysql
chown mysql:mysql -R /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
##配置文件 /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#注意id和主库不能一样
server_id=6
log-error=/var/log/mysql/error.log
pid-file=/data/mysqldata/mysql.pid
socket=/tmp/mysql.sock
port=3306
#主库开binlog
log_bin=/data/binlog/mysql-bin
EOF
/usr/local/mysql/support-files/mysql.server start
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/mysql /usr/bin
systemctl stop firewalld
mysql -uroot -e "grant replication slave on *.* to repl@'%' identified by '123';"
#######################
#主库远程登录192.168.175.148安装从库
ssh root@192.168.175.148 <<END
#移除历史环境
yum remove mariadb-libs -y
#安装环境
yum install libncurses* -y
useradd mysql -s /sbin/nologin
mkdir -p /data/mysqldata
mkdir -p /var/log/mysql
mkdir -p /data/binlog
chown mysql:mysql -R /data/binlog
chown mysql:mysql -R /data/mysqldata
chown mysql:mysql -R /var/log/mysql
cd /opt/
tar -xvf mysql-5.7.35-el7-x86_64.tar
rm -rf mysql-5.7.35-el7-x86_64.tar
yum install -y gzip
echo "loading... please wait a moment ###########################"
gunzip mysql-5.7.35-el7-x86_64.tar.gz
echo "loading... please wait a moment ###########################"
tar -xvf mysql-5.7.35-el7-x86_64.tar
echo "loading... please wait a moment ###########################"
mv mysql-5.7.35-el7-x86_64 /usr/local/mysql
chown mysql:mysql -R /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
##配置文件 /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysqldata
#注意id和主库不能一样
server_id=7
log-error=/var/log/mysql/error.log
pid-file=/data/mysqldata/mysql.pid
socket=/tmp/mysql.sock
port=3306
#从库开不开binlog都行
log_bin=/data/binlog/mysql-bin
EOF
/usr/local/mysql/support-files/mysql.server start
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ln -s /usr/local/mysql/bin/mysql /usr/bin
#关闭防火墙
systemctl stop firewalld
#mysql -uroot -e "help change master to;"
mysql -uroot -e "CHANGE MASTER TO MASTER_DELAY = 300 MASTER_HOST='192.168.175.128',MASTER_USER='repl',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154,MASTER_CONNECT_RETRY=10;"
mysql -uroot -e "start slave;"
#mysql -uroot -e "show slave status\G"
END
;;
*)
echo "You can only input A or B or C"
;;
esac
exit 0
基于mysql-5.7.35-el7-x86_64.tar主从自动安装脚本
最新推荐文章于 2023-02-21 19:38:25 发布