阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 6.7下MySQL 5.6快速安装及参数详解

135次阅读
没有评论

共计 8642 个字符,预计需要花费 22 分钟才能阅读完成。

一、所需软件

软件名称版本下载地址当前环境管理员账号 / 密码
mysql5.6yum 安装CentOS6.7 系统linuxidc/linuxidc

二、安装说明

数据库所在目录/database/mysql新建目录 mysql
sock 文件路径/var/lib/mysql/mysql.sock自动生成
配置文件路径/etc/my.cnf 
慢查询日志路径/var/log/mysql/mysql_slow_query.log新建 mysql 日志目录
错误日志路径/var/log/mysql/mysqld.log 
pid 文件/var/run/mysqld/mysqld.pid自动生成
binlog 日志文件/database/mysql-bin/mysql_bin*.log新建目录 mysql-bin

三、安装

1、下载 yum 源。

官网地址:http://dev.mysql.com/downloads/repo/yum/ 

centos7 系统:

wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

centos6 系统:

wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm

2、安装 rpm

rpm -Uvh mysql57-community-release-el6-7.noarch.rpm

3、修改 yum 源配置

 vim /etc/yum.repos.d/mysql-community.repo

安装 mysql5.6 操作

1、将 enabled= 1 更改为 enabled=0

2、将 enabled= 0 更改为 enabled=1

如图:

CentOS 6.7 下 MySQL 5.6 快速安装及参数详解

 

4、安装 mysql

yum install mysql-community-server

5、替换配置文件

主库配置文件:

[mysqld]
user=mysql
datadir=/database/mysql
socket=/var/lib/mysql/mysql.sock

skip-name-resolve

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#slow_queries
slow_query_log_file = /var/log/mysql/mysql_slow_query.log
long_query_time=1
slow_query_log=1
#binlog
server-id=77
log_bin=/database/mysql-bin/mysql_bin
binlog_format=mixed
expire_logs_days=7

#innodb
innodb_buffer_pool_size=104G
innodb_log_file_size=512M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
innodb_file_io_threads=4
innodb_flush_method=O_DIRECT
innodb_io_capacity=2000
innodb_io_capacity_max=6000
innodb_lru_scan_depth=2000
innodb_thread_concurrency = 0

#cache
## 内部内存临时表的最大值
tmp_table_size=2G
character-set-server=utf8
collation-server=utf8_general_ci
## 即跳过外部锁定
skip-external-locking
##MySQL 能暂存的连接数量(根据实际设置)
back_log=1024
## 指定索引缓冲区的大小, 只对 MyISAM 表起作用, 这里写上也没有关系
key_buffer_size=1024M
## 这条指令限定用于每个数据库线程的栈大小
thread_stack=256k
## 当一个查询不断地扫描某一个表,MySQL 会为它分配一段内存缓冲区
read_buffer_size=8M
## 线程缓存
thread_cache_size=64
## 查询缓存大小
query_cache_size=128M
## 内部内存临时表的最大值, 每个线程都要分配
max_heap_table_size=256M
## 将查询结果放入查询缓存中
query_cache_type=1
## 代表在事务过程中容纳二进制日志 SQL 语句的缓存大小
binlog_cache_size = 2M
## 同样是缓存表大小
table_open_cache=128
## 缓存线程
thread_cache=1024

wait_timeout=18000
## 表和表联接的缓冲区的大小
join_buffer_size = 1024M
## 是一个 connection 级参数, 在每个 connection 第一次需要使用这个 buffer 的时候, 一次性分配设置的内存
sort_buffer_size=8M
## 随机读取数据缓冲区使用内存
read_rnd_buffer_size = 8M

#connect
## 是一个 MySQL 中与安全有关的计数器值, 它负责阻止过多尝试失败的客户端以防止暴力破解密码
max-connect-errors=100000
## 连接数
max-connections=3000
## 开启查询缓存
explicit_defaults_for_timestamp=true
##mysql 服务器能够工作在不同的模式下, 并能针对不同的客户端以不同的方式应用这些模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqldump]
quick

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

mysql 主库配置文件

从库配置文件:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove lead/ing # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
user=mysql
datadir=/database/mysql
socket=/var/lib/mysql/mysql.sock
server-id=214 #以 ip 为 mysql 的 server-id
skip-name-resolve

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#slow_queries
slow_query_log_file = /var/log/mysql/mysql_slow_query.log
long_query_time=1
slow_query_log=1

#innodb
innodb_buffer_pool_size=16G
innodb_log_file_size=512M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
innodb_file_io_threads=4
innodb_flush_method=O_DIRECT
innodb_io_capacity=2000
innodb_io_capacity_max=6000
innodb_lru_scan_depth=2000
innodb_thread_concurrency = 0

