首页 > 代码库 > Mysql入门基础(2)-->Mysql数据库安装

Mysql入门基础(2)-->Mysql数据库安装

第二章      Mysql数据库安装

声明数据库和实例:

在数据库领域中有两个词很容易混淆,它们就是“实例“和数据库(database).

  • 数据库:在物理操作系统上,以文件或者其它的形式文件类型的集合,在Mysql中,数据库文件可以,frm,myd,myi,等文件结尾,

 

  • 数据库实例:是由数据库后台的进程/线程以及一共享内存区组成,这个区域可以被运行在后台线程和进程所共享,需要牢记的是,数据实例才是真正用来操作数据库文件的。

 

实例和数据库的通常关系是---11对应的,即是一个实例对用一个数据库,或者一个数据库对应一个实例。在集群的情况下可能存在一个数据库对应多个实例。

 

数据库系统工作原理:

(1)用户发起向数据库发起连接

(2)Mysql数据库验证权限。如果权限不够。直接拒绝,权限OK,进入下一步

(3)用户开始发起SQL语句

(4)Mysql数据库解析器开始解析SQL语句

(5) Mysql开始查询自己的本地缓存,有的话。直接反馈用户,没有的话,进入下一步

(6)经过解析器。对SQL语句进行定位,最后找到所需要的数据,在本地缓存一份,然后直接反馈给用户.

 

(7)Mysql版本最近的 5 .0à5.1à5.2à5.3à5.4à5.5à5.6à5.7

 

 

2.1、安装依赖包

#yum install gcc gcc-c++ ncurses-devel perl camke bison

 

2.2、创建用户

# groupadd mysql

# useradd mysql –g mysql –s /sbin/nologin

#mkdir -p /usr/local/mysq

#mkdir -p /data/mysqldbl

2.3、安装Mysql

源码下载

http://120.52.72.19/cdn.mysql.com/c3pr90ntc0td//Downloads/MySQL-5.6/mysql-5.6.31.tar.gz

#tar -xvf mysql-5.6.31.tar.gz

#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文件

# make && make install 编译后安装

解释:

#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_setsNaNake文件包含允许的字符集名称列表。

-DDEFAULT_COLLATION=gbk_chinese_ci 设置服务器的排序规则。

 

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

存储引擎选项:

MyISAMMERGEMEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。

静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1

可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), PERFSCHEMA (Performance Schema)

 

-DMYSQL_DATADIR=/data/mysqldb

设置mysql数据库文件目录

-DMYSQL_TCP_PORT=3306

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

-DENABLE_DOWNLOADS=1

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

2.4、初始化

建立Mysql的数据存储目录

# mkdir–p /data/mysqldb/

 

Mysql安装目录进行授权

# chown -R mysql:mysql /usr/local/mysql

 

 

Mysql数据存储目录进行授权

# chown -R mysql:mysql /data/mysqldb

 

开始初始化

/usr/local/services/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb

 

复制Mysql服务启动脚本

# cp /usr/local/services/mysql/share/mysql/mysql.server /etc/init.d/mysqld

# chmod 755 /etc/init.d/mysqld

 

修改mysql服务启动脚本

# vim /etc/init.d/mysqld

basedir=/usr/local/services/mysql

datadir=/data/dbdata/

 

2.5、配置文件

#cp support-files/my-medium.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  //设定字符集合

 

 

2.6、启动服务和设置环境变量

#:vim /etc/profile

MYSQL=/usr/local/services/mysql/bin

PATH=$PATH:$MYSQL

export PATH

#:source /etc/profile

启动服务

# /etc/init.d/mysqld start

注意:

log_slave_updates

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

 

2.7、本章练习题目

  (1)、要求安装Mysql数据库版本号及包名为:mysql-5.1.50.tar.gz

  (2)、安装目录为/usr/local/services

  (3)、数据存储目录为/dbdata

  (4)、配置文件存放为/etc/my.cnf

  (5)、用户名为mysql

  (6)、要求设置环境变量,服务加入开机自动启动,

本文出自 “Linux运维” 博客,请务必保留此出处http://2999835.blog.51cto.com/2989835/1854465

Mysql入门基础(2)-->Mysql数据库安装