一、数据库概述
1、文本数据库缺陷 数据冗余和不一致 数据访问困难 数据孤立 完整性问题:数据状态改变前后,总状态要一致 原子性问题:多个操作看成一个操作,要么同时完成,要么同时不完成 并发访问问题: 安全性问题:只允许访问部分信息如何解决 2、DBMS 1)DBMS:DataBase Management System 数据库管理系统
用户层|视图层: 逻辑层 :完成用户层到视图层转换 物理层: 2)数据模型
层次模型 网状模型 关系模型 库和表 非关系型数据库模型:nosql 3)LAMP:Linux Apache MySql php/perl/python 开源数据库:sqlite,MySQL,PostgreSQL(EnterpriseDB),MariaDB,
二、MySQL
事务:一次多次操作的组合;把多个操作当作一个操作,要么都同时执行,要么都同时不执行 线程池:用来管理连接的管理件
ODBC:Open DataBase Connectivity
ANSI:SQL-86,SQL-89,SQL-92,SQL-99,SQL-2003
C/S架构:mysql/mysqld
2、安装MySQL
官网:www.mysql.com
四种方式安装mysql:
1)Vendor:操作系统自带的rpm包
2)MySql官方rpm包
3)通用二进制格式
4)源码编译
主流5.5
硬件:内存足够大,硬盘足够快
建议做在硬raid的lvm上
实例:基于通用二进制格式,以5.5为例
注意:通用二进制安装路径必须为/usr/local/mysql
创建系统用户mysql来运行mysqld
1)下载安装包,解压及链接到/usr/local/mysql,
1
2
3
4
5
6
7
8
| [iyunv@BAIYU_179 ~]# ls
anaconda-ks.cfg install.log install.log.syslog mysql-5.5.33-linux2.6-x86_64.tar.gz trash.sh
[iyunv@BAIYU_179 ~]# tar xfC mysql-5.5.33-linux2.6-x86_64.tar.gz /usr/local
[iyunv@BAIYU_179 ~]# cd /usr/local
[iyunv@BAIYU_179 local]# ls
bin etc games include lib lib64 libexec mysql-5.5.33-linux2.6-x86_64 sbin share src
[iyunv@BAIYU_179 local]# ln -sv mysql-5.5.33-linux2.6-x86_64/ mysql
"mysql" -> "mysql-5.5.33-linux2.6-x86_64/"
|
2)创建系统用户mysql和数据存放目录,并修改/usr/local/mysql/目录下所有文件的属主属组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| [iyunv@BAIYU_179 local]# useradd -rs /sbin/nologin mysql
[iyunv@BAIYU_179 local]# cd mysql
[iyunv@BAIYU_179 mysql]# ll
总用量 200
drwxr-xr-x 2 root root 4096 10月 27 16:59 bin
-rw-r--r-- 1 7161 wheel 17987 7月 15 2013 COPYING
drwxr-xr-x 3 root root 4096 10月 27 16:59 data
drwxr-xr-x 2 root root 4096 10月 27 16:59 docs
drwxr-xr-x 3 root root 4096 10月 27 16:59 include
-rw-r--r-- 1 7161 wheel 134493 7月 15 2013 INSTALL-BINARY
drwxr-xr-x 3 root root 4096 10月 27 16:59 lib
drwxr-xr-x 4 root root 4096 10月 27 17:00 man
drwxr-xr-x 10 root root 4096 10月 27 17:00 mysql-test
-rw-r--r-- 1 7161 wheel 2496 7月 15 2013 README
drwxr-xr-x 2 root root 4096 10月 27 17:00 scripts
drwxr-xr-x 27 root root 4096 10月 27 16:59 share
drwxr-xr-x 4 root root 4096 10月 27 17:00 sql-bench
drwxr-xr-x 3 root root 4096 10月 27 17:00 support-files
[iyunv@BAIYU_179 mysql]# chown -R mysql.mysql ./
[iyunv@BAIYU_179 mysql]# ll
总用量 200
drwxr-xr-x 2 mysql mysql 4096 10月 27 16:59 bin
-rw-r--r-- 1 mysql mysql 17987 7月 15 2013 COPYING
drwxr-xr-x 3 mysql mysql 4096 10月 27 16:59 data
drwxr-xr-x 2 mysql mysql 4096 10月 27 16:59 docs
drwxr-xr-x 3 mysql mysql 4096 10月 27 16:59 include
-rw-r--r-- 1 mysql mysql 134493 7月 15 2013 INSTALL-BINARY
drwxr-xr-x 3 mysql mysql 4096 10月 27 16:59 lib
drwxr-xr-x 4 mysql mysql 4096 10月 27 17:00 man
drwxr-xr-x 10 mysql mysql 4096 10月 27 17:00 mysql-test
-rw-r--r-- 1 mysql mysql 2496 7月 15 2013 README
drwxr-xr-x 2 mysql mysql 4096 10月 27 17:00 scripts
drwxr-xr-x 27 mysql mysql 4096 10月 27 16:59 share
drwxr-xr-x 4 mysql mysql 4096 10月 27 17:00 sql-bench
drwxr-xr-x 3 mysql mysql 4096 10月 27 17:00 support-files
[iyunv@BAIYU_179 mysql]# mkdir /data/mydata
[iyunv@BAIYU_179 mysql]# chown -R mysql.mysql /data/mydata/ #mysql用户肯定要有这个目录的权限咯
|
3)初始化mysql并创建mysql服务脚本及配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| [iyunv@BAIYU_179 mysql]# scripts/mysql_install_db --datadir=/data/mydata --user=mysql
[iyunv@BAIYU_179 mysql]# ls /data/mydata
mysql performance_schema test #每个目录(文件不是哦)被视为一个库
[iyunv@BAIYU_179 mysql]# chown -R root . #将mysql目录下的所有文件属主改为root
[iyunv@BAIYU_179 mysql]# ll
总用量 200
drwxr-xr-x 2 root mysql 4096 10月 27 16:59 bin
-rw-r--r-- 1 root mysql 17987 7月 15 2013 COPYING
drwxr-xr-x 3 root mysql 4096 10月 27 16:59 data
drwxr-xr-x 2 root mysql 4096 10月 27 16:59 docs
drwxr-xr-x 3 root mysql 4096 10月 27 16:59 include
-rw-r--r-- 1 root mysql 134493 7月 15 2013 INSTALL-BINARY
drwxr-xr-x 3 root mysql 4096 10月 27 16:59 lib
drwxr-xr-x 4 root mysql 4096 10月 27 17:00 man
drwxr-xr-x 10 root mysql 4096 10月 27 17:00 mysql-test
-rw-r--r-- 1 root mysql 2496 7月 15 2013 README
drwxr-xr-x 2 root mysql 4096 10月 27 17:00 scripts
drwxr-xr-x 27 root mysql 4096 10月 27 16:59 share
drwxr-xr-x 4 root mysql 4096 10月 27 17:00 sql-bench
drwxr-xr-x 3 root mysql 4096 10月 27 17:00 support-files
[iyunv@BAIYU_179 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld #服务脚本
[iyunv@BAIYU_179 mysql]# chkconfig --add mysqld
[iyunv@BAIYU_179 mysql]# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[iyunv@BAIYU_179 mysql]# \cp support-files/my-large.cnf /etc/my.cnf #配置文件
|
4)配置mysql配置文件/etc/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| [iyunv@BAIYU_179 mysql]# grep -Ev '^#|^$' /etc/my.cnf
[client] #应用于所有客户端
port = 3306
socket = /tmp/mysql.sock
[mysqld] #应用于服务器端
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 2 #线程数,建议cpu核心数的2倍
datadir = /data/mydata #添加这一行定义数据存储目录
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql] #只应用于mysql这一种客户端
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
|
5)启动Mysqld并测试
1
2
3
4
5
6
7
| [iyunv@BAIYU_179 mysql]# service mysqld start
Starting MySQL... SUCCESS!
[iyunv@BAIYU_179 mysql]# mysql
-bash: mysql: command not found
[iyunv@BAIYU_179 mysql]# ls /data/mydata
BAIYU_179.err ibdata1 ib_logfile1 mysql-bin.000001 performance_schema
BAIYU_179.pid ib_logfile0 mysql mysql-bin.index test
|
发现启动mysql后在数据存储目录生成了很多文件:
存储引擎:(表类型)
mysql是插件式存储引擎
MyISAM
InnoDB(Oracle)-->XtraDB(percona)
|