#cache
## 内部内存临时表的最大值
tmp_table_size=2G
character-set-server=utf8
collation-server=utf8_general_ci
## 即跳过外部锁定
skip-external-locking
##MySQL 能暂存的连接数量(根据实际设置)
back_log=1024
## 指定索引缓冲区的大小, 只对 MyISAM 表起作用, 这里写上也没有关系
key_buffer_size=1024M
## 这条指令限定用于每个数据库线程的栈大小
thread_stack=256k
## 当一个查询不断地扫描某一个表,MySQL 会为它分配一段内存缓冲区
read_buffer_size=8M
## 线程缓存
thread_cache_size=64
## 查询缓存大小
query_cache_size=128M
## 内部内存临时表的最大值, 每个线程都要分配
max_heap_table_size=256M
## 将查询结果放入查询缓存中
query_cache_type=1
## 代表在事务过程中容纳二进制日志 SQL 语句的缓存大小
binlog_cache_size = 2M
## 同样是缓存表大小
table_open_cache=128
## 缓存线程
thread_cache=1024

wait_timeout=18000
## 表和表联接的缓冲区的大小
join_buffer_size = 1024M
## 是一个 connection 级参数, 在每个 connection 第一次需要使用这个 buffer 的时候, 一次性分配设置的内存
sort_buffer_size=8M
## 随机读取数据缓冲区使用内存
read_rnd_buffer_size = 8M

#connect
## 是一个 MySQL 中与安全有关的计数器值, 它负责阻止过多尝试失败的客户端以防止暴力破解密码
max-connect-errors=100000
## 连接数
max-connections=3000
## 开启查询缓存
explicit_defaults_for_timestamp=true
##mysql 服务器能够工作在不同的模式下, 并能针对不同的客户端以不同的方式应用这些模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqldump]
quick

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

mysql 从库配置文件

复制配置文件到 /etc/my.cnf

主库:cp my.cnf /etc/my.cnf

从库:cp my_web_slave.cnf /etc/my.cnf

6、编辑配置文件:

vim /etc/my.cnf

# 修改 server-id=171 替换成

server-id=[配置为安装数据库所在服务器的 ip]

说明:如果部署的 mysql 服务是作为从库来使用的话,还需要将 bin_log 项给注释掉。

7、创建目录

创建日志所在目录

mkdir -p /var/log/mysql

chown -R mysql.mysql /var/log/mysql

创建数据所在目录

mkdir -p /database/mysql

chown -R mysql.mysql /database/mysql

创建 binlog 所在目录(如果作为从库的话,可以跳过)

mkdir -p /database/mysql-bin

chown -R mysql.mysql /database/mysql-bin

8、初始化、启动

初始化数据库

mysql_install_db –user=mysql –datadir=/database/mysql

启动

service mysqld start #(第一次时间会相对长点,需要初始化,请耐心等待)

9、初始化配置

命令 mysql_secure_installation

Enter current password for root (enter for none):[回车跳过]

et root password? [Y/n] y  [是否设置 root 密码]
New password:                  [输入:linuxidc]
Re-enter new password:    [输入:linuxidc]
Remove anonymous users? [Y/n] y [删除匿名用户]
Disallow root login remotely? [Y/n] y [禁止 root 远程登录]
Remove test database and access to it? [Y/n] y [删除 test 数据库]
Reload privilege tables now? [Y/n] y [刷新权限]

10、创建一个管理员账号

# 登录 mysql

mysql -uroot -plinuxidc

# 创建账号
grant all on *.*  to   ‘linuxidc’@’192.168.0.% ‘ identified by ‘linuxidc’;          [授权管理所用库]
FLUSH PRIVILEGES;                                          [刷新权限,写入磁盘]

四、主从复制

MySQL 主从部署文档:http://www.linuxidc.com/Linux/2017-11/148267.htm

五、配置文件说明

1、基本配置

[mysqld]

#配置项说明
1user=mysql启动用户
2datadir=/database/mysql数据库所在路径
3socket=/var/lib/mysql/mysql.socksock 文件所在目录
4skip-name-resolve禁用 DNS 解析,访问太慢加入此优化
5symbolic-links=0关闭符号连接
6slow_query_log_file = /var/log/mysql_slow_query.log慢查询日志所在路径
7long_query_time=1记录 1 秒以上的慢查询
8slow_query_log=1开启慢查询
9server-id=171每一个 mysql 实例设置一个独立的 server-id 一般以 IP 定义
10log_bin=/database/mysql/mysql_bin二进制文件所在路径及格式
11

binlog_format=mixed

