mysql安装脚本,需要的自取,根据自己环境做相应修改 我的安装目录是/data

#! /usr/bin/bash
#二进制安装mysql
echo -e '\e[32m##### 开始部署前检测 #####\e[0m'
#检测mysql用户是否存在
if id -u mysql >/dev/null 2>&1
then
echo -e '\e[31mmysql用户已存在\e[0m'
exit -1
else
echo -e '\e[32mmysql用户未创建\e[0m'
fi
#检测是否有已存在端口
netstat -tanp|grep 3306
if [ $? -ne 0 ]
then
echo -e '\e[32m3306端口未使用\e[0m'
else
echo -e '\e[31m3306端口已使用\e[0m'
exit -1
fi
#检测是否有已存在进程
netstat -tanp|grep mysql
if [ $? -ne 0 ]
then
echo -e '\e[32mmysql进程未启动\e[0m'
else
echo -e '\e[31mmysql进程已启动\e[0m'
exit -1
fi
#检测安装目录是否存在
if [ -d /data/mysql_data ]
then
echo -e '\e[31m安装目录已存在\e[0m'
exit -1
else
echo -e '\e[32m安装目录不存在\e[0m'
fi
#检测bin文件是否存在
if [ -f /data/mysql/bin/mysqld ]
then
echo -e '\e[31mbin文件已存在\e[0m'
exit -1
else
echo -e '\e[32mbin文件不存在\e[0m'
fi

echo -e '\e[32m##### 开始部署安装mysql #####\e[0m'
mkdir -p /data/soft
cd /data/soft
if [ ! -f /data/soft/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ]
then
curl -o /data/soft/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
fi
echo -e '\e[32m===== 解压软件包 =====\e[0m'
tar -zxf /data/soft/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /data/
mv /data/mysql-5.7.17-linux-glibc2.5-x86_64 /data/mysql
echo -e '\e[32m##### 开始安装mysql依赖libaio.so.1 #####\e[0m'
yum install -y libaio.so.1
cat>> /etc/profile<<EOF
export PATH=\$PATH:/data/mysql/bin
EOF
#生效
source /etc/profile
mkdir -p /data/mysql_data/3306/tmp
mkdir -p /data/mysql_data/3306/run/
mkdir -p /data/mysql_data/3306/log/
mkdir -p /data/mysql_data/3306/binlog/
mkdir -p /data/mysql_data/3306/innolog
mkdir -p /data/mysql_data/3306/clusterlog
mkdir -p /data/mysql_data/3306/share/
cat >/data/mysql_data/3306/my3306.cnf <<EOF
[mysqld_safe]
pid_file=/data/mysql_data/3306/run/mysqld.pid
datadir=/data/mysql_data/3306/data
#malloc_lib=/opt/mysql/3306/lib/libjemalloc.so


[mysql]
port=3306
prompt=\\u@\\d \\r:\\m:\\s>
default_character_set=utf8mb4
no_auto_rehash


[client]
port=3306
socket=/data/mysql_data/3306/run/mysql.sock


[mysqld]
#skip-grant-tables


#dir
basedir=/data/mysql_data/3306
datadir=/data/mysql_data/3306/data
tmpdir=/data/mysql_data/3306/tmp
lc_messages_dir=/data/mysql_data/3306/share


#running
socket=/data/mysql_data/3306/run/mysql.sock
pid_file=/data/mysql_data/3306/run/mysqld.pid


#server
server_id=72
default_storage_engine=INNODB
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
lower_case_table_names=1
innodb_flush_neighbors=1
innodb_page_size=16384
skip_external_locking
open_files_limit=65535
safe_user_create
local_infile=1
#sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE"
performance_schema=0


#log
log_error=/data/mysql_data/3306/log/error.log
slow_query_log_file=/data/mysql_data/3306/log/slow.log
general_log_file=/data/mysql_data/3306/log/general.log
log_slow_admin_statements=1
#log_warnings=1
log_error_verbosity=3
long_query_time=0.2
slow_query_log=1
general_log=0


#binlog
##gtid
gtid_mode=ON
log-slave-updates=ON
enforce-gtid-consistency=ON


