zoukankan      html  css  js  c++  java
  • mysql5.6快速安装及参数详解

    一、所需软件

    软件名称版本下载地址当前环境管理员账号/密码
    mysql 5.6 yum安装 centOS6.7系统 zxfly/zxfly

    二、安装说明

    数据库所在目录/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

    如图:

    4、安装mysql

    yum install mysql-community-server

    5、替换配置文件

    主库配置文件:

     1 [mysqld]
     2 user=mysql
     3 datadir=/database/mysql
     4 socket=/var/lib/mysql/mysql.sock
     5 
     6 skip-name-resolve
     7 
     8 # Disabling symbolic-links is recommended to prevent assorted security risks
     9 symbolic-links=0
    10 
    11 #slow_queries
    12 slow_query_log_file = /var/log/mysql/mysql_slow_query.log
    13 long_query_time=1
    14 slow_query_log=1
    15 #binlog
    16 server-id=77
    17 log_bin=/database/mysql-bin/mysql_bin
    18 binlog_format=mixed
    19 expire_logs_days=7
    20 
    21 #innodb
    22 innodb_buffer_pool_size=104G
    23 innodb_log_file_size=512M
    24 innodb_log_buffer_size = 8M
    25 innodb_flush_log_at_trx_commit=2
    26 innodb_file_per_table=1
    27 innodb_file_io_threads=4
    28 innodb_flush_method=O_DIRECT
    29 innodb_io_capacity=2000
    30 innodb_io_capacity_max=6000
    31 innodb_lru_scan_depth=2000
    32 innodb_thread_concurrency = 0
    33 
    34 #cache
    35 ##内部内存临时表的最大值
    36 tmp_table_size=2G
    37 character-set-server=utf8
    38 collation-server=utf8_general_ci
    39 ##即跳过外部锁定
    40 skip-external-locking
    41 ##MySQL能暂存的连接数量(根据实际设置)
    42 back_log=1024
    43 ##指定索引缓冲区的大小,只对MyISAM表起作用,这里写上也没有关系
    44 key_buffer_size=1024M
    45 ##这条指令限定用于每个数据库线程的栈大小
    46 thread_stack=256k
    47 ##当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区
    48 read_buffer_size=8M
    49 ##线程缓存
    50 thread_cache_size=64
    51 ##查询缓存大小
    52 query_cache_size=128M
    53 ##内部内存临时表的最大值,每个线程都要分配
    54 max_heap_table_size=256M
    55 ##将查询结果放入查询缓存中
    56 query_cache_type=1
    57 ##代表在事务过程中容纳二进制日志SQL语句的缓存大小
    58 binlog_cache_size = 2M
    59 ##同样是缓存表大小
    60 table_open_cache=128
    61 ##缓存线程
    62 thread_cache=1024
    63 
    64 wait_timeout=18000
    65 ##表和表联接的缓冲区的大小
    66 join_buffer_size = 1024M
    67 ##是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存
    68 sort_buffer_size=8M
    69 ##随机读取数据缓冲区使用内存
    70 read_rnd_buffer_size = 8M
    71 
    72 #connect
    73 ##是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码
    74 max-connect-errors=100000
    75 ##连接数
    76 max-connections=3000
    77 ##开启查询缓存
    78 explicit_defaults_for_timestamp=true
    79 ##mysql服务器能够工作在不同的模式下,并能针对不同的客户端以不同的方式应用这些模式
    80 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    81 
    82 [mysqldump]
    83 quick
    84 
    85 [mysqld_safe]
    86 log-error=/var/log/mysql/mysqld.log
    87 pid-file=/var/run/mysqld/mysqld.pid
    mysql主库配置文件

    从库配置文件:

      1 # For advice on how to change settings please see
      2 # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
      3 
      4 [mysqld]
      5 #
      6 # Remove leading # and set to the amount of RAM for the most important data
      7 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
      8 # innodb_buffer_pool_size = 128M
      9 #
     10 # Remove lead/ing # to turn on a very important data integrity option: logging
     11 # changes to the binary log between backups.
     12 # log_bin
     13 #
     14 # Remove leading # to set options mainly useful for reporting servers.
     15 # The server defaults are faster for transactions and fast SELECTs.
     16 # Adjust sizes as needed, experiment to find the optimal values.
     17 # join_buffer_size = 128M
     18 # sort_buffer_size = 2M
     19 # read_rnd_buffer_size = 2M
     20 user=mysql
     21 datadir=/database/mysql
     22 socket=/var/lib/mysql/mysql.sock
     23 server-id=214 #以ip为mysql的server-id
     24 skip-name-resolve
     25 
     26 # Disabling symbolic-links is recommended to prevent assorted security risks
     27 symbolic-links=0
     28 
     29 #slow_queries
     30 slow_query_log_file = /var/log/mysql/mysql_slow_query.log
     31 long_query_time=1
     32 slow_query_log=1
     33 
     34 #innodb
     35 innodb_buffer_pool_size=16G
     36 innodb_log_file_size=512M
     37 innodb_log_buffer_size = 8M
     38 innodb_flush_log_at_trx_commit=2
     39 innodb_file_per_table=1
     40 innodb_file_io_threads=4
     41 innodb_flush_method=O_DIRECT
     42 innodb_io_capacity=2000
     43 innodb_io_capacity_max=6000
     44 innodb_lru_scan_depth=2000
     45 innodb_thread_concurrency = 0
     46 
     47 #cache
     48 ##内部内存临时表的最大值
     49 tmp_table_size=2G
     50 character-set-server=utf8
     51 collation-server=utf8_general_ci
     52 ##即跳过外部锁定
     53 skip-external-locking
     54 ##MySQL能暂存的连接数量(根据实际设置)
     55 back_log=1024
     56 ##指定索引缓冲区的大小,只对MyISAM表起作用,这里写上也没有关系
     57 key_buffer_size=1024M
     58 ##这条指令限定用于每个数据库线程的栈大小
     59 thread_stack=256k
     60 ##当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区
     61 read_buffer_size=8M
     62 ##线程缓存
     63 thread_cache_size=64
     64 ##查询缓存大小
     65 query_cache_size=128M
     66 ##内部内存临时表的最大值,每个线程都要分配
     67 max_heap_table_size=256M
     68 ##将查询结果放入查询缓存中
     69 query_cache_type=1
     70 ##代表在事务过程中容纳二进制日志SQL语句的缓存大小
     71 binlog_cache_size = 2M
     72 ##同样是缓存表大小
     73 table_open_cache=128
     74 ##缓存线程
     75 thread_cache=1024
     76 
     77 wait_timeout=18000
     78 ##表和表联接的缓冲区的大小
     79 join_buffer_size = 1024M
     80 ##是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存
     81 sort_buffer_size=8M
     82 ##随机读取数据缓冲区使用内存
     83 read_rnd_buffer_size = 8M
     84 
     85 #connect
     86 ##是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码
     87 max-connect-errors=100000
     88 ##连接数
     89 max-connections=3000
     90 ##开启查询缓存
     91 explicit_defaults_for_timestamp=true
     92 ##mysql服务器能够工作在不同的模式下,并能针对不同的客户端以不同的方式应用这些模式
     93 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
     94 
     95 [mysqldump]
     96 quick
     97 
     98 [mysqld_safe]
     99 log-error=/var/log/mysql/mysqld.log
    100 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:                  [输入:zxfly]
    Re-enter new password:    [输入:zxfly]
    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 -pzxfly

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

    四、主从复制

    MySQL主从部署文档:http://www.cnblogs.com/feiren/p/7722185.html

    五、配置文件说明

    1、基本配置

    [mysqld]

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

    binlog_format=mixed

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

    可定义类型:

    1、row

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

    2、statement(默认)

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

    3、mixed

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

    12 sync-binlog=1

    默认为0 1是最安全的。

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

    2、他是最慢的选择。

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

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

    [mysqld_safe]

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

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

    pid文件所在路径

    2、优化项配置

    #innodb引擎优化

    #配置项说明
    1 innodb_buffer_pool_size=104G

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

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

    2、

    2 innodb_log_file_size=512M

    事务日志的大小

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

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

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

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

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

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

    #cache缓存优化

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

    六、检查

    1、查看进程是否存在

    ps -ef|grep mysql

    2、查看是否可以登录

    mysql -uzxfly -pzxfly

    七、监控

    1、zabbix-mysql监控

    2、zabbix-mysql主从监控

    八、启动、关闭和登录

    1、启动

    service mysqld start

    2、关闭

    service mysqld stop

    3、重启

    service mysqld restart

    4、登录

    mysql -uzxfly -pzxfly

    九、压力测试

    十、其他

    mysql备份&还原

  • 相关阅读:
    【串线篇】Mybatis缓存原理
    【串线篇】Mybatis之动态sql
    【串线篇】Mybatis之模糊查询
    【串线篇】sql映射文件-分布查询(上)association 1-1
    【串线篇】SQL映射文件-联合查询(完结association+cellection)
    【串线篇】加谈数据库之连接join
    【串线篇】数据库设计之加谈n-n
    【串线篇】SQL映射文件-resultMap自定义封装
    【串线篇】sql注入问题
    【串线篇】SQL映射文件select简单查询标签
  • 原文地址:https://www.cnblogs.com/feiren/p/7697767.html
Copyright © 2011-2022 走看看