定义二进制文件输出的格式(混合型)

可定义类型:

1、row

详细记录所有,会产生大量的日志。

2、statement(默认)

记录 sql 语句,及其位置。在复杂的语句时可能记录不正确。

3、mixed

以上两种的结合,会自动选择。

12sync-binlog=1

默认为 0 1 是最安全的。

1、当出现错误的时候,设置为 1,最多会丢失一个事务。

2、他是最慢的选择。

3、但是确保恢复快的话,应该由双电源缓存机制存在。

13expire_logs_days=14保留二进制文件的天数

[mysqld_safe]

#配置项说明
1log-error=/var/log/mysqld.log错误日志路径
2

pid-file=/var/run/mysqld/mysqld.pid

pid 文件所在路径

2、优化项配置

#innodb 引擎优化

#配置项说明
1innodb_buffer_pool_size=104G

缓存 innodb 表的索引,数据,插入数据时的缓冲,

1、官方建议设置为内存大小的 80%,线上所挂载的大小为 160G,可用 130G,所以设置为 104G

2、

2innodb_log_file_size=512M

事务日志的大小

官方推荐为:日志大小 * 日志组大小(默认为 2)不能超过 512G

1、该值越大,写入磁盘 IO 越小,

2、该值越大,出现错误恢复越难

3、默认为 48M, 修改为 512M,也就是在大并发的时候 1G 的日志刷入。

4、如果该值调大,并且为了减少崩溃恢复,应该将下 main 的 innodb_flush_log_at_trx_commit 改为 1

3innodb_log_buffer_size = 8M事务在内存中的缓冲大小
4innodb_flush_log_at_trx_commit=2每秒将事务日志刷到磁盘中(0:每秒刷一次 1:提交事务就刷入磁盘 2:有事务执行,然后每秒刷一次)
5innodb_file_per_table=1开启共享表空间自动收缩
6innodb_file_io_threads=4可用的 IO 线程数
7innodb_flush_method=O_DIRECT定义刷写模式(默认为:fdatasync)O_DIRECT 会最小化缓冲对 io 的影响,
8innodb_io_capacity=2000定义读写 IO 的能力 和磁盘转速及大小有关
9innodb_io_capacity_max=6000每秒最大 IO 能力
10innodb_lru_scan_depth=2000一般与 innodb_io_capacity 的值相同
11innodb_thread_concurrency = 0不限制并发线程数

#cache 缓存优化

#配置项说明
1tmp_table_size=2G内部 (内存中) 临时表的最大大小
2character-set-server=utf8更改默认字符集
3collation-server=utf8_general_ci指定字符串的比对规则
4skip-external-locking跳过外部锁定
5back_log=1024监听队列中所能保持的连接数
6key_buffer_size=1024M关键词缓冲的大小
7thread_stack=256k线程使用的堆大小. 此容量的内存在每次连接时被预留
8read_buffer_size=8M全表扫描的缓冲大小
9thread_cache_size=64在 cache 中保留用于重用的线程个数
10query_cache_size=128M查询缓冲大小,保留 select 查询,下次同样查询可以直接返回结果
11max_heap_table_size=256M每个表所允许的内存的最大容量(防止内存被大表直接占用完)
13query_cache_type=1开启查询缓存
14binlog_cache_size = 2Mbinlog 记录事务所保留的缓存大小
15table_open_cache=128每个线程允许打开表的数量
16thread_cache=1024保留的用于从重用的线程数
17thread_concurrency=24向系统发送希望用到的线程的个数(一般为 CPU 的数量的二到四倍)
18wait_timeout=18000sleep 操作最大等待时间(即一个后台运行的命令最大时间)
19join_buffer_size = 1024M优化全联合,当联合表操作时,使用此缓存
20sort_buffer_size=8M排序操作缓存
21read_rnd_buffer_size = 8M排序完成后会放入此缓存,可以减少磁盘 IO
22max-connect-errors=100000负责阻止过多尝试失败的客户端以防止暴力破解密码
23max-connections=3000最大连接数
24explicit_defaults_for_timestamp=true开启查询缓存
25sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES定义其工作模式,mysql 会自动选择定义的模式

六、检查

1、查看进程是否存在

ps -ef|grep mysql

2、查看是否可以登录

mysql -ulinuxidc -plinuxidc

七、监控

1、zabbix-mysql 监控

2、zabbix-mysql 主从监控

八、启动、关闭和登录

1、启动

service mysqld start

2、关闭

service mysqld stop

3、重启

service mysqld restart

4、登录

mysql -ulinuxidc -plinuxidc

九、压力测试

十、其他

mysql 备份 & 还原

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148266.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计8642字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中