Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267258
  • 博文数量: 30
  • 博客积分: 608
  • 博客等级: 中士
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 23:01
个人简介

++++++++++++++++++

文章分类

全部博文(30)

文章存档

2013年(2)

2012年(2)

2011年(26)

分类: Mysql/postgreSQL

2011-03-28 21:13:28

Q 001:mysql_install运用
A:mysql_install是初始化数据的一个命令,配置好mysql的配置文件my.cnf,可以用该命令初始化一下mysql数据库,该命令后根据你的my.cnf初始化你的mysql
[root@localhost ~]#  mysql_install --user=mysql

Q002:mysql的binlog
A:mysql的binlog是对mysql数据库操作动作记录的日志,默认mysql-bin.00001形式出现,在主从架构中binlog是slave服务器同步master数据库的重要文件,即slave是通过binlog的操作记录来还原master服务器的数据

Q003:mysql.index文件
A:mysql.index在主从架构中记录了slave mysql服务器的binlog还原点,当slave 从mysql.index读取的binlog(mysql-bin.xxxxxx)找不到,此时slave服务器就会报错,解决办法是把slave上的binlog清空,这是slave会重新去master上获取binlog来同步

Q004:master.info文件
A:此文件一般位于主从架构的slave上的relaylog目录中,此文件记录了master服务器的ip地址等,打开此文件可以很明白它的意义。有时候也会因为此文件发生同步不了的问题,比如你改变slave服务器的master服务器,由于slave在之前有master.info文件,即便修改了slave的master-host,重启slave,但在show slave status,仍旧看到master是原来的host,此时解决办法两种 [一]:删除此文件(清空relaylog目录),重启slave mysql  [二] 用CHANGE MASTER TO强制同步,命令一般格式change master to master_host=‘master_ip
(domainame)’,master_port=3306,master_user=‘dbslave’,master_password=‘yourpass’,master_log_file=‘mysql-bin.00001’,master_log_pos=52341
几点注意:此命令格式严格,除了参数是纯续数字(ip地址需要加)不加引号,其余全部加引号
          默认端口为3306,不指定即采用默认
          master_user必须是master服务器上有replacation权限
          master_log_file,master_log_pos可以在master上show master status\G查看

Q005:修改数据库的表属性
A:ALTER  TABLE table_name RENAME TO new_table_name  \\修改表名称
   ALTER TABLE table_name DROP  COLUMN  column_name \\删除表一列

   ALTER TABLE table_name ADD   COLUMN column_name   \\添加一列
如修改字段名字,数据类型等
A:alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
   alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
   alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空];
例如:修改表expert_info中的字段birth,允许其为空
   alter table expert_info change birth birth varchar(20) null;

复制一个表的结构及其内容

CREATE TABLE new_table_name AS SELECT * FROM copy_table_name

eg:create table size as select * from mysql.user

 

Q007:查看mysql数据库引擎,即当前默认引擎

A:show engines; 具体查看某个引擎的状态 show engine name status 

例如:show engine innodb status ; 这是你就可以看到innodb引擎的属性,如有7线程(4个IO线程,1个lock监控线程,1个错误监控线程,1个MASTER thread 线程)

 

008:查看表的属性,如表的引擎

A:SHOW TABLE STATUS FROM database_name 

例如查看mysql数据库的属性 show table status from mysql;

 

009:mysqld,mysqld_safe启动mysql的区别

A:在UnixNetWare中推荐使用mysqld_safe来启动mysqld服务器mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。而mysqld启动mysql时,发生错误是mysql服务将宕掉而不重启

 

010:账号权限管理grant & revoke

A:grant授权用户

 GRANT privilrges_type ON databasename.tablename TO IDENTIFIED BY 'user_password'; 

例如:grant select,insert,drop,create on redhat.test to identified by '123456';

revoke删除用户不必要的权限 

REVOKE privileges_type ON databasename.tablename FROM ;

例如:revoke drop on redhat.test from ;

注意:权限管理处理完后,要用show grants for ,查看下是否生效

 

011:ACID指的是什么?

A:ACID,是指在)中,(transaction)所具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。


012:数据库与数据库实例的区别
A:从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是应用程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等,都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。
如果这样讲解后你还是觉得不明白,那我再换一种更直白的方式来解释:数据库是由一个个文件组成(一般来说都是二进制的文件)的,如果要对这些文件执行诸如SELECT、INSERT、UPDATE和DETELE之类的操作,不能通过简单的操作文件来更改数据库的内容,需要通过数据库实例来完成对数据库的操作。所以,如果你把Oracle、SQL Server、MySQL简单地理解成数据库,可能是有失偏颇的


013:Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据,更多信息参见另一篇《新命令》

014:关于mysql错误日志,error log问题

A:5.0版本的error log可以在配置文件中用 log-error选项来制定错误日志的位置及其格式,如 log-error=/usr/local/mysql/,还可以指定错误日志的文件名字,如果不指定,就以hostname.err形式出现,当一个错误日志比较大时,希望重新生成一个日志,可以执行 mysqladmin -uroot -pyourpassword flush logs,这时老的日志会被修改为hostname-old.err,生成的新日志为hostname.err。可以登录mysql 执行   show variables like "log_error";来查看错误日志保存位置  【NOTICE】错误日志是排错mysql的主要文件,很有必要对这里强调一下

