日期:2014-05-16  浏览次数:20840 次

mysql 使用小结

一:mysqldump 导出数据

?

mysqldump -uroot --opt database <table> > bakup.sql
1:如果不写table表示导出database中所有表
2:bakup.sql中包含所有DDL语句和数据
3:如果只想要DDL语句,可以用--no-data
mysql -uroot --opt --no-data database >bakup.sql
4:如果只想要数据,可以用
mysql -uroot --opt -t database >bakup.sql 

?

二:导入数据

?

mysql -uroot database < bakup.sql
bakup.sql 包含DDL语句和Insert语句

?

三:my.cnf(my.ini)的配置

以下是Mysql数据库服务器配置文件/etc/my.cnf的详细配置。应用场合是InnoDB引擎,4核CPU, 32位SUSE。

[client]
  port        = 3306
  socket      = /tmp/mysql.sock
  # The MySQL server
[mysqld]
  bind-address = 192.168.0.11
  port         = 3306
  socket       = /tmp/mysql.sock

?  #设置表的默认类型。和default-storage-engine同义
  default-table-type = innodb

  #以下是网络传输配置
  #连接进程帧听队列的大小
  back_log = 50

  #之前有过经验,connections超过370的时候,线程的栈空间被占满,mysqld无法工作,所以限制为200
  max_connections=200

  #连接500次发生错误之后,屏蔽从该host的所有连接
  max_connect_errors = 500

  #通信缓冲区的最大长度。包或任何生成的/中间字符串的最大大小。
  max_allowed_packet = 32M

  #在查询之间将通信缓冲区重设为该值。如果语句超出该长度,缓冲区自动扩大,直到max_allowed_packet字节。
  net_buffer_length = 8K

  #以下是查询优化
  #避免外部锁定(默认是ON). 对应variable的skip_external_locking
  skip-locking
 
   #索引缓冲区(仅作用于MYISAM表和临时表),决定了数据库索引处理的速度
  key_buffer_size = 10M

  #所有线程打开的表的数目(一个表使用2个文件描述符),表数量多,就要大一些。
    #增大该值可以增加mysqld需要的文件描述符的数量。
    #可以检查Opened_tables(已经打开的表的数量)状态变量来检查你是否需要增加表缓存。
  table_cache = 2048

  #每个排序线程分配的缓冲区的大小。增加该值可以加快ORDER BY或GROUP BY操作
  sort_buffer_size = 5M

  #用于完全联接的缓冲区的大小(当不使用索引的时候使用联接操作)。
  #一般情况获得快速联接的最好方法是添加索引。
    #当增加索引时不可能通过增加join_buffer_size值来获得快速完全联接。
  #将为两个表之间的每个完全联接分配联接缓冲区。对于多个表之间不使用索引的复杂联接,需要多联接缓冲区。
  join_buffer_size = 8M

  #服务器应缓存多少线程以便重新使用。
     #当客户端断开连接时,如果线程少于thread_cache_size,则客户端的线程被放入缓存。
  #如果状态变量Threads_created(创建用来处理连接的线程数)较大,你可能要增加thread_cache_size值。
     #缓存访问率的计算方法Threads_created/Connections(试图连接到(不管是否成功)MySQL服务器的连接数)
  thread_cache_size = 8

  #使应用程序向线程系统提供需要同时运行的期望的线程数目的提示
  thread_concurrency = 8

  #为缓存查询结果分配的内存的数量,加快查询的速度。默认值是0,即禁用查询缓存。
  query_cache_size = 64M

  #不要缓存大于该值的结果,默认值是1048576(1MB)。
  query_cache_limit = 2M

  #ft_min_word_len和ft_max_word_len表示FULLTEXT索引的最小和最大字长
  ft_min_word_len = 4

  #每个线程的堆栈大小
  thread_stack = 192K

  #事务隔离级别。
    #READ-UNCOMMITTED: 未提交读会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 ) ;
    #READ-COMMITTED: 提交读会出现不可重复读、幻读问题(锁定正在读取的行);
    #REPEATABLE-READ: 默认值,可重复读会出幻读(锁定所读取的所有行);
    #SERIALIZABLE: 序列化保证所有的情况不会发生(锁表)
  transaction_isolation = REPEATABLE-READ

  #联合查询或者view的时候,可能会建立临时表,
     #如果在磁盘上建的话,会导致性能低,设置此值可以一定程度上加快速度
  tmp_table_size = 64M

  #每个线程连续扫描时为扫描的每个表分配的缓冲区的大小,如果进行多次连续扫描,可能需要增加该值
  read_buffer_size = 1M

  #当排序后按排序后的顺序读取行时,则通过该缓冲区读取行,避免搜索硬盘。
     #将该变量设置为较大的值可以大大改进ORDER BY的性能。
     # 但是,这是为每个客户端分配的缓冲区,因此你不应将全局变量设置为较大的值。
     #相反,只为需要运行大查询的客户端更改会话变量。
  read_rnd_buffer_size = 2M

  #以下是主从同步配置
  # Replication Master Server (default)
  #主机是1。备机从2开始。
  server-id    = 1

  #启动数据库更新二进制日志记录,日志文件名前缀为mysql-bin
  log-bin=mysql-bin

  #在事务过程中容纳二进制日志SQL语句的缓存大小,
  #二进制日志缓存是服务器支持事务存储引擎并且服务器启用了二进制日志(–log-bin选项)的前提下为每个客户端分配的内存。
  #如果经常使用大的,多语句事务,可以增加该值以获得更有的性能
  binlog_cache_size = 5M

  #是否记录慢查询,默认OFF。用long_query_time变量的值来确定“慢查询”。
  log_slow_queries

  #超过2S的query将记slow query日志
  long_query_time = 2

  #没有使用索引的查询也作为慢速查询记录到慢速日志里
  #或者用log-queries-not-using-indexes
  log_long_format

  #告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不应将更新保存到二进制日志中。
  binlog-ignore-db = information_schema
  binlog-ignore-db = cluster
  binlog-ignore-db = mysql

  #告诉从服务器限制默认数据库(由USE所选择)为db_name的语句的复制
  replicate-do-db = test1
  replicate-do-db = test2

  #跨库更新表要用到如下配置。告诉从服务器线程限制复制更新的表匹配指定的数据库和表名模式的语句。
     #模式可以包含‘%’和‘_’通配符,与LIKE模式匹配操作符具有相同的含义。
     #要指定多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。
  replicate-wild-do-table = test1.%
  replicate-wild-do-table = test2.%

  #当Slave从Master数据库读取日志时更新新写入日志中。
     #如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新
  log-slave-updates

  #以下是InnoDB引擎配置
  #InnoDB 不会自己建立目录,必须自己使用操作系统命令建立相应的目录。