Mysql文件导入

来源:互联网 发布:mac终端编辑文件命令 编辑:程序博客网 时间:2024/06/11 09:08

远程连接数据库:

mysql -h 202.113.25.34 -P 3306 -u root -p123;

导入本地文件至远程数据库:

LOAD DATA LOCAL INFILE "C:/SQL.dat" INTO TABLE Orders FIELDS TERMINATED BY ','; 



解决mysql出现"the table is full"的问题

MySQL出现"the table is full"的问题,一般有两个原因:

一 . You are using the MEMORY (HEAP) storage engine; in this case you need to increase the value of the max_heap_table_size system variable. See Section 5.1.3, “Server System Variables”.
ERROR 1114 (HY000) at line 1720: The table 'XXXX' is full

1. 设置新的参数

mysql> set global max_heap_table_size=1048576000

mysql> set global tmp_table_size=1048576000

2. 修改mysql配置文件,使得mysql重新启动时变动能够持续生效。

tmp_table_size = 1048576000
max_heap_table_size = 1048576000

3. 最后,你需要重新连上MYSQL,重新创建相关的内存表。

系统默认是16M,修改完后重启mysql
 
二.硬盘空间满了,清理硬盘即可.
不要被mysql的安装目录所欺骗, 最好亲自去看看数据存放目录是哪
在my.ini  搜索 datadir
看其指向的目录 就是数据存放目录。(我就上当了)


Mysql InnoDB彻底释放磁盘空间

Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。
如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间。
运行OPTIMIZE TABLE 表名后,虽然最后会报Table does not support optimize, doing recreate + analyze instead,但其实已经成功了:)
-------------------------------------------------------------
如果没有设置这个参数,又想释放空间,彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。
下面是基本的步骤:
1 使用mysqldump命令将InnoDB数据库导出
2 停止MySQL
3 删除所有InnoDB数据库文件和日志
4 启动MySQL并自动重建InnoDB数据库文件和日志文件
5 导入前面备份的数据库文件
----------------------------------------------
具体命令:

# 备份数据库:mysqldump -uroot -proot --quick --force --all-databases > mysqldump.sql# 停止数据库service mysqld stop# 删除这些大文件rm /usr/local/mysql/var/ibdata1rm /usr/local/mysql/var/ib_logfile*# 手动删除除Mysql之外所有数据库文件夹,然后启动数据库service mysqld start# 还原数据mysql -uroot -proot < mysqldump.sql


mysql配置文件my.ini

my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数。
   my.ini分为两块:Client Section和Server Section。
   Client Section用来配置MySQL客户端参数。
   要查看配置参数可以用下面的命令:

show variables like '%innodb%'; # 查看innodb相关配置参数show status like '%innodb%'; # 查看innodb相关的运行时参数(比如当前正在打开的表的数量,当前已经打开的表的数量)show global status like 'open%tables'; # 查看全局的运行时参数,加上global是对当前mysql服务器中运行的所有数据库实例进行统计。不加global则只对当前数据库实例进行统计。

1、Client Section

  [client]    port = 3306 # 设置mysql客户端连接服务端时默认使用的端口    [mysql]    default-character-set=utf8 # 设置mysql客户端默认字符集

2、Server Section

[mysqld]port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口basedir="C:/Program Files/MySQL/MySQL Server 5.5/" # 基准路径,其他路径都相对于这个路径datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" # mysql数据库文件所在目录character-set-server=latin1 # 服务端使用的字符集默认为8比特编码的latin1字符集default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # SQL模式为strict模式max_connections=100 # mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误。query_cache_size=0 # 查询缓存大小,用于缓存SELECT查询结果。如果有许多返回相同查询结果的SELECT查询,并且很少改变表,可以设置query_cache_size大于0,可以极大改善查询效率。而如果表数据频繁变化,就不要使用这个,会适得其反table_cache=256 # 这个参数在5.1.3之后的版本中叫做table_open_cache,用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与       max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。tmp_table_size=34M # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。thread_cache_size=8 # 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高。
[mysqld]port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口basedir="C:/Program Files/MySQL/MySQL Server 5.5/" # 基准路径,其他路径都相对于这个路径datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" # mysql数据库文件所在目录character-set-server=latin1 # 服务端使用的字符集默认为8比特编码的latin1字符集default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # SQL模式为strict模式max_connections=100 # mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误。query_cache_size=0 # 查询缓存大小,用于缓存SELECT查询结果。如果有许多返回相同查询结果的SELECT查询,并且很少改变表,可以设置query_cache_size大于0,可以极大改善查询效率。而如果表数据频繁变化,就不要使用这个,会适得其反table_cache=256 # 这个参数在5.1.3之后的版本中叫做table_open_cache,用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与       max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。tmp_table_size=34M # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。thread_cache_size=8 # 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高。

