搜索
首页数据库mysql教程Mysql的编译安装以及简单介绍

Mysql的编译安装以及简单介绍

Sep 30, 2017 am 10:56 AM
mysql简单

==========MYSQL工作原理图:

  

1》数据库简介:简单的说数据库(database)就是一个存储数据的仓库,它将数据按照特定的规律存储到磁盘上,通过数据库管理系统,能够有效的管理存储在数据库中                            的数据;
      SQL语言:  DBMS是通过SQL语言来进行数据库管理的。SQL语言是一种查询和设计语言,主要用于存储数据,查询数据 更新和管理关系数据库;
      SQL语言总共分为三个部分

           DDL(Data Definition Language)语句,用于定义数据库表、试图索引和触发器等等
           create
           alter
           drop
           rename
           truncate
           comment
     DML(Data Maniplulation Language)语句用于插入数据,查询数据、更新数据和删除数据
          select
          insert
          update
          delete
    DCL(Data Control Language)语句,用于控制用户的访问权限
          grant
          revoke

   常见的数据库系统有哪些:
         1.甲骨文Oracle
        2.IBM的DB2
        3.Sybase
        4.微软Access和SQL Server
        5.开源PostgreSQL
        6.开源Mysql

  Mysql特性:
       1.跨平台,支持多种操作系统,AIX FreeBSD HP-UX Linux MacOS NovellNetware OpenBSD Solaris windows 等等
       2.支持多线程,可以充分的利用硬件资源(CPU资源)
       3.支持大型数据库,可以处理拥有上千万条大型数据库。
       4.支持多种插件式存储引擎

mysql-server-5.6

    1)InnoDB现在可以限制大量表打开的时候内存占用过多的问题(比如这里提到的)(第三方已有补丁)
    2)InnoDB性能加强。如分拆kernel mutex;flush操作从主线程分离;多个perge线程;大内存优化等
    3)InnoDB死锁信息可以记录到 error 日志,方便分析
    4)MySQL5.6支持延时复制,可以让slave跟master之间控制一个时间间隔,方便特殊情况下的数据恢复。
    5)表分区功能增强
    6)MySQL行级复制功能加强,可以降低磁盘、内存、网络等资源开销(只记录能确定行记录的字段即可)
    7)Binlog实现 crash-safe
    8)复制事件采用crc32校验,增强master/slave 复制数据一致性
    9)新增 log_bin_basename (以前variables里面没有binlog位置信息,对数据库的监管很不方便)

  2》编译安装MYSQL:
       1>安装依赖包:
             

yum install gcc gcc-c++ ncurses-devel perl cmake bison

       2>创建用户:
           

# groupadd mysql
             # useradd mysql –g mysql –s /sbin/nologin
             #mkdir -p /usr/local/mysql //Mysql的安装目录
             #mkdir -p /data/mysqldb  //Mysql数据目录
             #mkdir -p /data/mysqldb/binlog //创建BINLOG日志目录   
             #mkdir -p /data/mysqldb/log   //创建MYSQL 日常LOG目录

        3>安装Mysql:
             

