1.数据库基础
1.1 什么是数据库?
数据库是一个以某种有组织的方式存储的数据集合
理解数据库的一种最简单的办法是将其想象为一个文件柜,此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)
数据库软件应称为DBMS(数据库管理系统),数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。
1.2 表
表是一种结构化的文件,可用来存储某种特定类型的数据
表可以保存顾客清单、产品目录,或者其他信息清单
数据库中的每个表都有一个名字,用来标识自己
此名字是唯一的,这表示数据库中没有其他表具有相同的名字
虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名
1.3 主键
主键(primary key)一一列(或一组列),其值能够唯一区分表中每个行,唯一标识表中每行的这个列(或这组列)称为主键
创建的每个表具有一个主键,以便于以后的数据操纵和管理
主键值规则(MySQL本身强制实施):
任意两行都不具有相同的主键值;
每个行都必须具有一个主键值(主键列不允许NULL值)
2. 什么是SQL?
SQL是结构化查询语言(Structured Query Language)的缩写,SQL是一种专门用来与数据库通信的语言,与其他语言(如Java和Visual Basic这样的程序设计语言)不一样,SQL由很少的词构成,设计SQL的目的是很好地完成一项任务,即提供一种从数据库中读写数据的简单有效的方法
SQL的优点
SQL不是某个特定数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL,所以,学习此语言使你几乎能与所有数据库打交道。
SQL简单易学。它的语句全都是由描述性很强的英语单词组成, 而且这些单词的数目不多。
SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活 使用其语言元素,可以进行非常复杂和高级的数据库操作
3.什么是MySQL?
Mysql是一种关系型数据库,特点是将这些数据保存在不同的二维表中,并将这些表放入数据库,这样可以增加它的读取速度
数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS(数据库管理系统)完成的。MySQL是一种DBMS,即它是一种数据库软件
广泛使用MySQL原因:
成本——MySQL是开放源代码的,一般可以免费使用(甚至可以免费修改)
性能——MySQL执行很快(非常快)
可信赖——某些非常重要和声望很高的公司、站点使用MySQL,这些公司和站点都用MySQL来处理自己的重要数据
简单——MySQL容易安装和使用
4.mysql的事务
- 事务就是一组原子性的SQL查询,或者说一个独立的工作单元
- 如果数据库引擎能够成功地对数据库进行该组查询的全部语句,那么就执行该组查询,如果其中有任何一条语句因为崩溃或者其他原因无法执行,那么所有的语句都不会执行,也就是说,事务内的语句,要么全部执行成功,要么全部执行失败
5.mysql的异步复制(基于二进制日志文件位置position的主从复制)
异步复制(主从复制)master节点不关心slave节点的状态,只需要写自己的数据即可
能不能完成复制看slave节点的io线程和sql线程是否开启
主从复制需要做的动作:
主库开启binlog日志(设置log-bin参数)
主从server-id不同
从库服务器能同步主库
主从复制的原理:
1.在主库上把数据更改记录到二进制日志(Binary Log)中(这些记录被称为二进制日志事件)
2.备库将主库上的日志复制到自己的中继(Relay Log)日志中
3.备库读取中继日志中的事件,将其重放到备数据库之上(从库生成两个线程,一个i/o线程,一个SQL线程,i/o线程去请求主库的binlog,sql线程进行日志回放来复制)
实验:
server1(172.25.254.1)数据库的master节点
server1(172.25.254.2)数据库的slave节点
(1)从物理机上面的共享目录下获取mysql安装包到server1(master节点)和server2(slave节点)
(2)server1和server2上解压mysql安装包,删除不用的包,最终只有5个rpm包,进行安装
(3)配置主节点数据库,开启数据库
vim /etc/my.cnf
##在文件末写入:
log-bin=mysql-bin
server-id=1 ##每个节点的序号是唯一的
systemctl start mysqld
(4)开启mysqld服务后生成一个临时密码,使用临时密码进行数据库安全初始化
自己设置数据库的密码,这个密码必须含有特殊字符,英文字母的大小写和数字
cat /var/log/mysqld.log | grep password ##查看临时密码
mysql_secure_installation ##进行安全初始化