一 Nosql 指的是非关系型数据库,作为传统关系型数据库的一个有效补充,针对特定场景。以高性能和使用便利为目一
的功能特异化的数据库产品
Nosql特点:
Noosql数据库存储不需要固定的表结构
1 他不是否定关系数据库,而是作为关系数据库的一个重要补充
2 Nosql为了高性能高并发而产生的
3 Nosql典型产品memcache(纯内存) 一重启就丢数据
redis(持久化缓存) 持久化缓存
mongodb
二 非关系型数据库种类:
1 键值存储数据库
2 列存储数据库
3 面向文档的数据库 mongodb
4 图形数据库
三 关系型数据库
1 oracle主要应用范围:传统大企业 大公司 政府 金融 证券
关系型数据库比较笨重一个软件很大 几个G左右
2 mysql数据库互联网公司最常用的公司 适用于大中小型网站,开源,体积小速度快成本低等特点
3 mariaDB 数据库诞生 mysql被收购
4 SQL server 数据库 微软开发的大型数据库 和sybase合作开发
5 access和offcices 绑定的一个入门级小型的桌面数据库,性能和安全性一般,可提供个人管理或者小型网站之用
四 数据库的备份
【1】sql语句如何优化:
1 抓慢sql show for testlist 执行一下查看慢的 给慢sql添加索引 2 在配置文件里添加参数 添加索引 增加慢sql的查询日志收集 脚本切割 分析定时任务发给db
【2】 网站打开慢 给出排查方法,如何使因为导致数据库慢导致,如何排查解决?分析并举例
思路:
负载均衡到web服务器 web到存储 php到数据库 web到数据库
访问静态网页一下 动态网页慢php问题 uptime可定负载均衡高
慢 则是负载高 cpu高 查看io cure慢的话是存储问题 创建索引 创建sql慢查询日志
测试环境 生产环境 开发环境
五 数据库备份:
mysqldump -u 用户名 -p 数据库名 表名 >备份的文件名
mysqldump -uroot -poldboy123 -S/data/3306/mysql.sock -B oldboy oldboy-gbk >/opt/bak_$(data +%F).sql
-B 参数的作用 不加-B 第一个是库 后面都是表 加上-B 第一个是库 后面的都是表
--compact 减少输出 但不用于生产
六 mysqldump的工作原理
利用mysqldump命令把数据备份的过程,就是直接拿mysql数据库里面的数据以逻辑的sql语句的形式直接输出或者生成备份的过程
mysql分库脚本
mysql -uroot -poldboy123 -e "show databases;"|egrep -v "_schema|atabase"|sed -r ‘s#^(.*)#mysqldump -uroot -poldboy123 --events -B \1 |gzip >/opt/\1.sql.gz#g‘|bash
备份单个表:
mysqldump -uroot -poldboy23 -S /data/3306/mysql.scok oldboy test --compact
分表备份:
mysqldump -u 用户名 -p 数据库名 表名 > 备份的文件名
mysqldump -uroot -poldboy student >/opt/table1.sql
备份多个表:
mysqldump -u 用户名 -p 数据库名 表名1 表名2 > 备份的文件名
分表备份缺点:文件多 很碎
备份表结构:-d
利用mysqldump -d参数只备份表的结构 备份oldboy库的所有表的结构
备份表数据 -t 备数据库里面的数据
七 刷新binlog参数 参数-F
mysqldump用于定时对某一时刻的数据全备,例如00 点进行备份
增量备份:当有数据写入到数据库时,还会同时把更新出的sql语句写入到对应的文件。这个文件叫做binlog文件
例子:
10点丢失数据需要恢复数据:
1 00点时刻备份的.sql数据还原到数据库,这时数据库恢复到了00点
2 00-10点数据,就需要binlog里恢复
binlog文件生效则需要log-bin
-F 作用:binlog日志 生成新的而文件 将来新的增量恢复从这个文件开始
--master-data 在备份语句里添加CHANGES MASTER 语句及binlog文件
及位置点信息
当--master-data=1时 可执行的change master语句 一般等于1时做的是从库
当--master-data=2时 注释的change master语句 一般用于做单纯的增量恢复
--master-data 除了增量恢复确定临界点外 做主从复制时作用更大
八 mysqldump的关键参数说明:
mysqldump的参数:
-B 备份多格库
-t 只备份数据
-d 只备份表结构
-T 分离库表和数据成不同的文件,数据是文本,非sql语句
-A 备份所有库
-L --lock-all-tables 锁表
备份时一定要锁表,在某一时刻数据库不能更新
当--master-data=1时 可执行的change master语句 一般等于1时做的是从库
当--master-data=2时 注释的change master语句 一般用于做单纯的增量恢复
--master-data 除了增量恢复确定临界点外 做主从复制时作用更大
--single-transaction 适合innodb属无数据库备份
InnoDB 表在备份时 通常启用选项 --single-transaction来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别:repeataable read 以确保本次会话dump时 。不会看到其他会话已经提交了数据
-q --quick ACID会话隔离数据 -enevts事务性是innoDB独有的特性 事物有隔离性
未完待续。。。。。。。