shell脚本一键安装MySQL5.7.29的方法

本文参考51CTO博客作者wjw555的作品 脚本内容: vim install.mysql.sh #!/bin/bash [ -f /etc/init.d/functions ] . /etc/init.d/functions ###Check if user is rootif [ $UID -ne 0 ]; then echo "Error: You must be root to run this scr

本文参考51CTO博客作者wjw555的作品

脚本内容:

vim install.mysql.sh

#!/bin/bash

[ -f /etc/init.d/functions ]&& . /etc/init.d/functions

###Check if user is root if [ $UID -ne 0 ]; then echo "Error: You must be root to run this script, please use root to install" exit 1 fi

clear echo "=========================================================================" echo "A tool to auto-compile & install MySQL 5.7.29 on Redhat/CentOS Linux " echo "=========================================================================" #pkill -9 mysql #date +%Y-%m-%d-%H-%M #卸载系统自带的Mysql #/bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps #/bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps #/bin/rm -f /etc/my.cnf

#set mysql root password echo "===========================" mysqlrootpwd="$1" if [ "$1" = "" ]; then mysqlrootpwd="rootmysql" fi

#which MySQL Version do you want to install? echo "==========================="

isinstallmysql57="5.7.29" echo "Install MySQL 5.7.29,Please input y" read -p "(Please input y , n):"

  1. Initialize the installation related content. #Delete Old Mysql program rpm -qa|grep mysql rpm -e mysql

cat >>/etc/security/limits.conf<

  • soft nproc 65535
  • hard nproc 65535
  • soft nofile 65535
  • hard nofile 65535 EOF

echo "fs.file-max=65535" >> /etc/sysctl.conf

echo "============================Install MySQL 5.7.29=================================="

#Backup old my.cnf #rm -f /etc/my.cnf if [ -s /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.date +%Y%m%d%H%M%S.bak fi echo "============================MySQL 5.7.29 installing…………========================="

##define mysql directory configuration variable Datadir=/data/mysql/data Binlogdir=/data/mysql/binlog Logdir=/data/mysql/logs

##yum install devel and wget mysql yum install numactl /usr/bin/wget -P /tmp http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz sleep 2 tar xf /tmp/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ ln -s /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql grep mysql /etc/passwd RETVAL=$? if [ $RETVAL -ne 0 ];then useradd mysql -s /sbin/nologin -M action "mysql user added successfully" /bin/true else action " $(echo -e "\e[31;47;5m mysql user already exists\e[0m")" /bin/false fi

if [ ! -d "$Datadir" ] then mkdir -p /data/mysql/data fi

if [ ! -d "$Binlogdir" ] then mkdir -p /data/mysql/binlog fi

if [ ! -d "$Logdir" ] then mkdir -p /data/mysql/logs fi

chown -R mysql:mysql /data/mysql chown -R mysql:mysql /usr/local/mysql

#edit /etc/my.cnf #SERVERID=ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}' cat >>/etc/my.cnf<

[mysql] auto-rehash prompt="\u@\h [\d]>" #pager="less -i -n -S" #tee=/opt/mysql/query.log

[mysqld] ####: for global user =mysql
basedir =/usr/local/mysql/
datadir =/data/mysql/data server_id =2333306
port =3306
character_set_server =utf8
explicit_defaults_for_timestamp =off
log_timestamps =system
socket =/tmp/mysql.sock
read_only =0
skip_name_resolve =1
auto_increment_increment =1
auto_increment_offset =1
lower_case_table_names =1
secure_file_priv =
open_files_limit =65536
max_connections =1000
thread_cache_size =64
table_open_cache =81920
table_definition_cache =4096
table_open_cache_instances =64
max_prepared_stmt_count =1048576

####: for binlog binlog_format =row
log_bin =/data/mysql/binlog/mysql-bin
binlog_rows_query_log_events =on
log_slave_updates =on
expire_logs_days =7
binlog_cache_size =65536
#binlog_checksum =none
sync_binlog =1
slave-preserve-commit-order =ON

