写在前面:
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