#tar -xvf mysql-5.6.31.tar.gz             
#cd mysql-5.6.31
                           
                           cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \           
                           -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \          
                           -DSYSCONFDIR=/etc \          
                           -DDEFAULT_CHARSET=gbk \          
                           -DDEFAULT_COLLATION=gbk_chinese_ci \          
                           -DWITH_INNOBASE_STORAGE_ENGINE=1  \          
                           -DWITH_ARCHIVE_STORAGE_ENGINE=1 \          
                           -DWITH_BLACKHOLE_STORAGE_ENGINE=1  \          
                           -DWITH_FEDERATED_STORAGE_ENGINE=1 \          
                           -DWITH_PARTITION_STORAGE_ENGINE=1  \          
                           -DMYSQL_DATADIR=/data/mysqldb  \          
                           -DMYSQL_TCP_PORT=3306  \

    ***注意:重新运行配置,需要删除CMakeCache.txt文件

     ==========编译解析:

    #cmake  编译命令

      -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 设置mysql安装目录

      -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 设置监听套接字路径,这必须是一个绝对路径名。默认为/tmp/mysql.sock
      -DSYSCONFDIR=/etc 配置文件放在/etc/下面
      -DDEFAULT_CHARSET=gbk 设置服务器的字符集。
                                                                    缺省情况下,MySQL使用latin1的(CP1252西欧)字符集。cmake/character_sets.cmake文件包含允许的字符集名称列                                                                         表。
      -DDEFAULT_COLLATION=gbk_chinese_ci 设置服务器的排序规则。
      -DWITH_INNOBASE_STORAGE_ENGINE=1
      -DWITH_ARCHIVE_STORAGE_ENGINE=1
      -DWITH_BLACKHOLE_STORAGE_ENGINE=1
  存储引擎选项:
    MyISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。
    静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1
      可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEM)                                                         (Performance Schema)

      -DMYSQL_DATADIR=/data/mysqldb  设置mysql数据库文件目录

      -DMYSQL_TCP_PORT=3306 设置mysql服务器监听端口,默认为3306

      -DENABLE_DOWNLOADS=1
               是否要下载可选的文件。例如,启用此选项(设置为1),cmake将下载谷歌所使用的测试套件运行单元测试

        4> make && make isntall
   5>初始化:
          给Mysql安装目录进行授权
            # chown  mysql:mysql /usr/local/mysql -R
          给Mysql数据存储目录进行授权
            # chown  mysql:mysql /data/mysqldb -R
          给Mysl日志目录进行授权
           #chown mysql:mysql /data/mysqldb/binlog/
           #chown mysql:mysql /data/mysqldb/log/
        开始初始化:
           /usr/local/mysql/scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb

        复制Mysql服务启动脚本
          # cp /usr/local/mysql/support-files/mysql.server   /mysql.server /etc/init.d/mysqld
          # chmod 755 /etc/init.d/mysqld

               修改mysql服务启动脚本 (多实例才需要)
          # vim /etc/init.d/mysqld
           basedir=/usr/local/mysql
           datadir=/data/mysqldb

            6>配置文件
        以后在企业里面没有现成my.cnf ,如果编译安装后,没有在/etc/找到my.cnf 那么请到原始的编译目录,也就是解压包的目录里面找到support-files这个目                  录,将my-default.cnf 拷贝到/etc/my.cnf;

        # cd mysql-5.6.31
        #cp support-files/my-default.cnf /etc/my.cnf

=========配置文件详解:
  # vim /etc/my.cnf
[client]
port = 3306           //客户端所连接的端口号
socket = /tmp/mysql.sock  //客户端所连接的sock文件存放位置

[mysqld]
#base
port = 3306         //mysql的默认端口号,可以修改
user = mysql        //mysql用户指定
socket = /tmp/mysql.sock  //连接所使用的端口号
pid-file = /tmp/mysql.pid  //进程运行的主PID文件
basedir = /usr/local/mysql  //Mysql安装目录
datadir = /data/mysqldb  //Mysql数据目录
tmpdir = /opt/mysqltmp   //Mysql临时表目录
open_files_limit = 10240  //打开文件句柄的数量
explicit_defaults_for_timestamp
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
federated   //支持sql语法和数据校验等.sql_mode三种模式
ANSI模式、宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或者截断保存,报“warning”警告

TRADITIONAL模式、严格模式,当向mysql数据插入数据时、进行数据的严格校验,保证数据不能插入,报error错误,用于事物时,会进行事物回滚.

STRICT_TRANS_TABLES模式。严格模式,进行数据的严格校验,错误数据不能插入,报error错误.

server_id = 706 //主从复制唯一的服务辨识号,数值位于 1 到
#replicate-do-db = posp  //定义唯一复制的库
#replicate-ignore-db = mysql //定义唯一复制的库
#log-slave-updates = 1 //这个选项之再主从复制。从服务器上打开复制主的信息
event_scheduler=1   //打开时间调度器

