共计 8175 个字符,预计需要花费 21 分钟才能阅读完成。
详细记录在 CentOS 6.9 上安装 MySQL 5.7.18 过程,希望对大家有所帮助。
下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
1、新建 mysql 用户, 组:
[root@001 ~]# groupadd mysql
[root@001 ~]# useradd -g mysql -r -s /sbin/nologin -M -d /data/mysqldata mysql
2、新建数据目录及授权:
[root@001 ~]# mkdir -p /data/mysqldata
[root@001 ~]# chmod -R 770 /data/mysqldata
[root@001 ~]# chown -R mysql:mysql /data/mysqldata
3、解压 mysql, 创建软连接并修改属组:
[root@001 ~]# tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@001 ~]# cd /usr/local/
[root@001 local]# ln -sv mysql-5.7.18-linux-glibc2.5-x86_64/ mysql
[root@001 local]# cd mysql
[root@001 mysql]# chown -R mysql:mysql .
4、修改配置文件及初始化:
配置文件来自于网络,原作者根据实际情况修改并注释,具体参数自行修改
[root@001 mysql]# vim /etc/my.cnf
[client]
socket = /data/mysqldata/mysqld.sock
[mysqld]
pid-file = /data/mysqldata/mysqld.pid #根据实际填写目录
socket = /data/mysqldata/mysqld.sock #根据实际填写目录
datadir = /data/mysqldata #根据实际填写目录
log-error = /data/mysqldata/error.log #根据实际情况填写
#==================================================================================================================================================
#bind-address = 127.0.0.1 bind-address 后面增加远程访问 IP 地址或者禁掉这句话就可以让远程机登陆访问了
#===================================================================================================================================================
# 支持符号链接,就是可以通过软连接的方式,管理其他目录的数据库,最好不要开启,当一个磁盘或分区空间不够时,可以开启该参数将数据存储到其他的磁盘或分区。
symbolic-links=0
#MySQL 数据库及表(仅 MyISAM) 支持符号链接 (symbolic link),即数据库或表可以存储在 my.cnf 中指定 datadir 之外的分区或目录。
# 要支持符号链接,需要在配置中设置 symbolic-links=1(较新的版本为默认开启)
#===================================================================================================================================================
########basic settings########
server-id = 11
port = 3306
user = mysql
#==========================================================================================================================================================================
autocommit = 1 #设置 autocommit=0,则用户将一直处于某个事务中,直到执行一条 commit 提交或 rollback 语句才会结束当前事务重新开始一个新的事务。set autocommit= 0 的好处是在频繁开启事务的场景下,减 > 少一次 begin 的交互。
#==========================================================================================================================================================================
#==========================================================================================================================================================================
character_set_server=utf8mb4 #utf8mb4 编码是 utf8 编码的超集,兼容 utf8,并且能存储 4 字节的表情字符。采用 utf8mb4 编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。
#==========================================================================================================================================================================
skip_name_resolve = 1 #这个参数是禁止域名解析的(当然,也包括主机名)。很多童鞋会好奇,这背后的原理是什么,什么情况下开启这个参数比较合适。
#=========================================================================================================================================================================
max_connections = 800 ## MySQL 的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于 MySQL 会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过 ’conn%’ 通配符查看当前状态的连接数量,以定夺该值的大小。
#==========================================================================================================================================================================
max_connect_errors = 1000 #对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。
transaction_isolation = READ-COMMITTED #数据库隔离级别
#MySQL 在完成某些 join(连接)需求的时候,为了减少参与 join 的 ” 被驱动表 ” 的读取次数以提高性能,需要使用到 join buffer 来协助完成 join 操作当 join buffer 太小,MySQL 不会将该 buffer 存入磁盘文件而是先将 join buffer 中的结果与需求 join 的表进行操作,然后清空 join buffer 中的数据,继续将剩余的结果集写入次 buffer 中
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
# 该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败
max_allowed_packet = 64M
#mysql 在关闭一个交互的连接之前所要等待的秒数
interactive_timeout = 1200
#mysql 在关闭一个非交互的连接之前所要等待的秒数
wait_timeout = 600
#MySQL 读入缓冲区的大小
read_buffer_size = 16M
#MySQL 的随机读缓冲区大小
read_rnd_buffer_size = 8M
#MySQL 的顺序读缓冲区大小
sort_buffer_size = 8M
########log settings########
log_error = /data/mysqldata/error.log #根据实际情况填写路径
# 开启慢查询日志
slow_query_log = 1
# 超出次设定值的 SQL 即被记录到慢查询日志
long_query_time = 6
slow_query_log_file = /data/mysqldata/slow.log
# 表示记录下没有使用索引的查询
log_queries_not_using_indexes = 1
# 记录管理语句
log_slow_admin_statements = 1
# 开启复制从库复制的慢查询的日志
log_slow_slave_statements = 1
# 设置每分钟增长的没有使用索引查询的日志数量
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100
########replication settings########
# 将 master.info 和 relay.info 保存在表中
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
# 当每进行 n 次事务提交之后,MySQL 将进行一次 fsync 之类的磁盘同步指令来将 binlog_cache 中的数据强制写入磁盘。设置为零是让系统自行决定
sync_binlog = 5
# 开启全局事务 ID,GTID 能够保证让一个从服务器到其他的从服务器那里实现数据复制而且能够实现数据整合的
gtid_mode = on
# 开启 gtid,必须主从全开
enforce_gtid_consistency = 1
# 从服务器的更新是否写入二进制日志
log_slave_updates = 1
# 三种模式 STATEMENT(有可能主从数据不一致,日质量小)、ROW(产生大量二进制日志)、MIXED
binlog_format = mixed
#relay-log 日志记录的是从服务器 I / O 线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后 SQL 线程会读取 relay-log 日志的内容并应用到从服务器
relay_log = /data/mysqldata/relay.log
relay_log_recovery = 1
# 开启简单 gtid,开启此项会提升 mysql 执行恢复的性能
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
# 这个参数在一开始初始化时就要加入 my.cnf 里,如果已经创建了表,再修改,启动 MySQL 会报错。最好为 8K
#innodb_page_size = 16K
innodb_page_size = 8K
# 数据缓冲区 buffer pool 大小,建议使用物理内存的 75%
innodb_buffer_pool_size = 2G
# 当 buffer_pool 的值较大的时候为 1,较小的设置为 8
innodb_buffer_pool_instances = 8
# 运行时 load 缓冲池,快速预热缓冲池,将 buffer pool 的内容(文件页的索引)dump 到文件中,然后快速 load 到 buffer pool 中。避免了数据库的预热过程,提高了应用访问的性能
innodb_buffer_pool_load_at_startup = 1
# 运行时 dump 缓冲池
innodb_buffer_pool_dump_at_shutdown = 1
# 在 innodb 中处理用户查询后,其结果在内存空间的缓冲池已经发生变化,但是还未记录到磁盘。这种页面称为脏页,将脏页记录到磁盘的过程称为刷脏
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
# 事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败,默认 50s
innodb_lock_wait_timeout = 30
# 日志组所在的路径,默认为 data 的 home 目录;
innodb_log_group_home_dir = /data/mysqldata
#innodb_undo_directory = /data/mysqldata
# 这个参数控制着 innodb 数据文件及 redo log 的打开、刷写模式,http://www.linuxidc.com/Linux/2017-10/148132.htm
#innodb_flush_method = O_DIRECT- 不经过系统缓存直接存入磁盘,
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
#innodb 独享表空间,有点很多,缺点会导致单个表文件过大
#innodb_file_per_table = 1
#undo 日志回滚段默认为 128
innodb_undo_logs = 128
# 传统机械硬盘建议使用,而对于固态硬盘可以关闭
#innodb_flush_neighbors = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
# 控制是否使用独立 purge 线程
innodb_purge_threads = 1
# 改为 ON 时,允许单列索引最大达到 3072。否则最大为 767
innodb_large_prefix = 1
innodb_thread_concurrency = 8
# 开启后会将所有的死锁记录到 error_log 中
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 16M
########semi sync replication settings########
# 半同步复制
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 = 5000
# 表示转储每个 bp instance LRU 上最热的 page 的百分比。通过设置该参数可以减少转储的 page 数。
innodb_buffer_pool_dump_pct = 40
# 刷脏的进程 N -1
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
# 控制回收(收缩)undo log 的频率.undo log 空间在它的回滚段没有得到释放之前不会收缩,
innodb_purge_rseg_truncate_frequency = 128
log_timestamps=system
# 该参数基于 MySQL5.7 Group Replication 组复制的,没有使用不要设置
#show_compatibility_56=on
#========================================================================
# 几个��要的参数配置和说明
#innodb_log_file_size = 4G : 做实验可以更改的小点,线上环境推荐用 4G,以前 5.5 和 #5.1 等版本之所以官方给的值很小,是因为太大后有 bug,现在 bug 已经修复
#innodb_undo_logs = 128 和 innodb_undo_tablespaces = 3 建议在安装之前就确定好该值,后续修改比较麻烦
#[mysqld],[mysqld-5.7] 这种 tag 表明了下面的配置在什么版本下才生效,[mysqld]下均生效
#autocommit, 这个参数在 5.5.X 以后才有,安装 5.6.X 的时候要注意先把该参数注释掉,等安装完成后,再行打开, 5.7.X# 无需预先注释
#datadir, innodb_log_group_home_dir, innodb_undo_directory 一定要注意他的权限是 mysql:mysql
#========================================================================
[root@001 mysql]# ./bin/mysqld –user=mysql –basedir=/usr/local/mysql –datadir=/data/mysqldata –initialize
初始化完成后需记录下初始化密码
[root@001 mysqldata]# grep ‘password’ /data/mysqldata/error.log #正常情况如上图,这里因为配置文件指定了日志路径
5、将 mysql 的服务脚本放到系统服务中,并配置环境变量让系统可以直接使用 mysql 的相关命令
[root@001 mysql]# bin/mysql_ssl_rsa_setup #生成 sll 密匙可选步骤, 详见:http://www.linuxidc.com/Linux/2017-10/148131.htm
[root@001 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@test-1 mysql]# ldconfig
[root@001 mysql]# echo “PATH=$PATH:/usr/local/mysql/bin” > /etc/profile.d/mysql.sh
[root@001 mysql]# source /etc/profile.d/mysql.sh
[root@test-1 mysql]# chkconfig mysqld on
6、启动并登陆修改密码
[root@001 mysqldata]# service mysqld start
登陆成功但需修改密码才可执行其他操作
[root@001 ~]# mysql -uroot -p # 第一次登陆 -p 后面不能直接输入密码
Enter password: #填入上面记录下的密码
mysql> set password =’123456′
到此安装结束。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/148130.htm