数据库-----基本概述
一、数据库的版本
# 社区版、企业版、集群版
二、数据库的安装
1 二进制安装
$ yum -y install mysql-server
# mysql MySQL客户端程序和共享库
# mysql-server MySQL服务器需要的相关程序
2 源代码软件包
# configure centos5.5之前的编译工具
# cmake cen同时5.5之后的编译工具
2) 数据库的常用配置选项
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql ----指定安装路径(默认的就是/usr/local/mysql)
-DMYSQL_DATADIR=/data/mysql ----mysql的数据文件路径
-DSYSCONFDIR=/etc ----配置文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 ----使用INNOBASE存储引擎
-DWITH_READLINE=1 ----支持批量导入mysql数据
-DWITH_SSL=system ----mysql支持ssl
-DWITH_ZLIB=system ----支持压缩存储
-DMYSQL_TCP_PORT=3306 ----默认端口3306
-DENABLED_LOCAL_INFILE=1 ----启用加载本地数据
-DMYSQL_USER=mysql ----指定mysql运行用户
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ----默认套接字文件路径
-DEXTRA_CHARSETS=all ----是否支持额外的字符集
-DDEFAULT_CHARSET=utf8 ----默认编码机制
-DWITH_DEBUG=0 ----DEBUG功能设置
3)服务
$ mysql
4) 端口
# 3306
5) 主配置文件
# /etc/my.cnf
6) 初始化脚本
# mysqld_install_db
7) 启动命令
# mysqld_safe
8) 数据目录
# RPM包:/var/lib/mysql
# 源码包:安装路径/data
9) 套接字文件
# RPM包:/var/lib/mysql/mysql.sock
# 源码包:安装路径/data/mysql.sock
# 自定义:/tmp
# mysql.sock文件的路径要保证MySQL的进程有权限进行创建文件
# MySQL的进程需要对目录具有w权限,才能在目录内创建mysql.sock文件
# 当意外关闭数据库时,再开启时假如开启不了,找到这个,删除再启动重新生成套接字文件
10) 进程文件
# /var/run/mysqld/mysqld.pid
三、登录及退出MySQL环境
1 设置密码
$ mysqladmin -uroot password '123456'
2 登录数据库
$ mysql -uroot -p123456
# -p用户密码
# -h登录位置(主机名或ip)
# -P端口号(当更改3306默认端口时使用)
# -S套接字文件(/var/lib/mysql/mysql.sock)
3 退出
$ exit && ctrl+d
四 MySQL语句
Mysql命令 |
功能 |
show databases; |
查看服务器中当前有哪些数据库 |
use 数据库名; |
选择所使用的数据库 |
create database 数据库名; |
创建数据库 |
drop database 数据库名; |
删除指定的数据库 |
MySQL命令 |
功能 |
create table 表名 (字段1 类型1,...); |
在当前数据库中创建数据表 |
show tables; |
显示当前数据库中有哪些数据表 |
describe 表名; |
显示当前或指定数据库中指定数据表的结构(字段)信息 |
drop table 表名; |
删除当前或指定数据库中指定的数据表 |
alter table 旧表名 rename 新表名; |
修改数据表的名称 |
alter table 表名 modify 字段 新类型; |
修改字段的类型 |
alter table 表名 change 旧字段名 新字段名 类型; |
修改字段名 |
alter table 表名 add 字段 类型(first/after) |
增加字段 |
alter table 表名 drop 字段 |
删除字段 |
MySQL命令 |
功能 |
insert into 表名(字段1,字段2,……) values(字段1的值, 字段2的值,……); |
向数据表中插入新的记录 |
update 表名 set 字段名=新数据 where 条件表达式; |
修改、更新数据表中的记录 |
select 字段名1,字段名2……from 表名 where 条件表达式; |
从数据表中查找符合条件的记录 |
select * from 表名; |
显示当前数据库的表中的记录 |
delete from 表名 where 条件表达式;between...and... |
在数据表中删除指定的记录指定范围 |
delete from 表名; |
将当前数据库表中记录清空 |
# 注:库和表的删除用drop,记录删除用delete
五、用户权限
1、grant授权:
# 格式:grant 权限1,权限2,...... on 数据库.数据表 to 用户@登录位置 (identified by ‘密码’);
2、revoke取消授权
# 格式:revoke 取消的权限1,取消的权限2,...... on 数据库.数据表 from 用户@登录位置;
3、查看权限
# 格式:show grants for 用户@登录位置;
六、备份和还原
1、mysqldump
1)备份:
# mysqldump -u 用户名 -p 数据库名 > /备份路径/备份文件名(备份整个数据库)
# mysqldump -u 用户名 -p 数据库名 表名 > /备份路径/备份文件名(备份数据表)
# --databases 库1,库2 (还原:mysql < 备份文件)
# --all-databases —备份服务器中的所有数据库内容
2)还原:
# mysql 数据库 < 备份文件
2、mysqlhotcopy
1)备份:
# mysqlhotcopy --flushlog -u=’用户’ -p=’密码’ --regexp=正则 备份目录
2)还原:
# cp -a 备份目录 数据目录(/var/lib/mysql)
七、补充的备份机制
1.日志备份
$ mysql> show global variables like '%log%'
# 列出mysql中和日志相关的变量
2.错误日志
# 服务器启动和关闭时的信息
# 服务器运行过程中的错误信息
# 从服务器启动从服务器进程时产生的信息
# log-error 错误日志的路径
3、一般日志(不启用)
# 记录用户对数据库的查询操作
# general-log=ON 启动一般查询日志
# log=ON 全局日志开关
# log-output 日志的记录类型
4、慢查询日志
# 记录需要较长时间的查询操作
# log-slow-queries=保存路径 启动慢查询日志,并设置个路径

5、二进制日志
# 目地:通过记录数据的变化过程将完整数据进行备份,即使完整数据全部丢失,也可以通过所有的步骤,重新执行一遍,产生最后的数据状态
1)所有对数据库状态更改的操作(create、drop、update等)
# log-bin=位置 (启动二进制日志) mysql> show binary logs 查看当前使用的二进制日志 mysql> show binlog events in '二进制日志文件名(mysql-bin.000s001)'查看二进制日志的内容
2)还原:(mysqlbinlog)
# a : 按时间还原:
# mysqlbinlog --start-datetime ‘YY-MM-DD HH:MM:SS’ --stop-datetime ‘YY-MM-DD HH:MM:SS’ 二进制日志文件 | mysql(-uroot -p)
# b : 按文件大小还原:
# --start-position --stop-position
# c :事务日志:记录事务相关的日志信息
# d:中继日志:记录从服务器的备份信息
3) 数据库的单机备份策略:
# mysqldump
# bin-log
4) 数据库的双机或多机备份策略
# bin-log
八、多机备份
# 主从配置:实时备份
# 主主配置:(互为主从)实时备份、负载均衡、高可用
# 多从一主:实时备份(更多的备份节点)(适合查询压力较高的)
# 多主一从:实时备份、节约成本
# 读写分离:数据备份、负载均衡