• Mysql编译安装及优化


    采取编译安装的方法,其好处为:编译安装与平台无关,安装的MySQL目录独立,维护起来方便,而且拥有更好的性能。

    环境:CentOS release 6.9 (Final)  x86_64

    1)下载mysql 链接:http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72.tar.gz
    安装基础环境:
    yum -y install gcc gcc-c++ zlib-devel libtool ncurses-devel libxml2-devel wget
    首先添加mysql用户及组
    groupadd mysql
    useradd -g mysql mysql
    编译安装:
    cd /usr/local/src                                
    wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72.tar.gz
    tar xf mysql-5.1.72.tar.gz
    cd mysql-5.1.72
    ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --enable-assembler --with-readline --with-big-tables --with-plugins=all --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
    make && make install 
    2)配置权限,数据安装路径为/data/mysql并设置开机自启动:
    cd /usr/local/mysql/
    cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf 
    cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld 
    chown -R mysql:mysql /usr/local/mysql/
    mkdir -p /data/mysql                           //数据存放路径
    sed -i '39a datadir=/data/mysql' /etc/my.cnf   //加入配置文件
    /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/data/mysql  //初始化文件和数据库
    启动时遇到错误:
    [root@localhost mysql]# service mysqld start                
    Starting MySQL. ERROR! Manager of pid-file quit without updating file.
    解决方法:http://www.jb51.net/article/48625.htm
    问题解决后:
    service mysqld start
    chkconfig mysqld on
    配置环境:
    echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile
    source /etc/profile
    对数据库简单优化:
    mysql> select user,host from mysql.user;
    mysql> delete from mysql.user where host='::1'
    mysql> delete from mysql.user where host='localhost.localdomain';
    mysql> drop database test;
    设置数据库密码:
    mysqladmin -u root password '123'
    登录方式:
    mysql -uroot -p123
    修改密码:
    mysqladmin -uroot -p123 password '111'
    
    2)mysql配置文件优化
    配置文件如下:
    [client]
    port            = 3306
    socket          = /tmp/mysql.sock
    [mysqld]                                          //mysqld服务启动时的参数
    port            = 3306                           //端口号
    socket          = /tmp/mysql.sock              //用户在linux环境下客户端连接可以不通过TCP/IP网络
    skip-locking                           
    key_buffer_size = 384M                   //索引的缓冲区大小可设置为256M或384M,不建议设置过大
    max_allowed_packet = 4M      //消息传输量的最大值,默认1M最大1G,必须为1024的倍数
    table_open_cache = 512                           //高速缓存大小
    sort_buffer_size = 2M                //查询排序时使用的缓冲区大小
    read_buffer_size = 2M                //读查询操作使用的缓冲区大小
    read_rnd_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8                   //连接线程最大数值 0~16384、1GB内存可以配置为8,2GB内存可以配置为16,3GB内存可以配置为32,4GB及以上64
    query_cache_size = 32M                          //mysql查询缓冲区大小
    thread_concurrency = 8
    datadir=/data/mysql
    log-bin=mysql-bin
    server-id       = 1
    max_connections = 456                //允许的最大连接进程数
    [mysqldump]
    quick
    max_allowed_packet = 16M
    [mysql]
    no-auto-rehash
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    [mysqlhotcopy]
    interactive-timeout
    

     做别名方便启动mysql:

    alias mysql='/usr/local/mysql/bin/mysql'

    2)优化

    查看运行各种状态值:
    mysql> show global status;
    1、慢查询
    慢查询是指超过指定时间的SQL语句查询,分析MySQL语句查询性能的方法除了使用EXPLAIN输出执行计划,还可以让MySQL记录下查询超过指定时间的语句。
    mysql> show variables like '%slow%';
    开启慢查询:
    mysql>set global slow_query_log=ON;
    如果是主从结构,可以打开一台从服务器的慢查询来监控,或者用自带的命令查询
    [root@localhost bin]# ./mysqldumpslow -s -c -t 20 /data/mysql/localhost-slow.log 
    2、连接数
    遇见“MySQL:ERROR 1040:Too manyconnections”的情况配置文件中max_connections的值过小。
    mysql> show variables like 'max_connections';
    查看过去最大连接数如果达到上限需要增大:
    mysql> show global status like 'Max_used_connections';
    3、key_buffer_size
    key_buffer_size是设置MyISAM表索引引擎缓存空间的大小
    mysql> show variables like 'key_buffer_size';
    4、临时表
    mysql>show global status like 'created_tmp%';
    5、open table的情况
    open_tables表示打开表的数量,opened_tables表示打开过的表数量
    mysql>show global status like 'open%tables%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Open_tables   | 9     |
    | Opened_tables | 15    |
    +---------------+-------+
    6、进程使用情况
    threads_created表示创建过的线程数
    mysql>show global status like 'Thread%';
    threads_created的值过大,表明MySQL服务器一直在创建线程,这也是比较耗资源的,可以适当增大配置文件中thread_cache_size的值。
    mysql>show variables like 'thread_cache_size';
    7、查询缓存
    query_cache_size用于设置MySQL的查询缓存(query cache)大小,query_cache_type用于设置使用查询缓存的类型
    8、排序使用情况
    mysql>show global status like 'sort%';
    9、文件打开数
    文件打开数(open_files)大于open_files_limit值时,MySQL数据库就会产生卡住的现象。
    mysql>show global status like 'open_files';
    mysql>show variables like 'open_files_limit';
    10、Innodb_buffer_pool_size的合理设置
    

     平台配置:

    [client]
    default-character-set=utf8
    port      =3306
    socket     =/tmp/mysql.sock
    [mysqld]
    user      =mysql
    port      =3306
    socket     =/tmp/mysql.sock
    basedir    =/usr/local/mysql
    datadir    =/data/mysql/data
    log-error   =/data/mysql/mysql-error.log
    pid-file    =/data/mysql/mysql.pid
    old-passwords =1
    log_slave_updates=1
    log-bin       =/data/mysql/binlog/mysql-bin
    binlog_format    =mixed
    binlog_cache_size  =4M
    max_binlog_cache_size=8M
    max_binlog_size   =1G
    expire_logs_days   =90
    binlog-ignore-db  =mysql
    binlog-ignore-db  =test
    binlog-ignore-db  =information_schema
    key_buffer_size     =384M
    sort_buffer_size    =2M
    read_buffer_size    =2M
    read_rnd_buffer_size  =16M
    join_buffer_size    =2M
    thread_cache_size    =8
    query_cache_size    =32M
    query_cache_limit    =2M
    query_cache_min_res_unit=2k
    thread_concurrency   =32
    table_cache    =614
    table_open_cache =512
    open_files_limit =10240
    back_log     =600
    max_connections  =5000
    max_connect_errors=6000
    external-locking =FALSE
    max_allowed_packet   =16M
    default-storage-engine =MyISAM
    thread_stack      =192K
    transaction_isolation  =READ-COMMITTED
    tmp_table_size     =256M
    max_heap_table_size   =512M
    bulk_insert_buffer_size =64M
    myisam_sort_buffer_size =64M
    myisam_max_sort_file_size=10G
    myisam_repair_threads  =1
    myisam_recover
    long_query_time   =2
    slow_query_log
    slow_query_log_file =/data/mysql/slow.log
    skip-name-resolve
    skip-locking
    skip-networking
    innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size = 512M
    innodb_data_file_path = ibdata1:256M:autoextend
    innodb_file_io_threads = 4
    innodb_thread_concurrency = 8
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 16M
    innodb_log_file_size = 128M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
    innodb_file_per_table = 0
    [mysqldump]
    quick
    max_allowed_packet = 64M
    [mysql]
    no-auto-rehash
    Remove the next comment character if you are not familiar with SQL
    safe-updates
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer   = 2M
    write_buffer  = 2M
    [mysqlhotcopy]
    interactive-timeout
    
  • 相关阅读:
    java的异常抛出和String类常用方法
    监控工具zabbix
    监控工具nagios
    监控工具cacti
    LB集群
    高可用集群(HA)配置
    vsftp虚拟用户登录配置详解
    Ubuntu中设置静态IP和DNS(转载)
    虚拟机克隆linux系统后需要做的网络设置
    CentOS 6.8编译安装httpd2.2.31+MySQL5.6.31+PHP5.3.27
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/7834037.html
Copyright © 2020-2023  润新知