Install_CentOS7_MySQL57_binary.sh
#!/bin/bash
MySQL_Package=mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
Package_Source=mysql-5.7.22-linux-glibc2.12-x86_64
PORT=3306PrepareENV()
{#Remove MySQL Local
yum -y remove mysql mysql-server
rm-rf /etc/my.cnf
userdel-r mysql
groupdel mysql
echo'mysql soft nproc 65536mysql hard nproc65536mysql soft nofile65536mysql hard nofile65536
'>> /etc/security/limits.conf
groupadd mysql
useradd-g mysql -s /sbin/nologin -d /usr/local/mysql/ -MN mysql
yum-y install gcc gcc-c++make
yum-y install perl perl-devel
yum-y install ncurses ncurses-devel openssl-devel bison
}
InstallMySQL()
{
tar zxvf ${MySQL_Package}
mv ${Package_Source}/usr/local/mysqlif [ $? -eq 0 ];then
echo"Install MySQL successfully !"chown-R mysql:mysql /usr/local/mysql
echo'export PATH=/usr/local/mysql/bin:$PATH' >>/root/.bash_profileelseecho"Install MySQL error ,exit !"exit
fi
}
InitMySQL()
{
mkdir-p /app/mysqldata/{$PORT/{data,tmp,binlog,redolog,undolog},backup,scripts}#Init config file
echo-e '[client]
user=dba_user
password=msds007
[mysql]
no-auto-rehash
prompt= (\u@\h) [\d]>\_
default-character-set =utf8mb4
[mysqld]########basic settings########
server-id = 1013306port= 3306user=mysql
bind_address= 192.168.1.101autocommit= 1character_set_server=utf8mb4
skip_name_resolve= 1max_connections= 800max_connect_errors= 1000datadir= /app/mysqldata/3306/data
socket= /app/mysqldata/3306/mysql.sock
transaction_isolation= READ-COMMITTED
explicit_defaults_for_timestamp= 1join_buffer_size= 134217728tmp_table_size= 67108864tmpdir= /app/mysqldata/3306/tmp
max_allowed_packet= 16777216sql_mode= "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"interactive_timeout= 1800wait_timeout= 1800read_buffer_size= 16777216read_rnd_buffer_size= 33554432sort_buffer_size= 33554432
########log settings########
log_error = /app/mysqldata/3306/error.log
slow_query_log= 1slow_query_log_file= /app/mysqldata/3306/slow.log
log_queries_not_using_indexes= 1log_slow_admin_statements= 1log_slow_slave_statements= 1log_throttle_queries_not_using_indexes= 10expire_logs_days= 7long_query_time= 1min_examined_row_limit= 100
########replication settings########
master_info_repository =TABLE
relay_log_info_repository=TABLE
log_bin= /app/mysqldata/3306/binlog/mysql-bin.log
sync_binlog= 1gtid_mode=on
enforce_gtid_consistency= 1log_slave_updates
binlog_format=row
relay_log= /app/mysqldata/3306/binlog/relay-bin.log
relay_log_recovery= 1binlog_gtid_simple_recovery= 1slave_skip_errors=ddl_exist_errors########innodb settings########
innodb_page_size = 8192innodb_buffer_pool_size= 1G #生产环境做调整
innodb_buffer_pool_instances = 8innodb_buffer_pool_load_at_startup= 1innodb_buffer_pool_dump_at_shutdown= 1innodb_lru_scan_depth= 2000innodb_lock_wait_timeout= 5innodb_io_capacity= 4000innodb_io_capacity_max= 8000innodb_flush_method=O_DIRECT
innodb_log_group_home_dir= /app/mysqldata/3306/redolog/innodb_undo_directory= /app/mysqldata/3306/undolog/innodb_undo_logs= 128innodb_undo_tablespaces= 3innodb_flush_neighbors= 1innodb_log_file_size= 128M #生产环境做调整
innodb_log_buffer_size = 16777216innodb_purge_threads= 4innodb_large_prefix= 1innodb_thread_concurrency=0
innodb_print_all_deadlocks= 1innodb_strict_mode= 1innodb_sort_buffer_size= 67108864
########semi sync replication settings########
plugin_dir=/usr/local/mysql/lib/plugin
plugin_load= "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"loose_rpl_semi_sync_master_enabled= 1loose_rpl_semi_sync_slave_enabled= 1loose_rpl_semi_sync_master_timeout= 5000[mysqld-5.7]
innodb_buffer_pool_dump_pct= 40innodb_page_cleaners= 4innodb_undo_log_truncate= 1innodb_max_undo_log_size=2G
innodb_purge_rseg_truncate_frequency= 128binlog_gtid_simple_recovery=1log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on#binlog_checksum=NONE # only for group replication#group replication setting
#plugin_load=group_replication.so#loose_group_replication_group_name=e5720089-6b00-11e5-b248-fa163e30f9a2
#loose_group_replication_start_on_boot=1#loose_group_replication_recovery_user=rpl_user#loose_group_replication_recovery_password=rpl_pass
'> /app/mysqldata/$PORT/my.cnf
#set ENV
echo -e '#set env
MYSQL_USER=dba_user
MYSQL_PASS=msds007#check_parameter
if [ $#-ne 1 ]
then
HOST_PORT=3306
elseHOST_PORT=$1fi'>/app/mysqldata/scripts/mysql_env.ini
chmod 600 /app/mysqldata/scripts/mysql_env.ini#####################################################Make scirpt for use
echo -e '#!/bin/sh
source /app/mysqldata/scripts/mysql_env.ini
echo"Startup MySQL Service: localhost_"${HOST_PORT}/usr/local/mysql/bin/mysqld_safe --defaults-file=/app/mysqldata/${HOST_PORT}/my.cnf &
'>/app/mysqldata/scripts/mysql_db_startup.sh
echo'#!/bin/sh
source /app/mysqldata/scripts/mysql_env.ini
echo"Shutdown MySQL Service: localhost_"${HOST_PORT}/usr/local/mysql/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PASS} -S /app/mysqldata/${HOST_PORT}/mysql.sock shutdown'> /app/mysqldata/scripts/mysql_db_shutdown.sh
echo-e '#!/bin/sh
source /app/mysqldata/scripts/mysql_env.ini
echo"Login MySQL Service: localhost_"${HOST_PORT}/usr/local/mysql/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASS} -S /app/mysqldata/${HOST_PORT}/mysql.sock $2
'> /app/mysqldata/scripts/mysqlplus.sh
chmod755 /app/mysqldata/scripts/{mysql_db*,mysqlplus.sh}
echo'export PATH=/app/mysqldata/scripts:$PATH' >>/root/.bash_profile####################################################
chown -R mysql:mysql /app/mysqldata/usr/local/mysql/bin/mysqld --defaults-file=/app/mysqldata/$PORT/my.cnf --initialize --user=mysql/usr/local/mysql/bin/mysql_ssl_rsa_setup --defaults-file=/app/mysqldata/$PORT/my.cnf####################################################
echo "start mysqld at boot time"
#ln -s /app/mysqldata/$PORT/my.cnf /etc/my.cnf#cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql#chkconfig --add mysql#chkconfig mysql on#service mysql stop#service mysql start#ln -s /app/mysqldata/$PORT/mysql.sock /tmp/mysql.sock
/app/mysqldata/scripts/mysql_db_startup.sh 3306 > /app/mysqldata/3306/mysql_db_startup.log 2>&1chmod+x /etc/rc.d/rc.local
echo'/app/mysqldata/scripts/mysql_db_startup.sh 3306 > /app/mysqldata/3306/mysql_db_startup.log 2>&1' >> /etc/rc.local
sleep5echo"update root password"tmppasswd=`grep password /app/mysqldata/$PORT/error.log | awk '{print $NF}'`/usr/local/mysql/bin/mysql -uroot -p$tmppasswd -S /app/mysqldata/$PORT/mysql.sock --connect-expired-password -e "set password=password('msds007')"
/usr/local/mysql/bin/mysql -uroot -pmsds007 -S /app/mysqldata/$PORT/mysql.sock -e "grant all on *.* to dba_user@'%' identified by 'msds007'"
/usr/local/mysql/bin/mysql -uroot -pmsds007 -S /app/mysqldata/$PORT/mysql.sock -e "flush privileges"
/usr/local/mysql/bin/mysql -uroot -pmsds007 -S /app/mysqldata/$PORT/mysql.sock -e "select user,host,authentication_string from mysql.user"}
PrepareENV
InstallMySQL
InitMySQL