[mysqld]port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口basedir="C:/Program Files/MySQL/MySQL Server 5.5/" # 基准路径,其他路径都相对于这个路径datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" # mysql数据库文件所在目录character-set-server=latin1 # 服务端使用的字符集默认为8比特编码的latin1字符集default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # SQL模式为strict模式max_connections=100 # mysql服务器支持的最大并发连接数(用户数)。但总会预留其中的一个连接给管理员使用超级权限登录,即使连接数目达到最大限制。如果设置得过小而用户比较多,会经常出现“Too many connections”错误。query_cache_size=0 # 查询缓存大小,用于缓存SELECT查询结果。如果有许多返回相同查询结果的SELECT查询,并且很少改变表,可以设置query_cache_size大于0,可以极大改善查询效率。而如果表数据频繁变化,就不要使用这个,会适得其反table_cache=256 # 这个参数在5.1.3之后的版本中叫做table_open_cache,用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与       max_connections有关。当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。tmp_table_size=34M # 内存中的每个临时表允许的最大大小。如果临时表大小超过该值,临时表将自动转为基于磁盘的表(Disk Based Table)。thread_cache_size=8 # 缓存的最大线程数。当客户端连接断开时,如果客户端总连接数小于该值,则处理客户端任务的线程放回缓存。在高并发情况下,如果该值设置得太小,就会有很多线程频繁创建,线程创建的开销会变大,查询效率也会下降。一般来说如果在应用端有良好的多线程处理,这个参数对性能不会有太大的提高。

mysql物理文件组成以及innodb的配置使用  

1、mysql的错误日志文件:txwhdb.err


mysql的错误日志默认存放在数据目录下,以hostname.err命名,但是可以使用命令:--log-error[=file-name]来修改其存放路径以及文件名
2、mysql二进制日志:mysql-bin.xxxxxxxxxx,即常说的binlog


是mysql中最为重要的日志之一,在my.cnf当中:
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
你可以通过修改这个配置来设定你想存放的路径以及文件名
mysql-bin.index文件的功能是记录所有binlog的绝对路径,保证mysql的各种线程能够顺利的根据它找到所需要的binlog文件
 
binlog还有一些选项参数:
--max_binlog_size:指定单个binlog日志文件的大小
--binlog_do_db=db_name:指定对特定的数据库记录binlog日志
--binlog_ignore_db=db_name:指定忽略为某个数据库记录binlog日志
 
还有更新日志,查询日志,慢查询日志以及innodb的redo日志等,不做详述,应该用不到
3、数据文件


mysql两种常用存储引擎myisam和innodb
myisam不支持事务;innodb支持事务,当前作为插件来安装
 
myisam的数据库的物理文件结构为:
.frm文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等。各种存储引擎都需要frm文件,并且存放于数据库名目录下。
.myd文件:myisam存储引擎专用,用于存储myisam表的数据
.myi文件:myisam存储引擎专用,用于存储myisam表的索引相关信息
 
innodb的数据库的物理文件结构为:
.frm文件
.ibd文件和.ibdata文件:
这两种文件都是存放innodb数据的文件,之所以用两种文件来存放innodb的数据,是因为innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。
独享表空间存储方式使用.ibd文件,并且每个表一个ibd文件
共享表空间存储方式使用.ibdata文件,所有表共同使用一个ibdata文件
my.cnf文件当中有这样一段注释:
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/var/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/var/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
 
共享表空间的存储方式,可以使用上面选项中的以下两项来共同配置组成:
#innodb_data_home_dir = /usr/local/mysql/var/
#innodb_data_file_path = ibdata1:10M:autoextend
innodb_data_home_dir 指定数据存放的总目录,innodb_data_file_path 配置每一个文件的名称。
当然也可以不配置innodb_data_home_dir ,而是直接在innodb_data_file_path 指定绝对路径。
注意:当配置多个ibdata文件的时候,如果配置可扩展的ibdata文件,那么这个可扩展的文件必须配置在所有已经配置的ibdata文件之后,因为mysql针对共享表空间的innodb仅支持最后一个ibdata是可扩展的。配置完毕之后,需要重启mysql才算是添加完成。
 
独立表空间可以如下配置:
[mysqld]
......
innodb_file_per_table
 
pid文件:
是mysql在unix/linux环境下的一个进程文件,和许多其他的unix或者linux服务器端程序一样,它存放着自己的进程id
 
socket文件:
MySQL通过这个unix socket 文件来与本地的客户端进行通信的。如果此文件丢了,可以通过重新启动服务器来重新创建它

参考:http://blog.csdn.net/yucan1001/article/details/7956083

http://blog.sina.com.cn/s/blog_6942a1590101429h.html

http://www.jb51.net/article/63764.htm

http://www.cnblogs.com/feichexia/archive/2012/11/27/mysqlconf.html

http://blog.163.com/chenyao_2000/blog/static/1280109302012624342911/


1 0