wangshui898

 适用于绿色版Mysql(编译安装后的Mysql)向其他机器复制安装,将脚本放在mysql目录中执行即可安装

#!/bin/bash
mysqluser=mysql
mysqldata=/data/mysql
mysqldir=$(cd `dirname $0`; pwd)



path=$(cd `dirname $0`; pwd)
#添加mysql用户
/usr/sbin/useradd $mysqluser -s /sbin/nologin
if [ ! -d $mysqldata ];then
	mkdir -p $mysqldata/data
	mkdir -p $mysqldata/logs
fi
chown $mysqluser:$mysqluser $mysqldata -R
chown $mysqluser:$mysqluser $mysqldir -R
#编辑配置文件
#cp ${path}/my.cnf /etc/my.cnf

cp ${path}/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
sed -i "/\[mysqld\]/ a \pid-file=${mysqldata}\/mysql.pid" /etc/my.cnf
sed -i "/pid-file=.*/ a \basedir=${mysqldir}" /etc/my.cnf
sed -i "/basedir=.*/ a \datadir=${mysqldata}\/data" /etc/my.cnf
sed -i "/datadir=.*/ a \log-error=${mysqldata}\/logs/error.log" /etc/my.cnf


cp ${path}/support-files/mysql.server /etc/init.d/mysqld
#sed -i "0,/basedir=/ s:basedir=:basedir=${mysqldir}:" /etc/init.d/mysqld
#sed -i "0,/basedir=/ s:datadir=:datadir=${mysqldata}\/data:" /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
#初始化mysql
echo "开始初始化mysql。。。"
${path}/scripts/mysql_install_db --user=$mysqluser --datadir=${mysqldata}/data/ --basedir=${mysqldir} >> /dev/null 2>&1
if [ $? -eq 0 ];then
        echo "mysql初始化完成!!!"
else
        echo "mysql初始化失败!!!"
        exit 1
fi

/etc/init.d/mysqld start

绿色版mysql配置主从同步(基本配置)

#!/bin/bash
passwd=123456
master=192.168.31.100
slave=192.168.31.101

masterdir=$(cd `dirname $0`; pwd)
slavedir=/opt/mysql


path=$(cd `dirname $0`; pwd)

function set_nopass() {
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub  root@$slave
}

function sync_file() {
echo "开始推送安装文件。。。"
rsync -av $masterdir/ $slave:$slavedir/ >> /dev/null 2>&1
if [ $? -eq 0 ];then
	echo "文件推送完成!!!"
else
	echo "文件推送失败!!!"
	exit 1
fi
}

function install_mysql() {
cd $path
echo "开始在master上安装mysql。。。"
sh Install_mysql-green.sh
${path}/bin/mysqladmin -uroot password $passwd
if [ $? -eq 0 ];then
        echo "mysql-master密码配置完成!!!"
	echo "密码: $passwd"
else
        echo "mysql-master密码配置失败!!!"
        exit 1
fi

echo "开始在slave上安装mysql。。。"
sync_file
ssh $slave "cd $slavedir; sh Install_mysql-green.sh"
ssh $slave "${slavedir}/bin/mysqladmin -uroot password $passwd"
if [ $? -eq 0 ];then
        echo "mysql-slave密码配置完成!!!"
	echo "密码: $passwd"
else
        echo "mysql-slave密码配置失败!!!"
        exit 1
fi
}

function config_master_slave() {
echo "开始配置主从同步。。。"
ssh $slave "sed -i \'0,/server-id = .*/ s/server-id = .*/server-id = 20/\' /etc/my.cnf"
ssh $slave "/etc/init.d/mysqld restart"
${path}/bin/mysql -uroot -p$passwd -e "grant replication slave on *.* to \'replication\'@\'%\' identified by \'replication\';"
num_masterifle=$(${path}/bin/mysql -uroot -p$passwd -e \'show  master status;\' | grep -v File|awk \'{print $1}\')
num_masterlog=$(${path}/bin/mysql -uroot -p$passwd -e \'show  master status;\' | grep -v File|awk \'{print $2}\')
ssh root@$slave >> /dev/null 2>&1  << EOF
${slavedir}/bin/mysql -uroot -p$passwd -e "change  master  to master_host=\'$master\', master_user=\'replication\', master_password=\'replication\', master_log_file=\'$num_masterifle\',master_log_pos=$num_masterlog;"
${slavedir}/bin/mysql -uroot -p$passwd -e "slave start;"
EOF
status=$(ssh $slave "${slavedir}/bin/mysql -uroot -p123456 -e \'show slave status\G\'" | awk \'/Slave_IO_Running:/ {print $2} /Slave_SQL_Running:/ {print $2}\' | tr \'\n\' \' \')
if [[ ${status} == \'Yes Yes \' ]];then
	echo "mysql主从同步配置成功!!!"
else
	echo "mysql主从同步配置失败!!!"
fi
}


function main(){
set_nopass
install_mysql
config_master_slave
}
main

 

 

分类:

技术点:

相关文章: