- 浏览: 86824 次
- 性别:
- 来自: 北京
-
文章列表
使用mysqlhotcopy命令行工具创建备份
- 博客分类:
- MySQL
使用mysqlhotcopy命令行工具创建备份:
mysqlhotcopy是一段Perl语言编写的脚本,将FLUSH TABLES,LOCK TABLES以及cp/scp等命令封装调用,能够直接对数据库或某些指定的表对象创建备份,方便用户执行
mysqlhotcopy只用于MyISAM和ARCHIVE引擎的表对象,不能适用于InnoDB表对象
[mysql@mysql1 ~]$ mysqlhotcopy -u system -p 123456 -S /data/mysqldata/3306/mysql.sock mysql /tmp
Flushed 32 tables with re ...
MySQL数据导出与导入
- 博客分类:
- MySQL
利用CSV存储引擎加载数据:
mysql>create table ld_csv1(id int not null default ‘0’,username varchar(5) not null,city varchar(6) not null,email varchar(50) not null) engine=csv default charset=UTF8;
$more /tmp/loaddata.txt > /data/mysqldata/3306/data/hugcdb/ld_csv1.CSV
mysql>select * from ld_csv1;
...
MySQL数据库文件结构
- 博客分类:
- MySQL
初始化选项文件:
对于UNIX/Linux平台,MySQL程序默认会按照如下顺序扫描下列路径,并使用找到的第一个匹配的选项文件
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf 通过CMake源码编译时指定的SYSCONFDIR参数指定的路径
$MYSQL_HOME/my.cnf
~/.my.cnf
本例中为
/data/mysqldata/3306/my.cnf
错误日志文件:
不仅仅是记录错误信息,MySQL服务进程即mysqld启动或关闭的信息也会被记录进来。错误日志文件是在启用mysqld时,通过log-erro ...
InnoDB表对象的限制条件
- 博客分类:
- MySQL
InnoDB表对象的限制条件:
最大和最小
InnoDB日志文件最大不超过512G
InnoDB系统表空间最少需要10M空间
默认数据库中数据页的大小为16K
ANALYZE TABLE语句收集统计信息不是特别准确,
SHOW TABLE STATUS语句不能列出InnoDB表的实际统计数据,记录行数、平均记录长度等信息都仅是预估值
SELECT COUNT(*) FROM TBL语句时,InnoDB必须检索全表,MySQL建议对于InnoDB引擎表的这类需求,考虑通过创建中间表专门记录表行数方式来处理
对于AUTO_INCREMENT列,建议创建单列索引
DELETE F ...
InnoDB联机修改表对象结构
- 博客分类:
- MySQL
联机修改表对象结构:
在MySQL5.6之前
1.创建一个结构与原表对象完全相同的临时表(隐式操作,该对象用户不可见),并将该表的结构修改为期望的结构
2.锁定原表,只许查询,不许修改
3.将原表数据复制到新创建的临时表,类似insert into new_tb select * from old_tb;
4.将原表重命名,新创建的临时表名称修改为正式表名,之后释放锁定,删除原表
在MySQL5.6以后,联机DDL修改InnoDB表提供有限支持
InnoDB数据多版本机制
- 博客分类:
- MySQL
InnoDB引擎内部在保存数据到数据库时,每一行都有3个自动生成的内部列:
DB_TRX_IDG:占用6B,用来标记事务的标示符,记录下最后一个事务的操作类型(更新或修改),删除操作会被当成update处理,只是在其中设置特殊的位置指出实际操作为delete
DB_ROLL_PRT:占用TB,被称为回滚标记,用于指定UNDO日志记录写到回滚段中的位置。如果记录被更新,那么UNDO日志会包含用于构造记录更新前状态的所有必要信息
DB_ROW_ID:占用6B
InnoDB存储引擎
- 博客分类:
- MySQL
InnoDB存储引擎:
InnoDB就是为了满足大数据量环境下高性能为目标而设计的
遵循ACID模型,支持事务,拥有从服务崩溃中恢复的能力,最大限度地保护用户的数据。对于服务器软、硬件问题导致的宕机,MySQL拥有自动进行故障恢复能力
支持行级锁,提升多用户并发时的读写性能
InnoDB引擎表组织数据时按照主键(Primary Keys)聚簇,通过主键查找数据时性能极为优异
InnoDB支持外键(Foreign-Key)约束
InnoDB拥有自己独立的缓存池(对应innodb_buffer_pool_size
MyISAM存储引擎
- 博客分类:
- MySQL
每个MyISAM表对象都是由3个独立的操作系统文件组成
.frm:对象结构定义文件,用于存储表对象的结构
.MYD:数据文件,用于存储表数据
.MYI:索引文件,用来存储表的索引信息
(system@localhost) [mysql]> create table t_myisam(id int) engine=myisam;
MySQL服务自带的mysql和information_schema两个系统数据库,其内部表对象就是使用MyISAM引擎,并且用户不能将其转换成其他存储引擎类型。
MyISAM缺点是锁粒度太粗(表级锁),不支持事务。优点是查询快,写入快。
MySQL是Pluggable Storage Engines插件式存储引擎
是一种数据存取和处理方式
查看当前MySQL数据库支持什么引擎:
(system@localhost) [(none)]> show engines;
Engine:存储引擎名
Support:当前是否支持
Commnet:注释信息
Transactions:是否支持事务
XA:是否支持分布式事务
Savepoint:是否支持保存点
MySQL数据库中常见存储引擎包括MyISAM,InnoDB,
MEMORY存储引擎:
(system@localhost) [mysql]> create table t_mem1(id int) engine=memory;
MEMORY存储引擎的表只拥有一个独立的磁盘文件,扩展名为.frm,用来存储表结构的定义。
MEMORY引擎表能够使用的最大内存空间不超过max_heap_table_size系统变量设定的值,该变量默认情况下是16MB。
CSV存储引擎:
(system@localhost) [mysql]> create table t_csv1(id int not null default 0,v1 varc ...
字符集就是指符号和字符编码的集合
用户可以在服务器、数据库、表甚至列一级进行设置
校对规则就是指定义的一种比较字符集中字符的规则
查看数据库支持的字符集:
(system@localhost) [(none)]> show character set;
最常用的字符集
GBK
GB2312
UTF8
某个字符集支持哪些校对规则:
(system@localhost) [(none)]> show collation like 'latin1%';
服务端设置默认字符集:
编译MySQL软件时指定
-DDEFAULT_CHARSET=utf8 \
...
MySQL管理员口令丢失
- 博客分类:
- MySQL
MySQL官方给出了两种非常规方式重置系统管理账户两种方法:
1.启动MySQL服务时附加参数(--init-file),使其执行含有密码重置的脚本,达到修改账户密码的目的
2.启动MySQL服务时通过附加特殊的参数,使其跳过权限验证,而后登 ...
在Linux/UNIX系统下,使用mysql命令行工具执行的所有操作,都会被记录到一个名为.mysql_history的文件,默认保存在当前用户的根目录下
两种方案:
第一种修改操作系统层的MYSQL_HISTFILE环境变量,将其值改为/dev/null,这样所有操作都会被输出到空
第二种保留.mysql_history文件,做一个软连接
$ln -f -s /dev/null ~/.mysql_history
MySQL数据库中的权限体系
- 博客分类:
- MySQL
MySQL数据库验证权限有3个维度:我是谁、从哪里来、到那里去
哲学家探究人生的终极命题
能不能连接:
在MySQL数据库中验证用户,需要检查3项值:用户名、用户密码和来源主机。分别对应mysql库中的user表的user、password和host三列
能不能执行操作:
连接到数据库之后,能不能执行操作,比如说建库、建表、改表、查询或修改数据等,除了mysql.user外,还有mysql.db,mysql.tables_priv,mysql.columns_priv,mysql.proc_priv
管理MySQL库与表
- 博客分类:
- MySQL
MySQL中的表对象是基于库维护的,表属于某个库,不管对象是由谁创建的,只要库在,表就在。每个MySQL数据库都是由多个数据库组成的(一经创建,默认至少就得有4个),而Oracle中的数据库则是一个整体。
information_schema:记录用户、表、视图等元数据信息,提供类似oracle数据字典的功能,类似于oracle数据库中的system表空间。是虚拟出来的库,由mysql实例构建和维护,对象保存在内存中,在磁盘上找不到对应的物理存在。对于该库,用户唯一能做的事情就是查询。
mysql:记录用户权限、帮助、日志等信息,提供类似oracle数据字典的功能,类似于oracle