mysql优化--引擎

t1.myi t1.myd t1.frm
myisam innodb memory ndbcluster
引擎
myisam 速度快
.myi index 存储索引
.myd data 存储数据
.frm 存储表结构
可以把数据分开存储,比放在一块硬盘里访问速度快。
默认的数据都保存在var下面,可以人为的改变他们的存储位置
#mkdir data 最好是不同的硬盘上

  #chown mysql data
  mysql> create table tb1(name char(20) not null,email char(20) not null) data directory='/data' index directory='/data';

指定数据文件的位置 指定索引文件的位置
上面的那一条只适用于myisam类型,.frm文件必须得放在var下,不能指定放到别的地方

innodb 大数据库 事务 外键
大型数据库用innodb
[root@www var]# pwd
/usr/local/mysql/var

  [root@www var]# ls ib*
  ibdata1  ib_logfile0  ib_logfile1
  innodb类型的表的数据存在ibdata1里面,不像myisam生成3个文件, ib_logfile0  ib_logfile1存放日志
  
  初始是10M,每次增加8M ,初始大小可以指定,要修改配置文件
  #vim /etc/my.cnf
      innodb_data_file_path=ibdata1:20M:autoextend:max:1000M
      设定初始大小是20M,增幅也是8M  设定峰值是1000M,就是指定最大能增加到1000M
      
      innodb_data_home_dir=/data  
      指定他的存储数据的位置,也就是ibdata1的位置

memory
memory 速度快,比myisam快30%,当数据库重启之后,数据就会丢失,因为他是存在内存里的
mysql> create table t20(id int,name char(10)) engine=memory; 创建一个memory类型的表

mysql> create table t1(id int) engine=innodb;
查看引擎:
mysql>show engines;
mysql>show create table t1;
mysql>show table status like ‘t1’;

切换默认引擎:
[mysqld]
default-storage-engine = innodb

修改已经存在的表的引擎
mysql> alter table t2 engine=myisam;


默认上面那些引擎类型都是开启,所以如果不想他们启动的话,可以修改配置文件
#vim /etc/my.cnf
skip-mrg_myisam
skip-csv
skip-memory

  不想用哪个,加上跳过哪个就可以了
  重启mysql就可以了,这样也可以优化数据库。

修改数据存储位置实例(此例为rpm方式安装)
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:
   1、home目录下建立data目录
   cd /home
   mkdir data
   2、把MySQL服务进程停掉:
   mysqladmin -u root -p shutdown
   3、把/var/lib/mysql整个目录移到/home/data
   mv /var/lib/mysql /home/data/
   这样就把MySQL的数据文件移动到了/home/data/mysql下
   4、找到my.cnf配置文件
  如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
   [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
   5、编辑MySQL的配置文件/etc/my.cnf
  为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
   #vi  my.cnf    (用vi工具编辑my.cnf文件,找到下列数据修改之)
   # The MySQL server
    [mysqld]
    port   = 3306
    #socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
    socket  = /home/data/mysql/mysql.sock   (加上此行)
   6、修改MySQL启动脚本/etc/rc.d/init.d/mysql
  最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
   [root@test1 etc]# vi /etc/rc.d/init.d/mysql
   #datadir=/var/lib/mysql    (注释此行)
   datadir=/home/data/mysql   (加上此行)
   7、重新启动MySQL服务
   /etc/rc.d/init.d/mysql start
   或用reboot命令重启Linux
以下是mysql数据目录修改出现

  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)错误的解决方案:
   
  本例是将Mysql的数据目录移动到了/home/data/下,即mysql.sock所在的真实目录为,/home/data/mysql/mysql.sock
   
  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
   
  mysql有tcp连接和socket连接方式,而上面这种错误一般是因为mysql是使用rpm方式安装的,它会自动寻找 /var/lib/mysql/mysql.sock 这个文件,是一种socket连接方式。
   
   
  常见解决办法如下:
  1、
  创建/修改文件 /etc/my.cnf文件,在[mysqld]上面添加    
  [client]
  #password=your_password
  port=3306
  socket=/home/data/mysql/mysql.sock
  #在这里写上你的mysql.sock的正确位置。    
  2、
  指定IP地址,使用tcp方式连接mysql,而不使用本地socket方式
  #mysql -h127.0.0.1 -uuser -ppassword       
  3、
  为 mysql.sock 加个连接,比如说实际的mysql.sock在 /home/data/mysql/ 下,则
  #ln -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock即可
  第2种方法:
  1.# mv /var/lib/mysql/[DB_name]  [New Location]  #移动数据库文件
  2.# ln -s [New Location] /var/lib/mysql/[DB_name]  #建立软链接

你可能感兴趣的:(运维部署调优)