mysql5.7.17 多实例编译安装脚本

来源:互联网 发布:还有什么方式做淘宝客 编辑:程序博客网 时间:2024/06/06 21:40

写在前面:

boost_1_59_0.tar.gz和mysql-5.7.17.tar.gz的wget下载地址链接需要更改为有效的地址,或者 直接使用下载好的

##################

#author:zhangyongchao20170419
##################
#!/bin/bash
#安装必要的依赖
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake


# 验证当前用户是否为root
if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install"
    exit 1
fi


#设置本次安装的端口号
port_list='3311 3312';


#创建mysql用户和组,如果mysql用户不存在,则创建
egrep "^mysql" /etc/passwd >& /dev/null
if [ $? -ne 0 ]
then
    groupadd mysql -g 512
useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql
fi  


#boost下载、解压、配置
boostpath = /usr/local/boost
if [ ! -d "$boostpath"]; then  
rm -rf boost_1_59_0.tar.gz
rm -rf boost_1_59_0
   wget http://downurl/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
fi 


#循环端口号,且编译安装
#loop zhe portlist
for A in $port_list
do
mkdir -p /data-2/dbdata/data_$A
mkdir -p /data-2/dblogs/binlog_$A
mkdir -p /data-2/server/mysql$A


rm -rf mysql-5.7.17.tar.gz
rm -rf mysql-5.7.17
wget http://downurl/mysql-5.7.17.tar.gz
tar -zxvf mysql-5.7.17.tar.gz
cd mysql-5.7.17


cmake -DCMAKE_INSTALL_PREFIX=/data-2/server/mysql$A  \
-DMYSQL_DATADIR=/data-2/dbdata/data_$A \
-DMYSQL_UNIX_ADDR=/data-2/dbdata/data_$A/mysql.sock \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BOOST=/usr/local/boost    \
-DSYSCONFDIR=/data-2/server/mysql$A \
-DMYSQL_TCP_PORT=$A \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=ON \
-DWITH_PARTITION_STORAGE_ENGINE=ON \
-DWITH_ARCHIVE_STORAGE_ENGINE=ON \
-DWITH_BLACKHOLE_STORAGE_ENGINE=ON \
-DWITH_FEDERATED_STORAGE_ENGINE=ON \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=ON \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=ON \
-DWITH_READLINE=ON \
-DENABLED_PROFILING=ON \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=ON 


make && make install


chown -R mysql:mysql /data-2/server/mysql$A
chown -R mysql:mysql /data-2/dbdata/data_$A


cat >>/data-2/server/mysql$A/my.cnf<<EOF
[mysqld]
port                                    = $A
basedir                                 = /data-2/server/mysql$A
datadir                                 = /data-2/dbdata/data_$A
socket                                  = /data/dbdata/data_$A/mysql.sock
pid-file                                = /data/dbdata/data_$A/mysqld.pid


#sql-mode
#skip-grant-tables
skip_external_locking
explicit_defaults_for_timestamp
#large-pages                            = 1
#group_concat_max_len                   = 4294967295


character-set-server                    = utf8
#collation-server                       = utf8_general_ci
#init-connect                           = "SET NAMES utf8"


default-storage-engine                  = InnoDB
#lower_case_table_names                 = 1


#tmpdir                                 = /data/tmpdir/tmp1:/data/tmpdir/tmp2:/data/tmpdir/tmp3
tmp_table_size                          = 64M
max_heap_table_size                     = 64M


table_open_cache                        = 8192
table_definition_cache                  = 8192
thread_cache_size                       = 256
thread_stack                            = 512K


#max_length_for_sort_data               = 1024
sort_buffer_size                        = 1M
join_buffer_size                        = 1M


#skip-networking
skip-name-resolve
back_log                                = 1024
max_connections                         = 2000
max_connect_errors                      = 10000
max_allowed_packet                      = 128M
interactive_timeout                     = 7200
wait_timeout                            = 7200
connect_timeout                         = 10
net_read_timeout                        = 30
net_write_timeout                       = 60


# *** Enable Log options ***
# ulimit -c unlimited
core-file
#core-file-size
performance_schema                      = 0
general_log                             = 0
general_log_file                        = /data/dblogs/mysqld.$A.log
log-warnings                            = 2
log-error                               = /data/dblogs/mysqld.$A.error
slow_query_log                          = 1
long_query_time                         = 0.5
slow_query_log_file                     = /data/dblogs/mysqlslow.$A.log
#log-slow-admin-statements
#log-queries-not-using-indexes


# *** MyISAM Specific options ***
#myisam-recover-options                 = [OFF,DEFAULT,BACKUP,FORCE,QUICK]
myisam_repair_threads                   = 2
myisam_use_mmap                         = 1
key_buffer_size                         = 64M
read_buffer_size                        = 1M
read_rnd_buffer_size                    = 4M
bulk_insert_buffer_size                 = 8M
myisam_sort_buffer_size                 = 1G
myisam_max_sort_file_size               = 10G