max_connections = 2000 //#最大并发连接数 ,增大该值需要相应增加允许打开的文件描述符数
max_connect_errors = 10000 //如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞,
interactive_timeout = 600 //服务器关闭交互连接前等待活动的秒数
wait_timeout = 600 //服务器关闭非交互连接之前等待活动的秒数
skip-name-resolve //#garnt时,必须使用ip,不能使用主机名,禁用DNS解析
sync_binlog=0 //可以保证事务的安全。缺省为0
log_bin_trust_function_creators = 1  //打开mysql可自定义函数

character-set-server = utf8  //设定字符集
default_storage_engine = InnoDB //定义默认引擎

#log
log-bin = /data/mysqldb/binlog/mysql-bin  //指定binlog二进制日志的文件名称
binlog_cache_size = 32m   //binlog的缓存大小
max_binlog_cache_size = 10g //设定最大的binlog缓存
binlog_stmt_cache_size = 32m //设定最小的binlo缓存
table_open_cache = 2048 //表描述符缓存大小,可减少文件打开/关闭次数
max_binlog_size = 1024m //设置binlog日志文件最大为1G
binlog_format = mixed //binlog日志格式.
log_output = FILE //确认输出到日志文件
log-error = /data/mysqldb/log/mysql-error.log //mysql系统错误日志输出
slow_query_log = 1  //打开慢日志记录
slow_query_log_file = /data/mysqldb/log/mysql-slow_query.log //定义慢日志输出的路径
general_log = 0  //定义普通日志
general_log_file = /data/mysqldb/log/mysql-general-query.log //定义普通日志输出的路径
expire-logs-days = 30 //日志保留的时间为30天
relay-log = /data/mysqldb/binlog/relay-bin //定义reloa_log复制的地址
relay-log-index= /data/mysqldb/binlog/relay-bin.index //定义reloa_log索引

#buffer
sort_buffer_size = 2m  //#MyISAM表发生变化时重新排序所需的缓冲。一般64M足矣
read_buffer_size = 2m //用来做MyISAM表全表扫描的缓冲大小.
read_rnd_buffer_size = 2m //#当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道
join_buffer_size = 2m //# InnoDB用来缓存数据和

net_buffer_length = 16k //执行mysqldump时,net buffer length的最大上限是16Mb,默认值是1Mb
max_allowed_packet = 512m  //每个连接独立的大小.大小动态增加
bulk_insert_buffer_size = 32m //# 当突发插入被检测到时此缓冲将被分配用于myisam
max_heap_table_size = 512m//#内存表的大小
tmp_table_size = 512m//# 内部(内存中)临时表的最大大小
thread_cache_size = 100 //#缓存可重用的线程数,可以适当的调整
query_cache_size = 256m //#指定MySQL查询结果缓冲区的大小。调优可以适当调整
query_cache_limit = 10m //#缓存单条SQL的结果集上限。默认4KB。调优可以适当调整
query_cache_min_res_unit = 4k
key_buffer_size = 16m //#关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块
myisam_sort_buffer_size = 64m //# 这在每个线程中被分配.所以在设置大值时需要小心
myisam_max_sort_file_size = 10g //MySQL重建索引时所允许的最大临时文件的大小如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_repair_threads = 1 //#如果一个表拥有超过一个索引, MyISAM

#innodb
innodb_file_per_table = 1 #//#可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_data_file_path = ibdata1:2048M:autoextend //#如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了
innodb_log_file_size = 128m //#在日志组中每个日志文件的大小,
innodb_log_files_in_group = 3 //# 在日志组中的文件总数.  通常来说2~3是比较好的
innodb_buffer_pool_size = 1g //innodb缓存池大小
innodb_buffer_pool_instances = -1
innodb_max_dirty_pages_pct = 70 //#在InnoDB缓冲池中最大允许的脏页面的比例.  60-90都可以
#innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16m # 用来缓冲日志数据的缓冲区的大小.  当此值快满时, InnoDB将必须刷新数据到磁盘上
innodb_flush_log_at_trx_commit = 2
0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘# 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上

