• centos 7 MysSQL 5.6.39 源码安装


    MySQL 5.6.39 二进制安装

    CentOS 7 将默认数据库MySQL替换成了Mariadb
    这里会从系统的环境准备开始一步一步安装。

    环境准备

    系统版本 内核版本 IP地址
    Centos 7.5 4.18.9-1.el7.elrepo.x86_64 10.0.0.3

    备注 该系统采用MINI最小化安装,安装之后对系统进行了最基础的优化操作,操作过程点击这里

    删除系统自带的依赖包

    [root@node soft]# rpm -qa | egrep 'mysql|mariadb'
    mariadb-libs-5.5.56-2.el7.x86_64
    [root@node soft]# rpm -qa | egrep 'mysql|mariadb' | xargs rpm -e --nodeps
    [root@node soft]# rpm -qa | egrep 'mysql|mariadb'
    [root@node soft]# 
    

    创建MySQL运行用户

    [root@node soft]# useradd -s /sbin/nologin -M mysql
    [root@node soft]# grep mysql /etc/passwd
    mysql:x:1000:1000::/home/mysql:/sbin/nologin
    

    下载 MySQL

    可以在mirrors.163.com的163源下载,点击我下载

    如果上面的下载地址失效了,则可以使用百度网盘:链接:https://pan.baidu.com/s/1Ubr_aZbKgiYKuL8cegkP0w
    提取码:dkr7

    [root@node soft]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39.tar.gz
    [root@node soft]# ls
    mysql-5.6.39.tar.gz
    # 解压
    [root@node soft]# tar xf mysql-5.6.39.tar.gz 
    [root@node soft]# ls
    mysql-5.6.39  mysql-5.6.39.tar.gz
    

    编译安装

    首先准备编译环境

    使用yum下载编译工具和其他依赖包

    [root@node soft]# yum install cmake bison git ncurses-devel gcc gcc-c++ -y
    

    使用cmake编译工具对mysql进行编译

    [root@node soft]# pwd
    /opt/soft
    [root@node soft]# ls
    mysql-5.6.39  mysql-5.6.39.tar.gz
    [root@node soft]# cd mysql-5.6.39
    [root@node mysql-5.6.39]# ls
    BUILD   CMakeLists.txt  configure.cmake  Docs                 include   libmysql     man         mysys_ssl  README   sql         storage        tests     vio
    client  cmd-line-utils  COPYING          Doxyfile-perfschema  INSTALL   libmysqld    mysql-test  packaging  regex    sql-bench   strings        unittest  win
    cmake   config.h.cmake  dbug             extra                libevent  libservices  mysys       plugin     scripts  sql-common  support-files  VERSION   zlib
    [root@node mysql-5.6.39]# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.6.39 
    > -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 
    > -DDEFAULT_CHARSET=utf8 
    > -DDEFAULT_COLLATION=utf8_general_ci 
    > -DWITH_INNOBASE_STORAGE_ENGINE=1 
    > -DWITH_ARCHIVE_STORAGE_ENGINE=1 
    > -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    > -DMYSQL_DATADIR=/opt/mysql-5.6.39/data 
    > -DMYSQL_TCP_PORT=3306 
    > -DENABLE_DOWNLOADS=1
    ............................................................
    .....................过程太多就不复制了.....................
    ............................................................
    -- GTEST_LIBRARIES:gmock;gtest
    -- Library mysqlserver depends on OSLIBS -lpthread;m;crypt;dl
    -- Skipping deb packaging on unsupported platform .
    -- CMAKE_BUILD_TYPE: RelWithDebInfo
    -- COMPILE_DEFINITIONS: HAVE_CONFIG_H
    -- CMAKE_C_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement
    -- CMAKE_CXX_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter
    -- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
    -- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /opt/soft/mysql-5.6.3
    
    
    # 然后是构建安装
    [root@node mysql-5.6.39]# make && make install
    # make的时候回显示百分比,当结尾没有报错的时候,就说明安装完成了
    ............................................................
    .....................过程太多就不复制了.....................
    ............................................................
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/innotest2b
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/run-all-tests
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/server-cfg
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-ATIS
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-alter-table
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-big-tables
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-connect
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-create
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-insert
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-select
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-transactions
    -- Up-to-date: /opt/mysql-5.6.39/sql-bench/test-wisconsin
    -- Installing: /opt/mysql-5.6.39/sql-bench/cmake_install.cmake
    -- Installing: /opt/mysql-5.6.39/sql-bench/CTestTestfile.cmake
    [root@node mysql-5.6.39]# ls /opt/
    mysql-5.6.39  soft
    # 这里可以看到已经安装完成了
    

    配置环境变量

    [root@node ~]# cd /opt/
    [root@node opt]# ls
    mysql-5.6.39  soft
    [root@node opt]# chown -R mysql.mysql mysql-5.6.39/
    [root@node opt]# echo 'export PATH=$PATH:/opt/mysql-5.6.39/bin' >> /etc/profile
    [root@node opt]# tail -1 /etc/profile
    export PATH=$PATH:/opt/mysql/bin
    [root@node opt]# source /etc/profile
    [root@node opt]# mysql -V
    mysql  Ver 14.14 Distrib 5.6.39, for Linux (x86_64) using  EditLine wrapper
    

    配置MySQL启动脚本并设置开机自启

    二进制解压后的目录中,包括了MySQL的启动关闭脚本,可以使用,也可以自己写systemctl管理脚本

    [root@node opt]# cd soft/mysql-5.6.39/
    [root@node mysql-5.6.39]# pwd
    /opt/soft/mysql-5.6.39
    [root@node mysql-5.6.39]# ls
    BUILD           cmake_install.cmake  COPYING                  Docs                 INSTALL               libservices      mysys           README            sql-bench      tests        win
    client          CMakeLists.txt       CPackConfig.cmake        Doxyfile-perfschema  install_manifest.txt  make_dist.cmake  mysys_ssl       regex             sql-common     unittest     zlib
    cmake           cmd-line-utils       CPackSourceConfig.cmake  extra                libevent              Makefile         packaging       scripts           storage        VERSION
    CMakeCache.txt  config.h.cmake       CTestTestfile.cmake      include              libmysql              man              plugin          source_downloads  strings        VERSION.dep
    CMakeFiles      configure.cmake      dbug                     info_macros.cmake    libmysqld             mysql-test       probes_mysql.o  sql               support-files  vio
    [root@node mysql-5.6.39]# cp support-files/mysql.server
    mysql.server          mysql.server.sh       mysql.server-sys5.sh  
    [root@node mysql-5.6.39]# cp support-files/mysql.server /etc/init.d/mysqld
    [root@node mysql-5.6.39]# chmod +x /etc/init.d/mysqld
    [root@node mysql-5.6.39]# chkconfig --add mysqld
    [root@node mysql-5.6.39]# chkconfig mysqld on
    [root@node mysql-5.6.39]# chkconfig  | grep mysql
    
    Note: This output shows SysV services only and does not include native
          systemd services. SysV configuration data might be overridden by native
          systemd configuration.
    
          If you want to list systemd services use 'systemctl list-unit-files'.
          To see services enabled on particular target use
          'systemctl list-dependencies [target]'.
    
    mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
    

    配置文件

    [root@node mysql-5.6.39]# pwd
    /opt/mysql-5.6.39
    # 配置文件
    [root@node mysql-5.6.39]# cat my.cnf 
    [client]
    port = 3306
    socket = /tmp/mysql.sock
    
    [mysql]
    no-auto-rehash
       
    [mysqld]
    user = mysql
    port = 3306
    socket = /tmp/mysql.sock
    basedir = /opt/mysql-5.6.39/
    datadir = /opt/mysql-5.6.39/data
    character_set_server=utf8
    open_files_limit = 1024
    back_log = 600
    max_connections = 800
    max_connect_errors = 3000
    #table_cache = 614
    external-locking = FALSE
    max_allowed_packet = 8M
    sort_buffer_size = 1M
    join_buffer_size = 1M
    thread_cache_size = 100
    thread_concurrency = 2
    query_cache_size = 2M
    query_cache_limit = 1M
    query_cache_min_res_unit = 2k
    thread_stack = 192k
    tmp_table_size = 2M
    max_heap_table_size = 2M
    long_query_time = 1
    pid-file = /opt/mysql-5.6.39/mysql.pid
    relay-log = /opt/mysql-5.6.39/log/relay-bin
    relay-log-info-file = /opt/mysql-5.6.39/log/relay-log.info
    binlog_cache_size = 1M
    max_binlog_cache_size = 1M
    max_binlog_size = 2M
    key_buffer_size = 16M
    read_buffer_size = 1M
    read_rnd_buffer_size = 1M
    bulk_insert_buffer_size = 1M
    lower_case_table_names = 1
    skip-name-resolve
    slave-skip-errors = 1032,1062
    replicate-ignore-db=mysql
    server-id = 1
    innodb_additional_mem_pool_size = 4M
    innodb_buffer_pool_size = 32M
    #innodb_data_file_path = ibdata1: 128M: autoextend
    innodb_file_per_table = 0
    innodb_file_io_threads = 4
    innodb_thread_concurrency = 8
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 2M
    innodb_log_file_size = 4M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
       
       
    [mysqldump]
    quick
    max_allowed_packet = 2M
       
    [mysqld_safe]
    log-error=/opt/mysql-5.6.39/error.log
    pid-file=/opt/mysql-5.6.39/data/mysql.pid
    [root@node mysql-5.6.39]#  touch /opt/mysql-5.6.39/error.log
    [root@node mysql-5.6.39]#  chown -R mysql.mysql /opt/mysql-5.6.39/
    

    启动 测试

    [root@node mysql-5.6.39]# /etc/init.d/mysqld  start
    Starting MySQL. SUCCESS! 
    [root@node mysql-5.6.39]# ps aux|grep mysql
    root      19073  0.6  0.1 113320  3120 pts/0    S    10:03   0:00 /bin/sh /opt/mysql-5.6.39//bin/mysqld_safe --datadir=/opt/mysql-5.6.39/data --pid-file=/opt/mysql-5.6.39/mysql.pid
    mysql     19781  4.7 27.7 1505220 558988 pts/0  Sl   10:03   0:00 /opt/mysql-5.6.39/bin/mysqld --basedir=/opt/mysql-5.6.39/ --datadir=/opt/mysql-5.6.39/data --plugin-dir=/opt/mysql-5.6.39//lib/plugin --user=mysql --log-error=/opt/mysql-5.6.39/error.log --open-files-limit=1024 --pid-file=/opt/mysql-5.6.39/mysql.pid --socket=/tmp/mysql.sock --port=3306
    root      19804  0.0  0.1 112716  2256 pts/0    S+   10:03   0:00 grep --color=auto mysql
    [root@node mysql-5.6.39]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 1
    Server version: 5.6.39 Source distribution
    
    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> 
    mysql> 
    mysql> 
    mysql> q
    Bye
    

    查看日志

    [root@node mysql-5.6.39]# cat error.log
    2018-09-30 10:03:20 19781 [Note] Plugin 'FEDERATED' is disabled.
    2018-09-30 10:03:20 7fc9e78c9740 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
    2018-09-30 10:03:20 19781 [Note] InnoDB: Using atomics to ref count buffer pool pages
    2018-09-30 10:03:20 19781 [Note] InnoDB: The InnoDB memory heap is disabled
    2018-09-30 10:03:20 19781 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
    2018-09-30 10:03:20 19781 [Note] InnoDB: Memory barrier is not used
    2018-09-30 10:03:20 19781 [Note] InnoDB: Compressed tables use zlib 1.2.3
    2018-09-30 10:03:20 19781 [Note] InnoDB: Using CPU crc32 instructions
    2018-09-30 10:03:20 19781 [Note] InnoDB: Initializing buffer pool, size = 32.0M
    2018-09-30 10:03:20 19781 [Note] InnoDB: Completed initialization of buffer pool
    2018-09-30 10:03:20 19781 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
    2018-09-30 10:03:20 19781 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
    2018-09-30 10:03:20 19781 [Note] InnoDB: Database physically writes the file full: wait...
    2018-09-30 10:03:21 19781 [Note] InnoDB: Setting log file ./ib_logfile101 size to 4 MB
    2018-09-30 10:03:21 19781 [Note] InnoDB: Setting log file ./ib_logfile1 size to 4 MB
    2018-09-30 10:03:21 19781 [Note] InnoDB: Setting log file ./ib_logfile2 size to 4 MB
    2018-09-30 10:03:21 19781 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
    2018-09-30 10:03:21 19781 [Warning] InnoDB: New log files created, LSN=45781
    2018-09-30 10:03:21 19781 [Note] InnoDB: Doublewrite buffer not found: creating new
    2018-09-30 10:03:21 19781 [Note] InnoDB: Doublewrite buffer created
    2018-09-30 10:03:21 19781 [Note] InnoDB: 128 rollback segment(s) are active.
    2018-09-30 10:03:21 19781 [Warning] InnoDB: Creating foreign key constraint system tables.
    2018-09-30 10:03:21 19781 [Note] InnoDB: Foreign key constraint system tables created
    2018-09-30 10:03:21 19781 [Note] InnoDB: Creating tablespace and datafile system tables.
    2018-09-30 10:03:21 19781 [Note] InnoDB: Tablespace and datafile system tables created.
    2018-09-30 10:03:21 19781 [Note] InnoDB: Waiting for purge to start
    2018-09-30 10:03:21 19781 [Note] InnoDB: 5.6.39 started; log sequence number 0
    2018-09-30 10:03:21 19781 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 017c96dd-c455-11e8-9dc5-000c2916c9b7.
    2018-09-30 10:03:21 19781 [Note] Server hostname (bind-address): '*'; port: 3306
    2018-09-30 10:03:21 19781 [Note] IPv6 is available.
    2018-09-30 10:03:21 19781 [Note]   - '::' resolves to '::';
    2018-09-30 10:03:21 19781 [Note] Server socket created on IP: '::'.
    2018-09-30 10:03:21 19781 [Warning] 'user' entry 'root@node' ignored in --skip-name-resolve mode.
    2018-09-30 10:03:21 19781 [Warning] 'user' entry '@node' ignored in --skip-name-resolve mode.
    2018-09-30 10:03:21 19781 [Warning] 'proxies_priv' entry '@ root@node' ignored in --skip-name-resolve mode.
    2018-09-30 10:03:21 19781 [Warning] InnoDB: Cannot open table mysql/slave_master_info from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
    2018-09-30 10:03:21 19781 [Warning] Info table is not ready to be used. Table 'mysql.slave_master_info' cannot be opened.
    2018-09-30 10:03:21 19781 [Warning] InnoDB: Cannot open table mysql/slave_worker_info from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
    2018-09-30 10:03:21 19781 [Warning] InnoDB: Cannot open table mysql/slave_relay_log_info from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
    2018-09-30 10:03:21 19781 [Warning] Info table is not ready to be used. Table 'mysql.slave_relay_log_info' cannot be opened.
    2018-09-30 10:03:21 19781 [Note] Event Scheduler: Loaded 0 events
    2018-09-30 10:03:21 19781 [Note] /opt/mysql-5.6.39/bin/mysqld: ready for connections.
    Version: '5.6.39'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
    
    

    至此 使用二进制包安装mysql完成

  • 相关阅读:
    CF1313A Fast Food Restaurant
    模板: zkw线段树
    从5个经典工作开始看语义SLAM
    LeetCode题号[200,299]刷题总结
    2020春招实习总结
    LeetCode题号[100,199]刷题总结
    LeetCode题号[1,99]刷题总结
    HashMap源码详解
    动态规划——楼层扔鸡蛋问题
    图论——迪杰斯特拉算法和最小生成树
  • 原文地址:https://www.cnblogs.com/winstom/p/9728257.html
Copyright © 2020-2023  润新知