一、 背景:
- 1、服务器版本: CentOS Linux release 7.4.1708 (Core)
- 2、数据库版本: 5.7.22
- 3、目的:
- 安装mysql5.7.22
- 使用mysql3306 可以登录
二、安装
法1:docker安装
从2017年3月开始,docker版本变化:
项目 | 说明 |
---|---|
版本格式 | YY.MM |
stable版本 | 每个季度发行 |
edge版本 | 每个月发行 |
CE社区版 | |
EE企业版 |
步骤:
#删除系统自带的Docker及依赖
yum remove docker* container-selinux docker-engine
#添加必要的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新并安装 Docker-CE
yum makecache fast
yum install -y docker-ce
#开启Docker服务
systemctl start docker
法2: 实体机安装
步骤:
1、有网环境准备好安装包:
百度云盘地址:
链接:https://pan.baidu.com/s/1Yyq0tqp7ldWHSbHIsqNwaA 密码:x7tv
或直接wget下载:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
2、my3306.cnf配置文件内容
[client]
port = 3306
[mysql]
auto-rehash
prompt="\\u@\\h [\\d]>"
#pager="less -i -n -S"
#tee=/opt/mysql/query.log
[mysqld]
####: for global
user =mysql # mysql
basedir =/usr/local/mysql3306/ # /usr/local/mysql/
datadir =/data/mysql/mysql3306/data # /usr/local/mysql/data
server_id =2453306 # 0
port =3306 # 3306
character_set_server =utf8 # latin1
explicit_defaults_for_timestamp =off # off
log_timestamps =system # utc
socket =/tmp/mysql3306.sock # /tmp/mysql.sock
read_only =0 # off
skip_name_resolve =1 # 0
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
lower_case_table_names =1 # 0
secure_file_priv = # null
open_files_limit =65536 # 1024
max_connections =1000 # 151
thread_cache_size =64 # 9
table_open_cache =81920 # 2000
table_definition_cache =4096 # 1400
table_open_cache_instances =64 # 16
max_prepared_stmt_count =1048576 #
####: for binlog
binlog_format =row # row
log_bin =/data/mysql/mysql3306/logs/binlog/mysql-bin # off
binlog_rows_query_log_events =on # off
log_slave_updates =on # off
expire_logs_days =7 # 0
binlog_cache_size =65536 # 65536(64k)
#binlog_checksum =none # CRC32
sync_binlog =1 # 1
slave-preserve-commit-order =ON #
####: for error-log
log_error =/data/mysql/mysql3306/logs/errorlog/error.log # /usr/local/mysql/data/localhost.localdomain.err
general_log =off # off
general_log_file =general.log # hostname.log
####: for slow query log
slow_query_log =on # off
slow_query_log_file =slow.log # hostname.log
#log_queries_not_using_indexes =on # off
long_query_time =1.000000 # 10.000000
####: for gtid
#gtid_executed_compression_period =1000 # 1000
gtid_mode =on # off
enforce_gtid_consistency =on # off
####: for replication
skip_slave_start =1 #
#master_info_repository =table # file
#relay_log_info_repository =table # file
slave_parallel_type =logical_clock # database | LOGICAL_CLOCK
slave_parallel_workers =4 # 0
#rpl_semi_sync_master_enabled =1 # 0
#rpl_semi_sync_slave_enabled =1 # 0
#rpl_semi_sync_master_timeout =1000 # 1000(1 second)
#plugin_load_add =semisync_master.so #
#plugin_load_add =semisync_slave.so #
binlog_group_commit_sync_delay =100 # 500(0.05%秒)、默认值0
binlog_group_commit_sync_no_delay_count = 10 # 0
####: for innodb
default_storage_engine =innodb # innodb
default_tmp_storage_engine =innodb # innodb
innodb_data_file_path =ibdata1:100M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_buffer_pool_filename =ib_buffer_pool # ib_buffer_pool
innodb_log_group_home_dir =./ # ./
innodb_log_files_in_group =3 # 2
innodb_log_file_size =100M # 50331648(48M)
innodb_file_per_table =on # on
innodb_online_alter_log_max_size =128M # 134217728(128M)
innodb_open_files =65535 # 2000
innodb_page_size =16k # 16384(16k)
innodb_thread_concurrency =0 # 0
innodb_read_io_threads =4 # 4
innodb_write_io_threads =4 # 4
innodb_purge_threads =4 # 4(垃圾回收)
innodb_page_cleaners =4 # 4(刷新lru脏页)
innodb_print_all_deadlocks =on # off
innodb_deadlock_detect =on # on
innodb_lock_wait_timeout =20 # 50
innodb_spin_wait_delay =128 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_io_capacity =200 # 200
innodb_io_capacity_max =2000 # 2000
#--------Persistent Optimizer Statistics
innodb_stats_auto_recalc =on # on
innodb_stats_persistent =on # on
innodb_stats_persistent_sample_pages =20 # 20
innodb_adaptive_hash_index =on # on
innodb_change_buffering =all # all
innodb_change_buffer_max_size =25 # 25
innodb_flush_neighbors =1 # 1
#innodb_flush_method = #
innodb_doublewrite =on # on
innodb_log_buffer_size =128M # 16777216(16M)
innodb_flush_log_at_timeout =1 # 1
innodb_flush_log_at_trx_commit =1 # 1
innodb_buffer_pool_size =100M # 134217728(128M)
innodb_buffer_pool_instances =4
autocommit =1 # 1
#--------innodb scan resistant
innodb_old_blocks_pct =37 # 37
innodb_old_blocks_time =1000 # 1000
#--------innodb read ahead
innodb_read_ahead_threshold =56 # 56 (0..64)
innodb_random_read_ahead =OFF # OFF
#--------innodb buffer pool state
innodb_buffer_pool_dump_pct =25 # 25
innodb_buffer_pool_dump_at_shutdown =ON # ON
innodb_buffer_pool_load_at_startup =ON # ON
#### for performance_schema
performance_schema =off # on
performance_schema_consumer_global_instrumentation =on # on
performance_schema_consumer_thread_instrumentation =on # on
performance_schema_consumer_events_stages_current =on # off
performance_schema_consumer_events_stages_history =on # off
performance_schema_consumer_events_stages_history_long =off # off
performance_schema_consumer_statements_digest =on # on
performance_schema_consumer_events_statements_current =on # on
performance_schema_consumer_events_statements_history =on # on
performance_schema_consumer_events_statements_history_long =on # off
performance_schema_consumer_events_waits_current =on # off
performance_schema_consumer_events_waits_history =on # off
performance_schema_consumer_events_waits_history_long =off # off
performance-schema-instrument ='memory/%=COUNTED'
3、shell脚本
#!/bin/bash
#上传到软件包到/usr/local/src/,上传my3306.cnf到/etc/my3306.cnf
/usr/bin/cd /usr/local/
/usr/sbin/groupadd mysql
/usr/sbin/useradd -r -g mysql -s /sbin/nologin mysql
/bin/mkdir -p /data/mysql/mysql3306/{data,logs/{binlog,errorlog,slowlog,relaylog,generallog},tmp}
/bin/touch /data/mysql/mysql3306/logs/errorlog/error.log
/bin/touch /data/mysql/mysql3306/logs/slowlog/slow.log
/bin/tar zxf /usr/local/src/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src/
cd /usr/local/
/bin/ln -s /usr/local/src/mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql3306
/bin/chown -R mysql:mysql /usr/local/mysql3306/
/bin/chown -R mysql:mysql /data/mysql
#直接初始化一个不带密码的数据库,然后手动设置为root
/usr/local/mysql3306/bin/mysqld --defaults-file=/etc/my3306.cnf --initialize-insecure
/usr/local/mysql3306/bin/mysqld --defaults-file=/etc/my3306.cnf &
#添加mysql环境变量、别名
echo export PATH=$PATH:/usr/local/mysql3306/bin >>/etc/profile
source /etc/profile
echo "alias mysqld3306=\"/usr/local/mysql3306/bin/mysqld --defaults-file=/etc/my3306.cnf\"" >>/etc/profile.d/mysql.sh
echo "alias mysql3306=\"/usr/local/mysql3306/bin/mysql -S /tmp/mysql3306.sock\"" >>/etc/profile.d/mysql.sh
chmod +x /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
#初始化一个任意密码的数据库
#grep password /data/mysql/mysql3306/logs/errorlog/error.log | awk '{print $NF}'|head -1>/root/password.txt
#/usr/local/mysql3306/bin/mysqld --defaults-file=/etc/my3306.cnf &
#/usr/local/mysql3306/bin/mysql -p -S /tmp/mysql3306.sock -e "set password=password('root')"
四、测试
[root@mongo1 ~]# mysql3306
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.22-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \q
登录成功!