015:show variables like "%%"  & show status like "%%"

A:前者show global variables like "%%"是查看mysql的配置参数,配置文件my.cnf的配置选项可以在此体现,这时个键值的问题,如innodb_buffer_pool_size = 2G mysql内部函数定义了innodb_buffer_pool_size这个键,后面的值可以设定,如果未设定,采用默认值 || show status like "%%" 是mysql实际运行状况各参数的值,这是个实际值,可以通过show status \G 老查看mysql的各个实际运行参数 如关于query-cache的 show status like "%Qcache%",可以显示mysql在实际运行状况下关于查询缓存的各个键值


016:mysql支持ANSI的四种隔离级别 

A:1:read uncommit 2:read commit 3:repeatable read 4: serializable

可以用show variables like "%isolation%" ,查看对应的表隔离级别

可以用 set session transition  level  设置表的隔离级别(未做验证)

 

017:创建mysql表可以指定大小

A:create table lingxun.china(id int ) max_row=100000 avg_row_length=32(默认单位GB)

可以查看一下 show table status from lingxun like "china"  可以发现多了了create options =max_row=100000 avg_row_length=32

 

018:mysqldumpslow工具

A:mysqldumpslow 是一个慢速日志分析工具,实际是一个pl脚本,mysql开启慢速日志功能 set global log_slow_queries =on , 在配置文件中也可以log_slow_queries 即可记录慢速查询日志,默认慢速查询日志的时间粒度为秒,这个时间对于高性能用用程序而言时间太长,所以可以打上某些补丁,减小时间粒度,在《高性能mysql》中有提到,补丁下载地址:http://www.mysqlper-formanceblog.com/mysql-patches/ ,同时该地址还提供了两个基于该补丁以毫秒为单位的慢速日志分析工具,mysql_slow_log_filter mysql_slow_log_parser。这里还有个通用慢速日志分析第三方工具mysqlsla,可以从 下载

019:grant授予普通用户的全部权利都是什么

A:select,delete,create,update,drop,reference,index,alter,create view,show view

replication,slave(???)

最大的权限即all ;最小的权限 usage


020:mysql的几个重要参数
A:key_buffer_size 逐渐缓冲大小

table_buffer_size 打开的表的数量

thread_buffer_size 线程的缓冲大小

query_buffer_size 查询缓存

read_buffer_size 

read_rnd_buffer_size

sort_buffer_size

innodb_log_file_size的大小依赖于innodb_buffer_pool_size

当你在某个回话重新设置这些值的时候,缓存会首先对自己枷锁,然后更新直到缓存更新完成才允许访问
对于这些变量值并不是在服务器启动的时候就分配给对应的内存,而是在使用时才会分配

021:mysql内存说明

A:一般mysql服务器的内存分为几块:操作系统本身的内存(一般分配在1-2G即便有很大的内存)

myisam的键缓存key_buffer_size(myisam键缓存越大,查询速度越快,一般为可用内存大的25-50%上限为4G[可能受操作系统单进程内存最大值限制]) tips:可以使用show status show variables查看myisam的参数状态,可以手动预加载键到缓存中 load index into cache

innodb缓冲池innodb_buffer_pool_size(innodb比myisam更以来缓存innodb缓冲池对innodb至关重要),一般情况要与可用内存80%保持一致,但点那个缓存池很大时,服务器故障会让mysql再次启动花费大量时间修复,且innodb很难被关掉因为缓冲池中有太多脏页,dirty_page

查询缓存(query_cache_size)

线程缓存(thread_cache_size)定义了mysql可以在缓存中保存的线程的数量

表缓存 (table_cache_size)定义了可以打开的表的数目,主要是以myisam为主,主要缓存myisam的文件 描述符及解析后的数据。对于innodb而言,表缓存机制是

innodb日志文件 innodb_log_file_size一般在极大写入情况下也只需要几百兆,一般数值为256M,innodb_log_buffer_size=1-8M(足以)

innodb_data_home_dir = /var/lib/mysql此选项设置innodb的数据文件家目录,idb文件

innodb_data_file_path= ibdata1:1G;ibdata2:1G;autoextend innodb数据库的表空间文件

 

022:myisam备份方案

A:首先锁表 lock tables或者flush tables with read lock 。然后flush tables将缓存刷新到表,然后在备份数据
 

023:mysql的备份工具

A:传统的mysqldump 这里要说的是maatkit是有perl语言写成,是google code的下属的一个开源项目,下载地址:

024:mysql的运行状态查看

A:mysqladmin -uUSER -pyourpassword extended-status -r -i 5规定时间刷新一次

mysql >  show status查看回话选项;  show global status查看全局变量  show innodb status;

025:mysql的管理工具

A:mysql query brower mysql查询浏览器

mysql administrator  mysql管理员

mysql Migration Toolkit mysql 迁移工具

第三方:

SQLyog 商业软件,适合dba开发人员

phpmyadmin

监控工具:

nagios

zenoss

hyperic HQ

openNMS

groundwork open source

zabbix

基于rrdtools:

mrtg

cacti

cricket

ganglia

交互式工具

innotop

分析工具:

hackmysql

maatkit

mysql的辅助工具

mysql proxy

 

阅读(1801) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~