mysql文件导入办法(直接copy数据库文件)

一.MySQL数据文件说明先看MySQL DataDirectory下的文件:


这里面dave,mysql 都是咱们的数据库名称,咱们在进入mysql 数据库查看:


        在MySQL 中每个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各类表数据文件。不一样的MySQL 存储引擎有各自不一样的数据文件,存放位置也有区别。
        多数存储引擎的数据文件都存放在和MyISAM 数据文件位置相同的目录下,可是每一个数据文件的扩展名却各不同。如MyISAM 用“.MYD”做为扩展名,Innodb 用“.ibd”,Archive 用“.arc”,CSV 用“.csv”,等等。

1.1 “.ibd”文件和ibdata 文件        这两种文件都是存放Innodb 数据的文件,之因此有两种文件来存放Innodb 的数据(包括索引),是由于Innodb 的数据存储方式可以经过配置来决定是使用共享表空间存放存储数据,仍是独享表空间存放存储数据。独享表空间存储方式使用“.ibd”文件来存放数据,且每一个表一个“.ibd”文件,文件存放在和MyISAM数据相同的位置。
        若是选用共享存储表空间来存放数据,则会使用ibdata 文件来存放,全部表共同使用一个(或者多个,可自行配置)ibdata 文件。ibdata 文件能够经过innodb_data_home_dir 和innodb_data_file_path两个参数共同配置组成, innodb_data_home_dir 配置数据存放的总目录, 而innodb_data_file_path 配置每个文件的名称。固然,也能够不配innodb_data_home_dir而直接在innodb_data_file_path参数配置的时候使用绝对路径来完成配置。

mysql> showvariables like 'innodb_data%';
+-----------------------+------------------------+
|Variable_name | Value |
+-----------------------+------------------------+
|innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | |
+-----------------------+------------------------+
2 rows in set(0.01 sec)

        innodb_data_file_path中能够一次配置多个ibdata文件。文件能够是指定大小,也能够是自动扩展的,可是Innodb 限制了仅仅只有最后一个ibdata 文件可以配置成自动扩展类型。当咱们须要添加新的ibdata 文件的时候,只能添加在innodb_data_file_path配置的最后,并且必须重启MySQL 才能完成ibdata 的添加工做。

1.2 “.frm”文件        与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不管是什么存储引擎,每个表都会有一个以表名命名的“.frm”文件。全部的“.frm”文件都存放在所属数据库的文件夹下面。

1.3 “.MYD”文件        “.MYD”文件是MyISAM 存储引擎专用,存放MyISAM 表的数据。每个MyISAM 表都会有一个“.MYD”文件与之对应,一样存放于所属数据库的文件夹下,和“.frm”文件在一块儿。

1.4 “.MYI”文件        “.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来讲,能够被cache 的内容主要就是来源于“.MYI”文件中。每个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”同样。

小结一下:        MyISAM 存储引擎的表在数据库中,每个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。 每一个表都有且仅有这样三个文件作为MyISAM 存储类型的表的存储,也就是说无论这个表有多少个索引,都是存放在同一个.MYI 文件中。
        这个在开始的截图里看的比较清楚。


二.更改MySQL 数据文件目录        MySQL默认的数据文件存储目录为/var/lib/mysql。下面演示一下修改MySQL默认的data directory。

2.1 建立新的目录[root@rac2 /]# mkdir -p /u01/mysql
[root@rac2 lib]# chown mysql.mysql/u01/mysql
[root@rac2 lib]# chmod -R 777 /u01/mysql

2.2 停mysql[root@rac2 lib]# service mysql stop
Shutting down MySQL... [ OK ]
[root@rac2 lib]# ps -ef|grep mysql
root 3955 3799 0 20:00 pts/2 00:00:00 grep mysql

2.3 移动目录[root@rac2 lib]# mv /var/lib/mysql /u01/

2.4 修改my.cnf配置文件若是/etc/目录下没有my.cnf配置文件,到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并更名为my.cnf。命令以下:
[root@rac2 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

vi修改my.cnf的sock 文件位置:
# The MySQL server
[mysqld]
port = 3306
#socket = /var/lib/mysql/mysql.sock
socket = /u01/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
#max_allowed_packet = 1M
max_allowed_packet=100M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

2.5 修改启动脚本:/etc/init.d/myql[root@rac2 mysql]# vi /etc/init.d/mysql
datadir=/u01/mysql

2.6 启动mysql[root@rac2 mysql]# service mysql start
Starting MySQL..... [ OK ]

启动成功,查看进程:
[root@rac2 mysql]# ps -ef|grep mysql
root 11512 1 2 21:02 pts/2 00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir=/u01/mysql --pid-file=/u01/mysql/rac2.pid
mysql 11769 11512 5 21:02 pts/2 00:00:00 /usr/sbin/mysqld --basedir=/usr--datadir=/u01/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql--log-error=/u01/mysql/rac2.err --pid-file=/u01/mysql/rac2.pid--socket=/u01/mysql/mysql.sock --port=3306
root 11796 3799 0 21:02 pts/2 00:00:00 grep mysql

2.7 其中的小插曲:
以前给/u01/mysql 目录赋的755 权限,可是启动报错:
[root@rac2 mysql]# service mysql start
Starting MySQL....The server quit withoutupdating PID file[FAILED]ysql/rac2.pid).

查看log:/u01/mysql/rac2.err
111130 20:59:34 [Note] /usr/sbin/mysqld:Shutdown complete

111130 20:59:34 mysqld_safe mysqld from pidfile /u01/mysql/rac2.pid ended
111130 21:02:25 mysqld_safe Starting mysqlddaemon with databases from /u01/mysql
/usr/sbin/mysqld: File './mysql-bin.~rec~'not found (Errcode: 13)
111130 21:02:25 [ERROR]MYSQL_BIN_LOG:pen_purge_index_file failed to open register file.
111130 21:02:25 [ERROR]MYSQL_BIN_LOG:pen_index_file failed to sync the index file.
111130 21:02:25 [ERROR] Aborting

应该是权限不够,不能建立pid 文件,赋给777 权限后,正常:
chmod -R 777 /u01/mysql

[root@rac2 mysql]# ll /u01/mysql/rac2.pid 
-rw-rw---- 1 mysql mysql 6 Nov 30 21:02/u01/mysql/rac2.pidhtml