Mysql绿色版安装

 适用于绿色版Mysql(编译安装后的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配置主从同步(基本配置)sql

#!/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