==========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简介与编译安装的更多相关文章

  1. MySQL 单实例编译安装 以及多实例安装简介

    这是基本的安装教程,与牛逼的大神无关,或许是牛逼大神不用看就会安装吧. CentOS 6.5 Final  x86_64 一.预安装软件包 1.开发包组合安装 yum groupinstall &qu ...

  2. CentOS下MySQL 5.7编译安装

    CentOS下MySQL 5.7编译安装   文章目录 安装依赖包 下载相应源码包 添加mysql用户 预编译 编译安装 启动脚本,设置开机自启动 /etc/my.cnf,仅供参考 初始化数据库 设置 ...

  3. mysql源码编译安装

    首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...

  4. Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置

    文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...

  5. CentOS MySQL 5.7编译安装

    CentOS MySQL 5.7编译安装 MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能: ...

  6. MySQL 5.5编译安装

    MYSQL数据库安装方法 yum/rpm方式安装mysql 只要执行yum install mysql-server即可. yum/rpm方式安装mysql应用场景:yum/rpm安装适用对数据库要求 ...

  7. MySQL服务 - MySQL 5.5编译安装

    cmake介绍: MySQL 5.5之后,所有的编译操作都通过cmake进行,使用cmake最大的好处是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码 ...

  8. ubuntu下mysql源码编译安装

    建议:cpu4核以上,内存4G以上 1. 安装环境:Ubuntu Server 14.10MySQL-5.6.23.tar.gz 2. 安装必备的工具sudo apt-get install make ...

  9. CentOS 下 MySQL 5.7 编译安装

    MySQL5.7主要特性: 1—更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是吾等用户更关心的 2—更好的In ...

随机推荐

  1. node启动appium.js

    node启动appium.js,appium.js目录中不能有空格或者(x86)等字样

  2. 十年Java架构师分享

    看到一篇十年java架构师分享需要掌握的技术点,有时间对照一下,好好学习一下. ------------------------------------------------------------ ...

  3. [z]计算机架构中Cache的原理、设计及实现

    前言 虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构.指令结构.信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速 ...

  4. ChannelHandler,ChannelHandlerContext,ChannelPipeline

    本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首 ...

  5. leetcode704

    public class Solution { public int Search(int[] nums, int target) { var len = nums.Length; ; ; if (t ...

  6. Java设计模式学习01——单例模式(转)

    原地址:http://blog.csdn.net/xu__cg/article/details/70182988 Java单例模式是一种常见且较为简单的设计模式.单例模式,顾名思义一个类仅能有一个实例 ...

  7. iOS学习之UIPickerView控件的简单使用

    UIPickerView控件在给用户选择某些特定的数据时经常使用到,这里演示一个简单的选择数据,显示在UITextField输入框里,把UIPickerView作为输入View,用Toolbar作为选 ...

  8. cdoj32-树上战争(Battle on the tree) 【记忆化搜索】

    http://acm.uestc.edu.cn/#/problem/show/32 树上战争(Battle on the tree) Time Limit: 12000/4000MS (Java/Ot ...

  9. Mesos的资源分配

    Apache Mesos能够成为最优秀的数据中心资源管理器的一个重要功能是面对各种类型的应用,它具备像交警一样的疏导能力.本文将深入Mesos的资源分配内部, 探讨Mesos是如何根据客户应用需求,平 ...

  10. KVC的底层实现原理

    KVC是OC特有的,本质是在运行时动态的给对象发送setValue:forKey 消息,设置数值 -调用super.init 保证对象已经被创建完成 .当给对象发送setValue:forKey 消息 ...