# *** INNODB Specific options ***
#skip-innodb
transaction-isolation                   = REPEATABLE-READ
innodb_status_file                      = 1
#innodb_stats_on_metadata               = 0
innodb_fast_shutdown                    = 1
innodb_force_recovery                   = 0
innodb_file_per_table                   = 1
innodb_open_files                       = 20480
innodb_buffer_pool_size                 = 3G
#innodb_buffer_pool_instances           = 8
innodb_data_file_path                   = ibdata1:256M:autoextend
innodb_data_home_dir                    = /data/dbdata/data_$A
innodb_flush_method                     = O_DIRECT
innodb_thread_concurrency               = 16
#innodb_thread_sleep_delay              = 5000
innodb_log_buffer_size                  = 16M
innodb_log_file_size                    = 1G
innodb_log_files_in_group               = 3
#innodb_log_arch_dir                    = /data/dbdata/data_$A
innodb_log_group_home_dir               = /data/dbdata/data_$A
innodb_flush_log_at_trx_commit          = 1
innodb_max_dirty_pages_pct              = 75
innodb_lock_wait_timeout                = 50
#innodb_rollback_on_timeout             = 0
innodb_support_xa                       = 0
#innodb_max_purge_lag                   = 10000


# InnoDB Plugin
innodb_adaptive_flushing = 1
innodb_change_buffering                 = inserts
innodb_file_format                      = Antelope
#innodb_file_format_check               = Antelope
innodb_io_capacity                      = 1200
innodb_old_blocks_pct                   = 37
innodb_old_blocks_time                  = 1000
innodb_read_ahead_threshold             = 56
#innodb_file_io_threads                 = 4
innodb_read_io_threads                  = 8
innodb_write_io_threads                 = 8
innodb_replication_delay                = 0
innodb_spin_wait_delay                  = 6
innodb_stats_sample_pages               = 8
#innodb_use_sys_malloc = 1
innodb_use_native_aio = 1
#innodb_strict_mode


# *** other Specific options ***
federated
#ndbcluster


# ***  Replication related settings
#binlog_format                          = [ROW, MIXED, STATEMENT]
binlog_format                           = ROW


########semi sync replication settings########
plugin_dir= /data-2/server/mysql$A/lib/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 1000




# ****** Master Options ******
server-id                               = 81
#log_bin_basename                       = /data/dblogs/binlog_$A/mysql-bin
log-bin                                 = /data/dblogs/binlog_$A/mysql-bin
log-bin-index                           = /data/dblogs/binlog_$A/mysql-bin.index
#binlog-do-db                           = 
#binlog-ignore-db                       = mysql
binlog_cache_size                       = 32K
max_binlog_cache_size                   = 128M
max_binlog_size                         = 500M
expire_logs_days                       = 15
sync_binlog                             = 1


# ****** Slave Options ******
#skip-slave-start
log_slave_updates


#report-port                            = 
#report-host                            = 
#report-user                            = 
#report-password                        = 


#replicate-do-db                        = 
#replicate-ignore-db                    = mysql
#replicate-wild-do-table                = db%_.tb%_
#replicate-wild-ignore-table            = db%_.tb%_


#read_only                              = 1
#sql_slave_skip_counter                 = 1
#slave-skip-errors                      = 1053,1062


log_bin_trust_function_creators         = 1
slave_compressed_protocol               = 1
slave-net-timeout                       = 10


relay_log_purge                         = 1
max_relay_log_size                      = 500M


#master-info-file                       = /data/dblogs/binlog_$A/master.info
#relay_log_info_file                    = /data/dblogs/binlog_$A/relay-log.info
#relay_log_basename                     = /data/dblogs/binlog_$A/mysqld-relay-bin
relay-log                               = /data/dblogs/binlog_$A/mysqld-relay-bin
relay-log-index                         = /data/dblogs/binlog_$A/mysqld-relay-bin.index


[mysqld_safe]
user                                    = mysql
open-files-limit                        = 102400


[mysqldump]
quick
default-character-set                   = utf8
max_allowed_packet                      = 128M
EOF






chown mysql.mysql /data-2/server/mysql$A/my.cnf


chown -R mysql:mysql /data-2/dbdata/
chown -R mysql:mysql /data-2/server/mysql$A
chown -R mysql:mysql /data-2/dblogs/


/data-2/server/mysql$A/bin/mysqld --initialize-insecure --user=mysql   --basedir=/data-2/server/mysql$A --datadir=/data-2/dbdata/data_$A  --port=$A


chown -R mysql:mysql /data-2/dbdata/
chown -R mysql:mysql /data-2/server/mysql$A
chown -R mysql:mysql /data-2/dblogs/


cp /data-2/server/mysql$A/support-files/mysql.server /etc/init.d/mysql$A
chmod +x /etc/init.d/mysql$A
/etc/init.d/mysql$A start
/data-2/server/mysql$A/bin/mysql -uroot -p
done
0 0
原创粉丝点击