##数据库
数据库简单地分为两种:
1. 关系型数据库---->MySQL和Oracle
2. 非关系型数据库---->Memcached 和Redis
3. 消息队列中间列
关系型数据库 SQL数据库
数据和数据之间是有关系的。通过关系能够将一系列数据都提取出来。
非关系型数据库 NoSQL数据库 (Not only SQL)
关系型数据库MySQL和Oracle区别
其实,这两类数据库在使用方式上,大体是没有太多区别。都是基于SQL查询方式的数据库。但是Oracle是闭源的,也就是收钱的,收了钱自然就好办事,出了问题,有人管。因此,运维并不需要花费太多精力在Oracle上 。要学,去企业学。
MySQL呢?是开源的,免费用的。免费的东西自然是需要我们运维来维护的。但是通常来说,真正的数据库维护人员的职位叫做DBA=database administrator,他并不是广泛意义上的运维。只是数据库专业运维。对于广泛意义上的运维维护人员来说,我们在2万薪资以下只需要简单了解MySQL。
市面上还有一种数据库,关系型,叫做MariaDB。
MySQL数据库最早是开源的,当然现在也是开源的。但是,MySQL已经被Oracle公司===>SUN,他被收购了。那么,MySQL一旦闭源了,怎么办?因此MySQL运维社区的人,为了防止SUN公司对MySQL进行闭源操作,他们自主在MySQL最后一个开源版本的基础上,开放出来了一个分支数据库,叫做MariaDb。其实他和MySQL是几乎一样的。
B/S架构模式与C/S架构模式的区别
B/S==>Web/Server
用户通过Web浏览器打开输入域名就能访问服务器Server的方式叫B/S,
用户不需要安装任何东西
C/S==>Client/Server
所谓客户端Client在用户的电脑是需要下载并安装的。
##编译安装MySQL
1. rpm -qa | grep mysql
查看电脑里有没有mysql,如果有mysql-server删除
rpm -e mysql-server --nodeps
1. 安装ncurses-devel与cmake
yum -y install ncurses-devel
cmake需要编译 需要cmake-2.8.6包
tar xf cmake-2.8.6.tar.gz -C /usr/src/
cd /usr/src/cmake-2.8.6
./configure && gmake && gmake install
1. 安装MySQL
tar xf mysql-5.5.22.tar.gz -C /usr/src/
cd /usr/src/mysql-5.5.22/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install
1. 创建mysql程序用户
useradd -M -s /sbin/nologin mysql
bin命令目录 data数据目录 support files 提供了很多模板比如启动脚本和 配置文件 scripts 脚本
1. 修改mysql安装目录的属主和属组
cd /usr/local/ chown -R mysql:root /usr/local/mysql
1. 创建修改my.cnf配置文件
/bin/cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
my-huge.cnf 巨大数据量 my-innodb-heavy-4G.cnf innodb引擎
my-large.cnf 大数据量 my-medium.cnf 测试使用 my-small.cnf 小数据量
1. 设置启动脚本
/bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
启动脚本
chmod +x /etc/init.d/mysqld
chkconfig mysqld --add
chkconfig mysqld --list
1. 添加MySQL命令执行的路径到PATH环境变量
echo “export PATH=$PATH:/usr/local/mysql/bin” >>/etc/profile
也可以创建软连接
ln -s /usr/local/mysql/bin/* /usr/local/bin/
1. 执行mysql_install_db 脚本初始化数据库
/usr/local/mysql/scripts/mysql_install_db --user=mysql
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
1. 启动mysql服务 mysql端口3306
/etc/init.d/mysqld start
netstat -antup | grep 3306
1. 连接并登陆mysql
-h 指定主机 不写默认本地 -P 端口 默认3306 -p指定密码
设置mysql密码
mysqladmin -uroot password ‘102846’
mysql用户有两部分组成
用户名@登陆的IP
mysql -uroot -p102846
##数据库操作
SQL分类
DDL 数据定义语言 增删改>库。表、索引 create,drop
DML 数据操控语言 增删改>数据 insert,update,delete
DQL 数据查询语言 查询数据 select
DCL 数据控制语言
##建库、删库、建表、删表、查库、查表
show databases;查看数据库列表信息
use 数据库民; 使用库
show tables;查看数据库中的数据表信息
create database 数据库名;创建数据库
drop database 数据库名;删除数据库
create table users(user_name char(20) not null,user_passwd char(30) default ‘’,primary key(user_name)); 创建表 char字符 not null 不能为空 default ‘’默认为空,primary索引关键字
describe 表名; 显示表的字段(结构) 可以简写 desc 表名;
drop table 表名;删除表
##四种对表数据进行操作的SQL语句
增:insert into 表名[字段名] values 具体数值
删:delete from 表名 where 条件
改:update 表名 set 字段=’数值’
查:select 字段名 from 表名
增
insert into users values (‘xiaohong’,‘666666’);不写字段默认插入所有字段,有几个字段就要插入几个值
insert into users (user_name) values (‘xiaoming’);
删
delete from users;删除表所有数据
delete from users where user_name=’xiaoming’;指定删除的位置
改
update users set user_passwd=’888888’ where user_name=’xiaoming’;
只改user_name=’xiaoming’ 的 user_passwd 。不指定条件改全部
查
select * from users; *查看所有数据 需要先use 库
select * from yunjisuan.users; 查看数据 无需use
##权限设置
mysql是写在缓冲里的,是异步存入磁盘
mysql -uroot -p102846 -e‘select * from yunjisuan.user’ 查看磁盘内容
flush privileges 刷新立刻同步到磁盘,立即生效
###修改密码的方法
update mysql.user set password=passwprd(‘666666’) where host=’localhost’;
修改权限后必须刷新同步
###用户权限
1. 修改用户权限(如果没有此账号,则创建用户)
grant all on *.* to ‘root’@’192.168.200.161’ IDENTIFIED BY ‘123456’
all 代表所有权限(select delete update insert) *.*所有库所有表
添加权限不用输入密码
撤销权限
revoke select on *.* from ‘yunjisuan’@’192.168.200.135’
添加权限会叠加
1. 客户端下载mysql-client
yum -y install mysql
1. 远程登录mysql
mysql -uyunjisuan -p123123 -h 192.168.200.129
查看账号和IP select user,host from mysql.user;
查看登录的账号 select user();
查看当前登录用户权限 show grants;
查看其它用户权限 show grants for ‘用户名’@’IP地址’
撤销权限
revoke select on *.* from ‘yunjisuan’@’192.168.200.135’
_:任意单个字符
%:任意多个字符
##MySQL日志管理
MySQL日志包括:
错误日志 /use/local/mysql/data/主机名.err
通用查询日志 一般不开
二进制日志
慢速查询日志
记录所有执行时间超过最长时间的SQL语句,可用于找到执行时间长的查询,以用于优化。默认未开启。
开启方法
vim /etc/my.cnf
[mysqld]
long_query_time=5
log-slow-queries=mysql_slow.log
##索引
索引的分类
普通索引:这是最基本的索引类型,而且没有唯一性之类的限制
唯一性索引:与普通索引基本相同,区别在于:索引列的所有值都只能出现一次,即必须唯一,但可为空。
主键:是一种特殊的唯一索引,必须制定为“PRIMARY KEY”,具有唯一性的同时不能为空。
全文索引:
单列索引与多列索引:索引可以是单列上创建的索引,也可以是多列上创建的索引。
##事物
事物具有四个性质:ACID
原子性、一致性、隔离性、持久性
begin 开始一个事物
commit提交一个事物
rollback回滚一个事物
show variables like ‘%autocommit%’; 查看系统全局变量,查看自动提交是否开启
set autocommit=0 // 禁止自动提交
set autocommit=1 //开启自动提交
上面是临时修改,永久修改要在配置文件中添加
##数据库备份
分类
完全备份:每次对数据进行完整的备份
优点:备份与恢复操作简单方便
缺点:数据存在大量的重复;占用大量空间;备份与恢复时间长
增量备份:只有那些在上次完全备份或者增量备份后被修改的文件才会
小企业每天一次全备份
大企业每周一次全备 每天都在增备
##完全备份
全备命令 mysqldump 热备份
也可以打包data目录,但是只能在mysql未使用状态才可以 冷备份
1. 创建备份目录
mkdir backup
1. mysqldump -uroot -p102846 yunjisuan > /backup/yunjisuan-$(date +%F).sql
备份yunjisuan库,对单个库备份
mysqldump -uroot -p102846 --databases mysql auth > /backup/mysql+auth-$(date +%F).sql
备份多个库 --databases
mysqldump -uroot -p102846 --opt --all-databases >/backup/mysql_all.$(date +%F).sql
备份所有库 --opt加快备份速度,当备份数据量大时使用
mysqldump -uroot -p102846 auth user >/backup/auth_user-$(date +%F).sql
备份auth库中的user表
mysqldump -uroot -p102846 -d mysql user >/backup/desc_mysql_user-$(date +%F).sql
备份mysql.user的结构
###恢复备份
在mysql里 交互方式
soutce /backup/mysql_all.20160505.sql;
非交互方式
mysql -uroot -p102846 < 备份路径
##增量备份
mysqlbinlog二进制日志
my.cnf
第52行 max_binlog_size=1024000 // 二进制日志最大1M
51 log-bin=mysql-bin 开启二进制日志
命令mysqlbinlog
flush logs; 刷新二进制日志
mysqlbinlog --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | myself -uroot -p102846
从日志开头截止到某个时间点恢复
mysqlbinlog --start-datetime=年-月-日 小时:分钟:秒’ 二进制日志 | myself -uroot -p102846
从某个时间点到日志结尾恢复
mysqlbinlog --start-datetime=年-月-日 小时:分钟:秒’ --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | myself -uroot -p102846
从某个时间点到某个时间点恢复
mysqlbinlog --stop-position=’操作 id’ 二进制日志 | mysql -uroot -p102846
mysqlbinlog --start-position=’操作 id’ 二进制日志 | mysql -uroot -p102846
基于位置进行恢复
show master status; 查看位置
mysqlbinlog 增量备份文件 | mysql -uroot -p102846
备份的二进制日志内容全部恢复
##在企业中如何去应用MySQL的备份策略
1. 中小公司,由于数据量小,数据安全不是特别重要,允许小数量的细节数据丢失。因此,每天进行一次数据库的全量备份即可。定时任务+全备脚本
2. 中大型公司,由于数据量大,每天全备时间太长,而且,比较关注数据安全和完整,无法承受数据丢失,哪怕只是少量的。对于这种类型的公司,我们通常采取全量备份+增量备份的方式来进行,也就是每周进行一次全量备份===>定时任务+全备脚本;每天进行一次增量备份,binlog二进制日志的方式。
###中小企业场景,数据库的全量备份如何实现?
1. 推送
采用rsync备份服务器的话;
数据库的定时任务备份结束以后,自动rsync推送到备份服务器。
1. raid阵列
在MySQL服务器上,额外进行raid磁盘阵列的挂载在/backup,全备脚本将备份到此目录中。
###中大型或大型企业,MySQL备份策略如何实现
1. 全备+增备
2. 每周一次全备
3. 增备的实现两种方式
第一种:通过定时任务+增备切割推送脚本
每天0点,flush logs;
第二种,不推,实时同步rsync+inotify
每周的全量备份结束以后,进行一次flush logs
###数据库常用架构
1.主从同步,主从复制,读写分离
mysql与openguass的区别 mysql与nosql的区别
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
nosql与mysql的区别 nosql为啥比sql快?
为什么你写的sql查询慢?为什么你建的索引常失效?通过本篇内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。案例分析我们先简单了解一下非关系型数据库和关系型数据库的区别。MongoDB是NoSQL中的一种。NoSQL的全称是Not only SQL,非关系型
nosql与mysql的区别 laravel打印sql语句 mysql打印语句 mysql打印语句是什么 oracle删除唯一索引sql语句 -
python中字母下一个字母
这篇主要探讨 ** 和 * 前缀运算符,**在变量之前使用的*and **运算符. 一个星(*):表示接收的参数作为元组来处理 两个星(**):表示接收的参数作为字典来处理 简单示例: >>> numbers = [2, 1, 3, 4, 7] >>> more_numbers = [*numbers, 11, 18] >>> print(*m
python中字母下一个字母 python中uppercase什么意思 运算符 Python 元组