log_bin=/data/mysql_data/3306/binlog/mysql_bin
max_binlog_cache_size=2G
max_binlog_size=500M
binlog_format=ROW
sync_binlog=1
log_slave_updates=1
expire_logs_days=3


#innodb
innodb_data_home_dir=/data/mysql_data/3306/data
innodb_log_group_home_dir=/data/mysql_data/3306/innolog
innodb_buffer_pool_size=2G
innodb_log_buffer_size=200M
innodb_log_file_size=1G
innodb_adaptive_flushing=1
innodb_buffer_pool_instances=4
innodb_data_file_path=ibdata1:32M;ibdata2:16M:autoextend
innodb_doublewrite=ON
#innodb_file_format=Barracuda
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
innodb_io_capacity=1000
innodb_lock_wait_timeout=10
innodb_log_files_in_group=2
innodb_max_dirty_pages_pct=60
innodb_open_files=60000
innodb_purge_threads=1
innodb_read_io_threads=8
innodb_stats_on_metadata=0
#innodb_support_xa=ON
innodb_use_native_aio=0
innodb_write_io_threads=8




innodb_thread_concurrency=16
innodb_change_buffering=inserts
innodb_old_blocks_time=1000
#innodb_read_ahead=0
innodb_rollback_on_timeout=0
innodb_strict_mode=1
transaction_isolation=READ-COMMITTED


#myisam
key_buffer_size=64M
myisam_sort_buffer_size=64M
concurrent_insert=2
delayed_insert_timeout=300


#replication
relay_log_recovery=1
master_info_repository=TABLE
#master_info_file=/data/mysql_data/3306/clusterlog/master.info
slave_parallel_type=LOGICAL_CLOCK
#relay_log=/data/mysql_data/3306/clusterlog/relaylog
#relay_log_index=/data/mysql_data/3306/clusterlog/mysqld_relay_bin.index
relay_log_info_repository=TABLE
#relay_log_info_file=/data/mysql_data/clusterlog/log/relay_log.info
slave_load_tmpdir=/data/mysql_data/3306/tmp
slave_type_conversions="ALL_NON_LOSSY"
slave_parallel_workers=1
slave_net_timeout=4
#skip_slave_start
sync_master_info=1000
sync_relay_log_info=1000


#query_cache_type=0
#query_cache_size=0
#query_cache_limit=1M
#query_cache_min_res_unit=1K


table_definition_cache=65536
#table_cache=65536


thread_stack=512K
thread_cache_size=256
binlog_cache_size=32K
read_rnd_buffer_size=128K
sort_buffer_size=256K
join_buffer_size=128K
read_buffer_size=128K


#connect
port=3306
skip_name_resolve
skip_ssl
max_connections=4500
max_user_connections=4000
max_connect_errors=65536
max_allowed_packet=128M
connect_timeout=8
net_read_timeout=30
net_write_timeout=60
back_log=1024
EOF

echo -e '\e[32m=====创建mysql用户及初始化mysql =====\e[0m'

groupadd mysql
useradd -G mysql -g mysql mysql
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /data/mysql_data/
/data/mysql/bin/mysqld --defaults-file=/data/mysql_data/3306/my3306.cnf --initialize --console --user=mysql
cat> /usr/lib/systemd/system/mysqld.service<<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(5.7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target


[Service]
User=mysql
Group=mysql
ExecStart=/data/mysql/bin/mysqld --defaults-file=/data/mysql_data/3306/my3306.cnf
LimitNOFILE = 65536
Restart=on-failure
RestartPreventExitStatus=1
ReStartSec=10
StartLimitInterval=300
StartLimitBurst=3
TimeoutStartSec=30
TimeoutStopSec=30
EOF

echo -e '\e[32m=====启动mysql服务 =====\e[0m'
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld


sleep 5
netstat -tanp|grep 3306
if [ $? -ne 0 ]
then
echo -e '\e[31m启动异常,请检测!\e[0m'
else
echo -e '\e[32m启动成功,完成部署\e[0m'
mysql_pass=`grep "temporary password" /data/mysql_data/3306/log/error.log`
echo "
服务启动:systemctl start mysqld
服务器停止:systemctl stop mysqld
连接mysql:mysql -P3306 -uroot -p -S /data/mysql_data/3306/run/mysql.sock
初始密码:
$mysql_pass
"
fi
  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值