Mysql 视图,事务,索引,以及 Mysql 主从服务器配置 笔记简述
这是今天的成果——对Mysql高级语法的学习:
这里,只插入一些图片和一些简单描述,图片中的过程就是整个操作流程,已经很详细了。其他的,当作笔记整理——一些重要的概念:
【1】视图:
什么是视图?
我的理解:通俗的讲,视图就是 一条复杂的select查询语句执行后返回的结果集,它是一张虚拟的表,不会因为原来表结构的改变而改变,但是可以和原表数据保持同步。
视图的作用是什么?
1.提高了重用性,就像一个函数,随时可以调用
2.当对源数据库重构时,不影响引用视图的程序的运行
3.提高了安全性。因为通过这张 视图表,不能修改 源表中的数据
4.让数据更加清晰
【2】事务
什么是事务?
所谓的事务,其实是一个操作序列,这些操作 要么多执行完成,要么都不执行,是一个不可分割的工作单位。通俗的理解就是——这就像 一群员工共同完成一件事,只要其中有一个人不干了,其他人也一起跟着不干了,只有当这群员工齐心协力没有一个人放弃的时候,才能完成任务。
事务的四大特性(简称 ACID):
【1】原子性:保证了数据的修改要么成功,要么不成功,不成功就返回数据原来状态。
【2】一致性:保证了数据在修改完成后没有commit提交前,此时当服务器崩了的时候可以保证数据不被损坏,和前一次状态一致。
【3】隔离性:保证了 这个sql语句的执行不会影响另外一个sql语句的执行。(就像你和别人同时登陆同一个数据库,修改同一个数据的时候,那个人先操作unsigned 10这个数,先减去了10,然后还没有提交,你这个时候也要对这个数据进行操作,当你update 写完这个sql语句回车以后,你会默认堵塞,一直等,要么超时操作不了,要么那个人把修改操作提交以后,你解堵塞,此时会报错,因为10这个数已经被那个人减去了,你再减去10就成负数了)
【4】持久性:永久性存储(这里说的就是,数据操作并提交之后,会永久存储到硬盘上)
【3】索引
没什么好说的,索引,为了提高查询效率,但是不一定索引多了效率就高。
因为索引的建立是需要特殊的数据结构和表中的数据相关联,每一次数据的修改都需要改动索引的结构,当你的数据库 修改操作频繁的时候,性能会大幅下降。
【4】Mysql 主从服务器配置
这里要说的就是:
我的电脑配置太低,带不动两个虚拟机,模拟不了两个服务器同步的状态。
本来打算在物理主机上装一个 Mysql,但是由于系统的原因,装不上。
所以,下面大部分的图,都是在一个 ubantu 上操作的,包括 主服务器 和 从服务器的操作都是在 同一个 ubantu 系统上演示的,但是流程及操作步骤,完全正确!!!
(1)导出数据库里面的所有信息,并将文件复制到 从服务器上:
(2)配置主服务器:
这里需要说明的就是:
打开sudo vim /etc/mysql/mysql.conf.d/mysql.cnf
然后看图上白色标记的两行代码,确认前面没有#
注释。
然后sudo service mysql restart
重启服务
(3)配置 从服务器:
这里需要说明的就是:
打开sudo vim /etc/mysql/mysql.conf.d/mysql.cnf
然后看图上白色标记这行代码,后面的server-id=2
,这里的2
必须和主服务器这个地方的数值不一样,然后sudo service mysql restart
重启服务
(4)在主服务器上创建一个用户,给予相应权限,让从服务器用这个账户登陆数据库:
(5)查看主服务器状态,设置从服务器 同步主服务器:
这里,通过这条命令 查看主服务器的状态信息。记住这里的
000005
和154
这里,是从服务器上要写的,这里的
000005
和154
是上面查看的主服务器的。
(6)验证同步:
这里,登陆 数据库,在从服务器上输入上面的命令,回车之后会出现一大坨数据,在这些数据里面,只要找到了
Slave_IO_Running:Yes
和Slave_SQL_Running:Yes
,就说明同步成功。
如果同步没有成功:
(1)解决方法:
sudo vim /etc/mysql/mysql.conf.d/mysql.cnf
看看这里(图上白色标记的地方),有没有加 #
注释掉
(2)解决办法
重新做一遍这个流程((5)查看主服务器状态,设置从服务器 同步主服务器:)
很可能是因为 查看主服务器状态的时候,参数记错了,导致往 从服务器上写同步命令的时候出错。