[mysql]
no-auto-rehash #可以在命令可以使用tab键补齐
prompt = (u@h) [d]_ #在Mysql命令显示主机名字
default-character-set = utf8  //设定字符集合

           7>启动服务和设置环境变量:
          #:vim /etc/profile  文件的最后面。
            MYSQL=/usr/local/mysql/bin
            PATH=$PATH:$MYSQL
            export PATH
          #:source /etc/profile //生效

          启动服务
            # /etc/init.d/mysqld start

     注意:
         log_slave_updates           主从复制的时候。在主(master)服务器上关闭此选项,在从(slave)上面开启此选项  

  ====================常见问题分析:
      启动数据库后遇到的错误:

            

        解决方法:
    1》在配置文件中注释掉 关于 innodb_data_file_path 的一行;
    2》 删除掉 ibdata1   ibprofile0  ibprofile1

  错误二:
    1》需要创建一个缺少的文件夹;
    2》对要创建的文件夹的上一目录进行权限设置:
      chown   mysql:mysql   /tmpopt/
    3》可能还需要删除一些文件,在自己的目录下找到以下文件并删除:
            ibdata1   ibprofile0  ibprofile1

 

以上是Mysql的编译安装以及简单介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL中的存储过程是什么?MySQL中的存储过程是什么?May 01, 2025 am 12:27 AM

存储过程是MySQL中的预编译SQL语句集合,用于提高性能和简化复杂操作。1.提高性能:首次编译后,后续调用无需重新编译。2.提高安全性:通过权限控制限制数据表访问。3.简化复杂操作:将多条SQL语句组合,简化应用层逻辑。

查询缓存如何在MySQL中工作?查询缓存如何在MySQL中工作?May 01, 2025 am 12:26 AM

MySQL查询缓存的工作原理是通过存储SELECT查询的结果,当相同查询再次执行时,直接返回缓存结果。1)查询缓存提高数据库读取性能,通过哈希值查找缓存结果。2)配置简单,在MySQL配置文件中设置query_cache_type和query_cache_size。3)使用SQL_NO_CACHE关键字可以禁用特定查询的缓存。4)在高频更新环境中,查询缓存可能导致性能瓶颈,需通过监控和调整参数优化使用。

与其他关系数据库相比,使用MySQL的优点是什么?与其他关系数据库相比,使用MySQL的优点是什么?May 01, 2025 am 12:18 AM

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

您如何处理MySQL中的数据库升级?您如何处理MySQL中的数据库升级?Apr 30, 2025 am 12:28 AM

MySQL数据库升级的步骤包括:1.备份数据库,2.停止当前MySQL服务,3.安装新版本MySQL,4.启动新版本MySQL服务,5.恢复数据库。升级过程需注意兼容性问题,并可使用高级工具如PerconaToolkit进行测试和优化。

您可以使用MySQL的不同备份策略是什么?您可以使用MySQL的不同备份策略是什么?Apr 30, 2025 am 12:28 AM

MySQL备份策略包括逻辑备份、物理备份、增量备份、基于复制的备份和云备份。1.逻辑备份使用mysqldump导出数据库结构和数据,适合小型数据库和版本迁移。2.物理备份通过复制数据文件,速度快且全面,但需数据库一致性。3.增量备份利用二进制日志记录变化,适用于大型数据库。4.基于复制的备份通过从服务器备份,减少对生产系统的影响。5.云备份如AmazonRDS提供自动化解决方案,但成本和控制需考虑。选择策略时应考虑数据库大小、停机容忍度、恢复时间和恢复点目标。

什么是mySQL聚类?什么是mySQL聚类?Apr 30, 2025 am 12:28 AM

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

如何优化数据库架构设计以在MySQL中的性能?如何优化数据库架构设计以在MySQL中的性能?Apr 30, 2025 am 12:27 AM

在MySQL中优化数据库模式设计可通过以下步骤提升性能:1.索引优化:在常用查询列上创建索引,平衡查询和插入更新的开销。2.表结构优化:通过规范化或反规范化减少数据冗余,提高访问效率。3.数据类型选择:使用合适的数据类型,如INT替代VARCHAR,减少存储空间。4.分区和分表:对于大数据量,使用分区和分表分散数据,提升查询和维护效率。

您如何优化MySQL性能?您如何优化MySQL性能?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中