####: for error-log log_error =/data/mysql/logs/error.log

general_log =off
general_log_file =/data/mysql/logs/general.log

####: for slow query log slow_query_log =on
slow_query_log_file =/data/mysql/logs/slow.log
#log_queries_not_using_indexes =on
long_query_time =1.000000

####: for gtid #gtid_executed_compression_period =1000
gtid_mode =on
enforce_gtid_consistency =on

####: for replication skip_slave_start =1
#master_info_repository =table
#relay_log_info_repository =table
slave_parallel_type =logical_clock
slave_parallel_workers =4
#rpl_semi_sync_master_enabled =1
#rpl_semi_sync_slave_enabled =1
#rpl_semi_sync_master_timeout =1000
#plugin_load_add =semisync_master.so
#plugin_load_add =semisync_slave.so
binlog_group_commit_sync_delay =100
binlog_group_commit_sync_no_delay_count = 10

####: for innodb default_storage_engine =innodb
default_tmp_storage_engine =innodb
innodb_data_file_path =ibdata1:1024M:autoextend innodb_temp_data_file_path =ibtmp1:12M:autoextend
innodb_buffer_pool_filename =ib_buffer_pool
innodb_log_group_home_dir =/data/mysql/data
innodb_log_files_in_group =3
innodb_log_file_size =1024M
innodb_file_per_table =on
innodb_online_alter_log_max_size =128M
innodb_open_files =65535
innodb_page_size =16k
innodb_thread_concurrency =0
innodb_read_io_threads =4
innodb_write_io_threads =4
innodb_purge_threads =4
innodb_page_cleaners =4

  1. 4(刷新lru脏页) innodb_print_all_deadlocks =on
    innodb_deadlock_detect =on
    innodb_lock_wait_timeout =20
    innodb_spin_wait_delay =128
    innodb_autoinc_lock_mode =2
    innodb_io_capacity =200
    innodb_io_capacity_max =2000
    #--------Persistent Optimizer Statistics innodb_stats_auto_recalc =on
    innodb_stats_persistent =on
    innodb_stats_persistent_sample_pages =20

innodb_adaptive_hash_index =on
innodb_change_buffering =all
innodb_change_buffer_max_size =25
innodb_flush_neighbors =1
#innodb_flush_method =
innodb_doublewrite =on
innodb_log_buffer_size =128M
innodb_flush_log_at_timeout =1
innodb_flush_log_at_trx_commit =1
innodb_buffer_pool_size =4096M
innodb_buffer_pool_instances =4 autocommit =1
#--------innodb scan resistant innodb_old_blocks_pct =37
innodb_old_blocks_time =1000
#--------innodb read ahead innodb_read_ahead_threshold =56
innodb_random_read_ahead =OFF
#--------innodb buffer pool state innodb_buffer_pool_dump_pct =25
innodb_buffer_pool_dump_at_shutdown =ON
innodb_buffer_pool_load_at_startup =ON

EOF

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data Pass=$(grep 'A temporary password' /data/mysql/logs/error.log |awk '{print $NF}') cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on /etc/init.d/mysqld start echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh echo "============================MySQL 5.7.29 install completed=========================" ps -eo start,cmd,pid|grep mysql /usr/local/mysql/bin/mysqladmin -uroot -p"$Pass" password $mysqlrootpwd

[root@localhost ~]# sh install.mysql.sh mysqlroot [root@localhost ~]# source /etc/profile.d/mysql.sh

说明: mysqlroot 为安装脚本修改MySQL服务默认密码后的新的密码

[root@localhost ~]# mysql -uroot -p'mysqlroot' -e "select now()"
mysql: [Warning] Using a password on the command line interface can be insecure. +---------------------+ | now() | +---------------------+ | 2020-10-13 16:18:47 | +---------------------+

到此处MySQL服务启动成功!

总结

到此这篇关于shell脚本一键安装MySQL5.7.29 的文章就介绍到这了,更多相关shell脚本一键安装MySQL内容请搜索每日运维以前的文章或继续浏览下面的相关文章希望大家以后多多支持每日运维!