[root@keepalived-127 logs]# cat /usr/local/src/install_mysql.sh
#!/bin/bash
Mysql_Pid=`ps -ef |grep mysqld|grep -v grep|awk '{print $2}'|wc -l`
if [ ${Mysql_Pid} != 0 ];then
echo -e "\033[31m mysql server exists,please check this mysql server \033[0m"
echo -n "Enter you continue or exit to choice:"
read choice
if [ $choice == "continue" ];then
ps -ef |grep mysqld|grep -v grep|awk '{print $2}'|xargs kill -9
unlink /usr/local/mysql
rm /usr/local/mysql-* -rf
rm -rf /data/mysql_data
elif [ $choice == "exit" ];then
exit 1
fi
fi
rpm -q libaio >/dev/null || yum -y install libaio > /dev/null
if id -g mysql >/dev/null 2>&1
then
echo "mysql group exists"
else
groupadd mysql >/dev/null 2>&1 && echo "creating mysql group success"
fi
if id -u mysql >/dev/null 2>&1;then
echo "mysql user exists"
else
useradd -r -g mysql -s /sbin/nologin mysql >/dev/null 2>&1 && echo "creating mysql user success"
fi
src_binary_dir=/usr/local/src
install_dir=/usr/local
mydatadir=/data/mysql_data
[ -d $mydatadir ] || mkdir -p /data/mysql_data/{data,logs,logbin}
echo -n "Enter you version of Mysql:"
read version
cd ${src_binary_dir}
if [ ${version} == "8.0" ];then
tar -Jxvf $(/usr/bin/ls mysql-${version}.*.tar.xz) -C ${install_dir}
elif [ ${version} == "5.6" ];then
tar -zxf $(/usr/bin/ls mysql-${version}.*.tar.gz) -C ${install_dir}
elif [ ${version} == "5.7" ];then
tar -zxf $(/usr/bin/ls mysql-${version}.*.tar.gz) -C ${install_dir}
else
echo -e "\033[31m please Enter 5.6 or 5.7 or 8.0 string to install \033[0m"
exit 1
fi
cd ${install_dir}
ln -s $(ls -d mysql-${version}.*) mysql
echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql_path.sh
source /etc/profile.d/mysql_path.sh
cat >/etc/my.cnf <<EOF
[mysql]
prompt=(\\u@\\h) [\\d]\\_
[mysqld]
skip-name-resolve
port = 3306
server-id = 127
basedir = /usr/local/mysql
datadir = /data/mysql_data/data
socket = /tmp/mysql.sock
log_error = /data/mysql_data/logs/error.log
event_scheduler = 1
sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
binlog_format = row
transaction-isolation = READ-COMMITTED
log_bin=/data/mysql_data/logbin/mysql-binlog
binlog_rows_query_log_events = 1
#skip-grant-tables
#slow log
slow_query_log = 1
slow_query_log_file=/data/mysql_data/logs/mysql-slow.log
long_query_time=2
log_queries_not_using_indexes = 1
#session memory
sort_buffer_size = 64M
tmp_table_size = 64M
#replication
slave_parallel_workers = 16
slave_parallel_type = LOGICAL_CLOCK
read_only=1
#rpl_semi
plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
rpl_semi_sync_master_timeout=100000
rpl_semi_sync_master_wait_for_slave_count = 1
rpl_semi_sync_master_wait_point = AFTER_SYNC
#innodb
innodb_log_file_size = 4G
innodb_log_buffer_size = 16M
innodb_log_files_in_group=2
innodb_buffer_pool_size = 1024M
innodb_buffer_pool_instances = 16
innodb_online_alter_log_max_size = 512M
innodb_write_io_threads = 16
innodb_page_size = 16384
innodb_flush_method = O_DIRECT
innodb_io_capacity = 4000
innodb_page_cleaners = 4
innodb_fast_shutdown = 1
innodb_flush_neighbors = 0
innodb_purge_threads = 8
innodb_lock_wait_timeout = 300
innodb_autoinc_lock_mode = 2
innodb_status_output_locks = 1
innodb_print_all_deadlocks = 1
#relay
relay_log_recovery = 1
relay_log_info_repository = table
master_info_repository = table
log_slave_updates
#gtid
gtid-mode = ON
enforce-gtid-consistency = ON
EOF
cd mysql
case $version in
5.7)
chown -R mysql.mysql /usr/local/mysql*
chown -R mysql.mysql /data/mysql_data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql_data/data > /dev/null 2>&1
[ $? -eq 0 ] && echo "Installing mysql server success"
\cp -rf ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
/etc/init.d/mysqld start
[ $? -eq 0 ] && echo "Starting mysql server success"
cat /data/mysql_data/logs/error.log |grep "password"|awk -F':' '{print $NF}' > /tmp/mysql_password.txt
sed -i 's/^[ \t]*//g' /tmp/mysql_password.txt
;;
5.6)
yum install autoconf perl perl-devel perl-Data-Dumper -y >/dev/null 2>&1
chown -R mysql.mysql /usr/local/mysql*
chown -R mysql.mysql /data/mysql_data
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql_data/data > /dev/null 2>&1
[ $? -eq 0 ] && echo "Installing mysql server success"
\cp -rf ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
/etc/init.d/mysqld start
[ $? -eq 0 ] && echo "Startting mysql server success"
;;
8.0)
chown -R mysql.mysql /usr/local/mysql*
chown -R mysql.mysql /data/mysql_data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql_data/data > /dev/null 2>&1
[ $? -eq 0 ] && echo "Installing mysql server success"
\cp -rf ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
/etc/init.d/mysqld start
[ $? -eq 0 ] && echo "Startting mysql server success"
cat /data/mysql_data/logs/error.log |grep "root@localhost"|awk -F':' '{print $NF}' > /tmp/mysql_password.txt
sed -i 's/^[ \t]*//g' /tmp/mysql_password.txt
;;
esac
1517

被折叠的 条评论
为什么被折叠?



