<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post/1091/</link>
<title><![CDATA[MYSQL 批量修改表前缀]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Wed, 14 Mar 2018 01:22:22 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1091/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>/*<br/> * MYSQL 批量修改表前缀<br/>*/<br/>error_reporting(0);<br/>$old_pre = &#039;tdr_&#039;; // 原表前缀<br/>$new_pre = &#039;db_&#039;; // 新表前缀<br/>// 配置连接<br/>$db = new mysqli(&#039;127.0.0.1&#039;, &#039;db_user&#039;, &#039;db_pass&#039;, &#039;db_name&#039;);<br/>if ($db-&gt;connect_error) die(&#039;Connect Error (&#039; . $db-&gt;connect_errno . &#039;) &#039; . $db-&gt;connect_error);<br/><br/>$query = $db-&gt;query(&#039;SHOW TABLES;&#039;);<br/>$list = $query-&gt;fetch_all();<br/>echo &#039;table : &#039;, count($list),&#039;&lt;hr&gt;&#039;;<br/><br/>$len = strlen($old_pre);<br/>foreach ($list as $val) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$new_name = $new_pre.substr($val&#91;0&#93;, $len, strlen($val&#91;0&#93;)-$len);<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;ALTER TABLE &#123;$val&#91;0&#93;&#125; RENAME &#123;$new_name&#125;;&lt;br /&gt;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$db-&gt;query(&quot;ALTER TABLE &#123;$val&#91;0&#93;&#125; RENAME &#123;$new_name&#125;;&quot;);<br/>&#125;<br/>echo &#039;&lt;hr&gt;success.&#039;;<br/><br/>$db-&gt;close();<br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1085/</link>
<title><![CDATA[大数据量处理 like慢的解决方案]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Wed, 07 Mar 2018 00:23:53 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1085/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>select * FROM table WHERE keyword LIKE &#039;field%&#039;<br/><br/>SELECT * FROM table WHERE LOCATE(&#039;field&#039;,keyword)&gt;0;<br/><br/>SELECT * FROM table WHERE INSTR(keyword,&#039;field&#039;)&gt;0;<br/></div><br/><br/>table : 表名<br/><br/>field : 需要查字段名<br/><br/>keyword : 字段名称<br/>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1007/</link>
<title><![CDATA[MySQL配置文件my.cnf优化详解]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Sat, 08 Aug 2015 02:49:51 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1007/</guid> 
<description>
<![CDATA[ 
	MySQL 5.5.13<br/>参数说明：<br/>[client]<br/>character-set-server = utf8<br/>port&nbsp;&nbsp;&nbsp;&nbsp;= 3306<br/>socket&nbsp;&nbsp;= /data/mysql/3306/mysql.sock<br/> <br/>[mysqld]<br/>character-set-server = utf8<br/> <br/>user&nbsp;&nbsp;&nbsp;&nbsp;= mysql<br/>port&nbsp;&nbsp;&nbsp;&nbsp;= 3306<br/>socket&nbsp;&nbsp;= /data/mysql/3306/mysql.sock<br/>basedir = /usr/local/webserver/mysql<br/>datadir = /data/mysql/3306/data<br/>log-error = /data/mysql/3306/mysql_error.log<br/>pid-file = /data/mysql/3306/mysql.pid<br/> <br/># table_cache 参数设置表高速缓存的数目。每个连接进来，都会至少打开一个表缓存。#因此， table_cache 的大小应与 max_connections 的设置有关。例如，对于 200 个#并行运行的连接，应该让表的缓存至少有 200 × N ，这里 N 是应用可以执行的查询#的一个联接中表的最大数量。此外，还需要为临时表和文件保留一些额外的文件描述符。<br/>#当 Mysql 访问一个表时，如果该表在缓存中已经被打开，则可以直接访问缓存；如果#还没有被缓存，但是在 Mysql 表缓冲区中还有空间，那么这个表就被打开并放入表缓#冲区；如果表缓存满了，则会按照一定的规则将当前未用的表释放，或者临时扩大表缓存来存放，使用表缓存的好处是可以更快速地访问表中的内容。执行 flush tables 会#清空缓存的内容。一般来说，可以通过查看数据库运行峰值时间的状态值 Open_tables #和 Opened_tables ，判断是否需要增加 table_cache 的值（其中 open_tables 是当#前打开的表的数量， Opened_tables 则是已经打开的表的数量）。即如果open_tables接近table_cache的时候，并且Opened_tables这个值在逐步增加，那就要考虑增加这个#值的大小了。还有就是Table_locks_waited比较高的时候，也需要增加table_cache。<br/>open_files_limit = 10240<br/>table_cache = 512<br/>#非动态变量，需要重启服务<br/>#指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求，该参数生效，主线程花费很短的时间检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接，则需要增大该参数的值，该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。<br/>back_log = 600<br/>#MySQL允许最大连接数<br/>max_connections = 5000<br/>#可以允许多少个错误连接<br/>max_connect_errors = 6000<br/>#使用–skip-external-locking MySQL选项以避免外部锁定。该选项默认开启<br/>external-locking = FALSE<br/>#设置最大包,限制server接受的数据包大小，避免超长SQL的执行有问题 默认值为16M，当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时，将发出“信息包过大”错误，并关闭连接。对于某些客户端，如果通信信息包过大，在执行查询期间，可能会遇到“丢失与MySQL服务器的连接”错误。默认值16M。<br/>#dev-doc: <a href="http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html" target="_blank">http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html</a><br/>max_allowed_packet = 32M<br/># Sort_Buffer_Size 是一个connection级参数，在每个connection（session）第一次需要使用这个buffer的时候，一次性分配设置的内存。<br/>#Sort_Buffer_Size 并不是越大越好，由于是connection级的参数，过大的设置+高并发可能会耗尽系统内存资源。例如：500个连接将会消耗 500*sort_buffer_size(8M)=4G内存<br/>#Sort_Buffer_Size 超过2KB的时候，就会使用mmap() 而不是 malloc() 来进行内存分配，导致效率降低。<br/>#技术导读 <a href="http://blog.webshuo.com/2011/02/16/mysql-sort_buffer_size/" target="_blank">http://blog.webshuo.com/2011/02/16/mysql-sort_buffer_size/</a><br/>#dev-doc: <a href="http://dev.mysql.com/doc/refman/5.5/en/server-parameters.html" target="_blank">http://dev.mysql.com/doc/refman/5.5/en/server-parameters.html</a><br/>#explain select*from table where order limit；出现filesort<br/>#属重点优化参数<br/>sort_buffer_size = 8M<br/>#用于表间关联缓存的大小<br/>join_buffer_size = 1M<br/>#服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求，那么请求将从缓存中读取,如果缓存中是空的或者是新的请求，那么这个线程将被重新创建,如果有很多新的线程，增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量，可以看到这个变量的作用<br/>thread_cache_size = 300<br/>#设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下，错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8<br/>#属重点优化参数<br/>thread_concurrency = 8<br/>#对于使用MySQL的用户，对于这个变量大家一定不会陌生。前几年的MyISAM引擎优化中，这个参数也是一个重要的优化参数。但随着发展，这个参数也爆露出来一些问题。机器的内存越来越大，人们也都习惯性的把以前有用的参数分配的值越来越大。这个参数加大后也引发了一系列问题。我们首先分析一下query_cache_size的工作原理：一个SELECT查询在DB中工作后，DB会把该语句缓存下来，当同样的一个SQL再次来到DB里调用时，DB在该表没发生变化的情况下把结果从缓存中返回给Client。这里有一个关建点，就是DB在利用Query_cache工作时，要求该语句涉及的表在这段时间内没有发生变更。那如果该表在发生变更时，Query_cache里的数据又怎么处理呢？首先要把Query_cache和该表相关的语句全部置为失效，然后在写入更新。那么如果Query_cache非常大，该表的查询结构又比较多，查询语句失效也慢，一个更新或是Insert就会很慢，这样看到的就是Update或是Insert怎么这么慢了。所以在数据库写入量或是更新量也比较大的系统，该参数不适合分配过大。而且在高并发，写入量大的系统，建系把该功能禁掉。<br/>#重点优化参数（主库 增删改-MyISAM）<br/>query_cache_size = 512M<br/>#指定单个查询能够使用的缓冲区大小，缺省为1M<br/>query_cache_limit = 2M<br/>#默认是4KB，设置值大对大数据查询有好处，但如果你的查询都是小数据查询，就容易造成内存碎片和浪费<br/>#查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%<br/>#如果查询缓存碎片率超过20%，可以用FLUSH QUERY CACHE整理缓存碎片，或者试试减小query_cache_min_res_unit，如果你的查询都是小数据量的话。<br/>#查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%<br/>#查询缓存利用率在25%以下的话说明query_cache_size设置的过大，可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小，要不就是碎片太多。<br/>#查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%<br/>query_cache_min_res_unit = 2k<br/>default-storage-engine = MyISAM<br/>#限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用<br/>thread_stack = 192K<br/># 设定默认的事务隔离级别.可用的级别如下:<br/># READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE<br/># 1.READ UNCOMMITTED-读未提交2.READ COMMITTE-读已提交3.REPEATABLE READ -可重复读4.SERIALIZABLE -串行<br/>transaction_isolation = READ-COMMITTED<br/># tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小，MySQL产生一个 The table tbl_name is full 形式的错误，如果你做很多高级 GROUP BY 查询，增加 tmp_table_size 值。<br/>tmp_table_size = 246M<br/>max_heap_table_size = 246M<br/>#索引缓存大小: 它决定了数据库索引处理的速度，尤其是索引读的速度<br/>key_buffer_size = 512M<br/># MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区，MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁，并且你认为频繁扫描进行得太慢，可以通过增加该变量值以及内存缓冲区大小提高其性能。<br/>read_buffer_size = 4M<br/># MySql的随机读（查询操作）缓冲区大小。当按任意顺序读取行时(例如，按照排序顺序)，将分配一个随机读缓存区。进行排序查询时，MySql会首先扫描一遍该缓冲，以避免磁盘搜索，提高查询速度，如果需要排序大量数据，可适当调高该值。但MySql会为每个客户连接发放该缓冲空间，所以应尽量适当设置该值，以避免内存开销过大。<br/>read_rnd_buffer_size = 16M<br/>#批量插入数据缓存大小，可以有效提高插入效率，默认为8M<br/>bulk_insert_buffer_size = 64M<br/># MyISAM表发生变化时重新排序所需的缓冲<br/>myisam_sort_buffer_size = 128M<br/># MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).<br/># 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)<br/>myisam_max_sort_file_size = 10G<br/># 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.<br/># 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.<br/>myisam_repair_threads = 1<br/>#自动检查和修复没有适当关闭的 MyISAM 表<br/>myisam_recover<br/> <br/>interactive_timeout = 120<br/>wait_timeout = 120<br/> <br/>innodb_data_home_dir = /data/mysql/3306/data<br/>#表空间文件 重要数据<br/>innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend<br/>#这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小，类似于Oracle的library cache。这不是一个强制参数，可以被突破。<br/>innodb_additional_mem_pool_size = 16M<br/>#这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以，然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来，无需留给操作系统太多的内存，因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大，并且不会暴增，那么无需把 innodb_buffer_pool_size 设置的太大了<br/>innodb_buffer_pool_size = 512M<br/>#文件IO的线程数，一般为 4，但是在 Windows 下，可以设置得较大。<br/>innodb_file_io_threads = 4<br/># 在InnoDb核心内的允许线程数量.<br/># 最优值依赖于应用程序,硬件以及操作系统的调度方式.<br/># 过高的值可能导致线程的互斥颠簸.<br/>innodb_thread_concurrency = 8<br/>#如果将此参数设置为1，将在每次提交事务后将日志写入磁盘。为提供性能，可以设置为0或2，但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件，而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志，但日志文件每次刷新到磁盘一次。<br/>innodb_flush_log_at_trx_commit = 2<br/>#此参数确定些日志文件所用的内存大小，以M为单位。缓冲区更大能提高性能，但意外的故障将会丢失数据.MySQL开发人员建议设置为1－8M之间<br/>innodb_log_buffer_size = 16M<br/>#此参数确定数据日志文件的大小，以M为单位，更大的设置可以提高性能，但也会增加恢复故障数据库所需的时间<br/>innodb_log_file_size = 128M<br/>#为提高性能，MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M<br/>innodb_log_files_in_group = 3<br/>#推荐阅读 <a href="http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html" target="_blank">http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html</a><br/># Buffer_Pool中Dirty_Page所占的数量，直接影响InnoDB的关闭时间。参数innodb_max_dirty_pages_pct可以直接控制了Dirty_Page在Buffer_Pool中所占的比率，而且幸运的是innodb_max_dirty_pages_pct是可以动态改变的。所以，在关闭InnoDB之前先将innodb_max_dirty_pages_pct调小，强制数据块Flush一段时间，则能够大大缩短MySQL关闭的时间。<br/>innodb_max_dirty_pages_pct = 90<br/># InnoDB 有其内置的死锁检测机制，能导致未完成的事务回滚。但是，如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性，可以将innodb_lock_wait_timeout设置为一个整数值，指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)<br/>innodb_lock_wait_timeout = 120<br/>#独享表空间（关闭）<br/>innodb_file_per_table = 0<br/> <br/>#start mysqld with –slow-query-log-file=/data/mysql/3306/slow.log<br/>slow_query_log<br/>long_query_time = 1<br/> <br/>replicate-ignore-db = mysql<br/>replicate-ignore-db = test<br/>replicate-ignore-db = information_schema<br/>#配置从库上的更新操作是否写二进制文件，如果这台从库，还要做其他从库的主库，那么就需要打这个参数，以便从库的从库能够进行日志同步这个参数要和—logs-bin一起使用<br/>log-slave-updates<br/>log-bin = /data/mysql/3306/binlog/binlog<br/>binlog_cache_size = 4M<br/>#STATEMENT,ROW,MIXED<br/>#基于SQL语句的复制(statement-based replication, SBR)，基于行的复制(row-based replication, RBR)，混合模式复制(mixed-based replication, MBR)。相应地，binlog的格式也有三种：STATEMENT，ROW，MIXED。<br/>binlog_format = MIXED<br/>max_binlog_cache_size = 64M<br/>max_binlog_size = 1G<br/>relay-log-index = /data/mysql/3306/relaylog/relaylog<br/>relay-log-info-file = /data/mysql/3306/relaylog/relaylog<br/>relay-log = /data/mysql/3306/relaylog/relaylog<br/>expire_logs_days = 30<br/> <br/> <br/>skip-name-resolve<br/>#master-connect-retry = 10<br/>slave-skip-errors = 1032,1062,126,1114,1146,1048,1396<br/>server-id = 1<br/> <br/>[mysqldump]<br/>quick<br/>max_allowed_packet = 32M<br/> <br/>[myisamchk]<br/>key_buffer_size = 256M<br/>sort_buffer_size = 256M<br/>read_buffer = 2M<br/>write_buffer = 2M<br/> <br/>[mysqlhotcopy]<br/>interactive-timeout
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/1004/</link>
<title><![CDATA[MYSQL 在字段里现有内容后面加东西]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Thu, 02 Jul 2015 07:02:19 +0000</pubDate> 
<guid>http://www.dzhope.com/post/1004/</guid> 
<description>
<![CDATA[ 
	昨天，同事问了我一个问题。在不查出原有数据的情况下，怎么样在现有字段内容的后面加如新的东西.比如，有个friend表，有个cname字段,ID为1，现在里面已经有内容为Rick,我想把 这个内容变为Rick.wang.刚开始,我们是用+号这样的写的.<br/><div class="code"><br/>update friend set cname=cname+&#039;wang&#039; where id=1.<br/></div><br/>但这样加后,这个字段的内容就变为空了。最后我们证实,+只适合整数相加,不适合字符串.<br/><br/>今天看MYSQL手册的时候看到了个函数.concat,这个函数是连接字符串的。<br/><br/>手册里这样写<br/><div class="code"><br/>CONCAT(str1,str2,...) <br/></div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>返回结果为连接参数产生的字符串。如有任何一个参数为NULL ，则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串，则结果为非二进制字符串。 如果自变量中含有任一二进制字符串，则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式；若要避免这种情况，可使用显式类型<br/><br/>我试了下。成功了。SQL语句为<br/><div class="code"><br/>update friend set cname=CONCAT(cname,&#039;.wang&#039;) where id=1<br/></div><br/>,这样就可以完成字符串相加了。输出结果为Rick.wang.<br/><br/>还看到一个函数.是用字符串连接的。如下。<br/><div class="code"><br/>update friend set cname=CONCAT_WS(&#039;.&#039;,cname,&#039;wang&#039;) where id=1,<br/></div><br/>输出结果为Rick.wang.注意，第一个参数为连接两个字符串的字符．
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/908/</link>
<title><![CDATA[优化的内存访问 TCMalloc]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Sun, 01 Apr 2012 05:29:54 +0000</pubDate> 
<guid>http://www.dzhope.com/post/908/</guid> 
<description>
<![CDATA[ 
	TCMalloc (google-perftools) 是用于优化C++写的多线程应用，比glibc 2.3的malloc快。这个模块可以用来让MySQL在高并发下内存占用更加稳定。<br/><br/>本站使用的MySQL已经用 TCMalloc 优化过了。<br/><br/>详细的安装步骤：<br/><div class="code"><br/>#tar zxvf libunwind-0.98.6.tar.gz<br/>#cd libunwind-0.98.6<br/>#./configure<br/>#make<br/>#make install<br/><br/>#tar zxvf google-perftools-0.94.1.tar.gz<br/>#cd google*<br/>#./configure<br/>#make<br/>#make install<br/></div><br/>打开 mysqld_safe 脚本 (默认在/usr/bin/mysqld_safe)<br/>在此脚本文件开始加入<br/><div class="code"><br/>LD_PRELOAD=&quot;/usr/local/lib/libtcmalloc.so&quot;<br/></div><br/><div class="code"><br/>#service mysql restart<br/></div><br/><br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/mysql%25E4%25BC%2598%25E5%258C%2596/" rel="tag">mysql优化</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/904/</link>
<title><![CDATA[mysql Table Cache优化设置]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Tue, 06 Mar 2012 01:11:11 +0000</pubDate> 
<guid>http://www.dzhope.com/post/904/</guid> 
<description>
<![CDATA[ 
	mysql查询tables cache的最大数：<br/>show variables like 'tab第二世界整理发布le_cache';<br/> <br/>mysql查询当前系统已经打开的描述符命令：<br/>show status like 'open_tables';<br/><br/> <br/>一、调整table cache<br/>table_cache 参数设置表高速缓存的数目。每个连接进来，都会至少打开一个表缓存。因此， table_cache 的大小应与 max_connections 的设置有关。例如，对于 200 个并行运行的连接，应该让表的缓存至少有 200 × N ，这里 N 是应用可以执行的查询的一个联接中表的最大数量。此外，还需要为临时表和文件保留一些额外的文件描述符。<br/><br/>当 Mysql 访问一个表时，如果该表在缓存中已经被打开，则可以直接访问缓存；如果还没有被缓存，但是在 Mysql 表缓冲区中还有空间，那么这个表就被打开并放入表缓冲区；如果表缓存满了，则会按照一定的规则将当前未用的表释放，或者临时扩大表缓存来存放，使用表缓存的好处是可以更快速地访问表中的内容。<br/><br/>执行 flush tables 会清空缓存的内容。一般来说，可以通过查看数据库运行峰值时间的状态值 Open_tables 和 Opened_tables ，判断是否需要增加 table_cache 的值（<span style="color: #DC143C;">其中 open_tables 是当前打开的表的数量， Opened_tables 则是已经打开的表的数量）。即如果open_tables接近table_cache的时候，并且Opened_tables这个值在逐步增加，那就要考虑增加这个值的大小了。还有就是Table_locks_waited比较高的时候，也需要增加table_cache。</span><br/>二、调整系统和数据库打开文件数目限制<br/>table_cache加大后碰到文件描述符不够用的问题。这个时候就需要考虑提高系统和数据库的打开文件数目限制了。<br/><br/>1，显示当前系统的文件限制<br/># cat /proc/sys/fs/file-max<br/>2，通过phpmyadmin查询mysql配置参数（既open files limit）。<br/>一般情况下，mysql 5的open files limit会自动根据table cache调整。open files limit 系统默认调整为table cache的2倍多一点。<br/><br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/mysql%25E4%25BC%2598%25E5%258C%2596/" rel="tag">mysql优化</a> , <a href="http://www.dzhope.com/tags/table_cache/" rel="tag">table_cache</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/674/</link>
<title><![CDATA[mysql时间字段转换为时间戳 ]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Fri, 16 Jul 2010 03:13:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post/674/</guid> 
<description>
<![CDATA[ 
	mysql某个字段存储时间格式为“0000-00-00 00：00：00”可是要进行时间比较，需要转换成时间戳，则在sql语句中，将该字段转换为时间戳即可，例如：<br/><div class="code"><br/>UNIX_TIMESTAMP(gz_ydate)&lt;=$key2<br/></div><br/><br/>Tags - <a href="http://www.dzhope.com/tags/%25E6%2597%25B6%25E9%2597%25B4%25E6%2588%25B3/" rel="tag">时间戳</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/625/</link>
<title><![CDATA[MySQL 5.0安装配置的图解]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Wed, 24 Jun 2009 08:19:16 +0000</pubDate> 
<guid>http://www.dzhope.com/post/625/</guid> 
<description>
<![CDATA[ 
	<p><font size="3">打开下载的mysql安装文件mysql-5.0.27-win32.zip，双击解压缩，运行&ldquo;setup.exe&rdquo;，出现如下界面：</font></p><br/><div><br /><br/><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5024956-0.jpg" /></font></div><br/><div><br/><div><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql安装向导启动，按&ldquo;Next&rdquo;继续 <br /><br/><img style="cursor: pointer" alt="" border="0" src="/attachment/1A502N09-1.jpg" /></font></div><br/></div><br/><div><br /><br/><font size="3">选择安装类型，有&ldquo;Typical（默认）&rdquo;、&ldquo;Complete（完全）&rdquo;、&ldquo;Custom（用户自定义）&rdquo;三个选项，我们选择&ldquo;Custom&rdquo;，有更多的选项，也方便熟悉安装过程</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A50253C-2.jpg" /></font></div><br/><div><br /><br/><font size="3">在&ldquo;Developer Components（开发者部分）&rdquo;上左键单击，选择&ldquo;This feature, and all subfeatures, will be installed on local hard drive.&rdquo;，即&ldquo;此部分，及下属子部分内容，全部安装在本地硬盘上&rdquo;。在上面的&ldquo;MySQL Server（mysql服务器）&rdquo;、&ldquo;Client Programs（mysql客户端程序）&rdquo;、&ldquo;Documentation（文档）&rdquo;也如此操作，以保证安装所有文件。点选&ldquo;Change...&rdquo;，手动指定安装目录。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5022095-3.jpg" /></font></div><br/><div><br /><br/><font size="3">填上安装目录，我的是&ldquo;F:&#92;Server&#92;MySQL&#92;MySQL Server 5.0&rdquo;，也建议不要放在与操作系统同一分区，这样可以防止系统备份还原的时</font></div><br/><div><font size="3">候，数据被清空。按&ldquo;OK&rdquo;继续。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5024595-4.jpg" /></font></div><br/><div><br /><br/><font size="3">返回刚才的界面，按&ldquo;Next&rdquo;继续。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5025325-5.jpg" /></font></div><br/><div><br /><br/><font size="3">确认一下先前的设置，如果有误，按&ldquo;Back&rdquo;返回重做。按&ldquo;Install&rdquo;开始安装。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A502KH-6.jpg" /></font></div><br/><div><br /><br/><font size="3">正在安装中，请稍候，直到出现下面的界面</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5021307-7.jpg" /></font></div><br/><div><br /><br/><font size="3">这里是询问你是否要注册一个mysql.com的账号，或是使用已有的账号登陆mysql.com，一般不需要了，点选&ldquo;Skip Sign-Up&rdquo;，按&ldquo;Next&rdquo;略过此步骤。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A502L29-8.jpg" /></font></div><br/><div><br /><br/><font size="3">现在<span style="text-decoration: underline"><strong><span style="color: rgb(0,0,255)">软件</span></strong></span>安装完成了，出现上面的界面，这里有一个很好的功能，mysql配置向导，不用向以前一样，自己手动乱七八糟的配置my.ini了，将 &ldquo;Configure the Mysql Server now&rdquo;前面的勾打上，点&ldquo;Finish&rdquo;结束软件的安装并启动mysql配置向导。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5021L9-9.jpg" /></font></div><br/><div><br /><br/><font size="3">mysql配置向导启动界面，按&ldquo;Next&rdquo;继续。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5025022-10.jpg" /></font></div><br/><div><br /><br/><font size="3">选择配置方式，&ldquo;Detailed Configuration（手动精确配置）&rdquo;、&ldquo;Standard Configuration（标准配置）&rdquo;，我们选择&ldquo;Detailed Configuration&rdquo;，方便熟悉配置过程。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5023358-11.jpg" /></font></div><br/><div><br /><br/><font size="3">选择服务器类型，&ldquo;Developer Machine（开发测试类，mysql占用很少资源）&rdquo;、&ldquo;Server Machine（服务器类型，mysql占用较多资源）&rdquo;、&ldquo;Dedicated MySQL Server Machine（专门的<span style="text-decoration: underline"><strong><span style="color: rgb(0,0,255)">数据库</span></strong></span>服务器，mysql占用所有可用资源）&rdquo;，大家根据自己的类型选择了，一般选&ldquo;Server Machine&rdquo;，不会太少，也不会占满。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5021039-12.jpg" /></font></div><br/><div><br /><br/><font size="3">选择mysql数据库的大致用途，&ldquo;Multifunctional <span style="text-decoration: underline"><strong><span style="color: rgb(0,0,255)">Database</span></strong></span>（通用多功能型，好）&rdquo;、&ldquo;Transactional Database Only（服务器类型，专注于事务处理，一般）&rdquo;、&ldquo;Non-Transactional Database Only（非事务处理型，较简单，主要做一些监控、记数用，对MyISAM数据类型的支持仅限于non-transactional），随自己的用途而选择了，我这里选择&ldquo;Transactional Database Only&rdquo;，按&ldquo;Next&rdquo;继续。 <img style="cursor: pointer" alt="" border="0" src="/attachment/1A5023Z3-13.jpg" /></font></div><br/><div><br /><br/><font size="3">对InnoDB Tablespace进行配置，就是为InnoDB 数据库文件选择一个存储空间，如果修改了，要记住位置，重装的时候要选择一样的地方，否则可能会造成数据库损坏，当然，对数据库做个备份就没问题了，这里不详述。我这里没有修改，使用用默认位置，直接按&ldquo;Next&rdquo;继续</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5023648-14.jpg" /></font></div><br/><div><br /><br/><font size="3">选择您的网站的一般mysql访问量，同时连接的数目，&ldquo;Decision Support(DSS)/OLAP（20个左右）&rdquo;、&ldquo;Online Transaction Processing(OLTP)（500个左右）&rdquo;、&ldquo;Manual Setting（手动设置，自己输一个数）&rdquo;，我这里选&ldquo;Online Transaction Processing(OLTP)&rdquo;，自己的服务器，应该够用了，按&ldquo;Next&rdquo;继续</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5026195-15.jpg" /></font></div><br/><div><br /><br/><font size="3">是否启用TCP/IP连接，设定端口，如果不启用，就只能在自己的机器上访问mysql数据库了，我这里启用，把前面的勾打上，Port Number：3306，在这个页面上，您还可以选择&ldquo;启用标准模式&rdquo;（Enable Strict Mode），这样MySQL就不会允许细小的语法错误。如果您还是个新手，我建议您取消标准模式以减少麻烦。但熟悉MySQL以后，尽量使用标准模式，因为它可以降低有害数据进入数据库的可能性。按&ldquo;Next&rdquo;继续</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A5021249-16.jpg" /></font></div><br/><div><br /><br/><font size="3">这个比较重要，就是对mysql默认数据库语言编码进行设置，第一个是西文编码，第二个是多字节的通用utf8编码，都不是我们通用的编码，这里选择第三个，然后在Character Set那里选择或填入&ldquo;gbk&rdquo;，当然也可以用&ldquo;gb2312&rdquo;，区别就是gbk的字库容量大，包括了gb2312的所有汉字，并且加上了繁体字、和其它乱七八糟的字&mdash;&mdash;使用mysql的时候，在执行数据操作命令之前运行一次&ldquo;SET NAMES GBK;&rdquo;（运行一次就行了，GBK可以替换为其它值，视这里的设置而定），就可以正常的使用汉字（或其它文字）了，否则不能正常显示汉字。按 &ldquo;Next&rdquo;继续。</font></div><br/><div><font size="3"><img style="cursor: pointer" alt="" border="0" src="/attachment/1A50250H-17.jpg" /></font></div><br/><div><br /><br/><font size="3">选择是否将mysql安装为windows服务，还可以指定Service Name（服务标识名称），是否将mysql的bin目录加入到Windows PATH（加入后，就可以直接使用bin下的文件，而不用指出目录名，比如连接，&ldquo;mysql.exe -uusername -ppassword;&rdquo;就可以了，不用指出mysql.exe的完整地址，很方便），我这里全部打上了勾，Service Name不变。按&ldquo;Next&rdquo;继续。 <img style="cursor: pointer" alt="" border="0" src="/attachment/1A5024X4-18.jpg" /><br /><br/>这一步询问是否要修改默认root用户（超级管理）的密码（默认为空），&ldquo;New root password&rdquo;如果要修改，就在此填入新密码（如果是重装，并且之前已经设置了密码，在这里更改密码可能会出错，请留空，并将&ldquo;Modify Security Settings&rdquo;前面的勾去掉，安装配置完成后另行修改密码），&ldquo;Confirm（再输一遍）&rdquo;内再填一次，防止输错。&ldquo;Enable root access from remote machines（是否允许root用户在其它的机器上登陆，如果要安全，就不要勾上，如果要方便，就勾上它）&rdquo;。最后&ldquo;Create An Anonymous Account（新建一个匿名用户，匿名用户可以连接数据库，不能操作数据，包括查询）&rdquo;，一般就不用勾了，设置完毕，按&ldquo;Next&rdquo;继续。 <img style="cursor: pointer" alt="" border="0" src="/attachment/1A5021643-19.jpg" /></font></div><br/><div><br /><br/><font size="3">确认设置无误，如果有误，按&ldquo;Back&rdquo;返回检查。按&ldquo;Execute&rdquo;使设置生效。 <img style="cursor: pointer" alt="" border="0" src="/attachment/1A5024G3-20.jpg" /></font></div><br/><div><br /><br/><font size="3">设置完毕，按&ldquo;Finish&rdquo;结束mysql的安装与配置&mdash;&mdash;这里有一个比较常见的错误，就是不能&ldquo;Start service&rdquo;，一般出现在以前有安装mysql的服务器上，解决的办法，先保证以前安装的mysql服务器彻底卸载掉了；不行的话，检查是否按上面一步所说，之前的密码是否有修改，照上面的操作；如果依然不行，将mysql安装目录下的data文件夹备份，然后删除，在安装完成后，将安装生成的 data文件夹删除，备份的data文件夹移回来，再重启mysql服务就可以了，这种情况下，可能需要将数据库检查一下，然后修复一次，防止数据出错。</font></div><br/><div><font size="3"><img style="width: 454px; cursor: pointer" alt="" border="0" src="/attachment/1A5026438-21.jpg" /></font></div><br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/597/</link>
<title><![CDATA[MySQL修改root密码的各种方法整理]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Wed, 29 Apr 2009 23:44:51 +0000</pubDate> 
<guid>http://www.dzhope.com/post/597/</guid> 
<description>
<![CDATA[ 
	整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助!<br/><br/>方法1： 用SET PASSWORD命令<br/><br/>　　mysql -u root<br/><br/>　　mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');<br/><br/>方法2：用mysqladmin<br/><br/>　　mysqladmin -u root password "newpass"<br/><br/>　　如果root已经设置过密码，采用如下方法<br/><br/>　　mysqladmin -u root password oldpass "newpass"<br/><br/>方法3： 用UPDATE直接编辑user表<br/><br/>　　mysql -u root<br/><br/>　　mysql> use mysql;<br/><br/>　　mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';<br/><br/>　　mysql> FLUSH PRIVILEGES;<br/><br/>在丢失root密码的时候，可以这样<br/><br/>　　mysqld_safe --skip-grant-tables&<br/><br/>　　mysql -u root mysql<br/><br/>　　mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';<br/><br/>　　mysql> FLUSH PRIVILEGES;<br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E4%25BF%25AE%25E6%2594%25B9root%25E5%25AF%2586%25E7%25A0%2581/" rel="tag">修改root密码</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/596/</link>
<title><![CDATA[linux下卸载rpm方式安装的mysql]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Wed, 29 Apr 2009 07:08:41 +0000</pubDate> 
<guid>http://www.dzhope.com/post/596/</guid> 
<description>
<![CDATA[ 
	首先查看mysql的版本信息：<br/><br/>#rpm -qa&#124;grep -i mysql <br/><br/>显示：<br/>MySQL-server-4.0.14-0<br/>MySQL-client-4.0.14-0<br/><br/>删除mysql。<br/><br/><br/>rpm -ev MySQL-server-4.0.14-0<br/>rpm -ev MySQL-client-4.0.14-0 <br/><br/>如果在卸载mysql-devel出现如下的错误：<br/>[root@localhost f]# rpm -e mysql-4.1.12-3.RHEL4.1<br/>error: Failed dependencies:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libmysqlclient.so.14 is needed by (installed) cyrus-sasl-sql-2.1.19-5.EL4.i386<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libmysqlclient.so.14 is needed by (installed) dovecot-0.99.11-2.EL4.1.i386<br/>那么，你需要按倒序来先删除dovecot-0.99.11-2.EL4.1.i386，然后是cyrus-sasl-sql-2.1.19-5.EL4.i386，最后，你可以完全删除mysql-devel，其他的类似。<br/>[root@localhost f]# rpm -e dovecot-0.99.11-2.EL4.1.i386<br/>[root@localhost f]# rpm -e cyrus-sasl-sql-2.1.19-5.EL4.i386<br/>开始卸载<br/><br/>[root@localhost f]# rpm -e mysql-4.1.12-3.RHEL4.1<br/><br/><br/>　　卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除，如果确定没用后就手工删除 <br/><br/>　　rm -f /etc/my.cnf <br/><br/>　　rm -rf /var/lib/mysql<br/><br/><br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E5%258D%25B8%25E8%25BD%25BDmysql/" rel="tag">卸载mysql</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/595/</link>
<title><![CDATA[linux下 mysql字符集的修改]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Tue, 28 Apr 2009 06:36:45 +0000</pubDate> 
<guid>http://www.dzhope.com/post/595/</guid> 
<description>
<![CDATA[ 
	 安装完的MySQL的默认字符集为 latin1 ，为了要将其字符集改为用户所需要的(比如utf8)，就必须改其相关的配置文件；由于linux下MySQL的默认安装目录分布在不同的文件下；不像windows一样放在同一目录下，只需修改其中的my.ini文件，重起后就生效了；所以先来看看linux下MySQL的数据库文件、配置文件和命令文件分别在不同的目录 ： <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 1、数据库目录，其所创建的数据库文件都在该目录下<br/>　　/var/lib/mysql/ <br/><br/> <br/><br/>　　 2、配置文件 （mysql.server命令及配置文件所在地） <br/>　　/usr/share/mysql <br/><br/> <br/><br/>　　 3、相关命令（如mysql mysqladmin等）<br/>　　/usr/bin <br/><br/> <br/><br/>　　 4、启动脚本（如mysql启动命令）<br/>　　/etc/rc.d/init.d/ <br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看默认字符集<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mysql -u root - p <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(输入密码)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql&gt; show variables like &#039;character_set%&#039; ; <br/>+--------------------------+----------------------------+<br/>&#124; Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br/>+--------------------------+----------------------------+<br/>&#124; character_set_client&nbsp;&nbsp;&nbsp;&nbsp; &#124; latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_connection &#124; latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_database&nbsp;&nbsp; &#124; latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_filesystem &#124; binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_results&nbsp;&nbsp;&nbsp;&nbsp;&#124; latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_server&nbsp;&nbsp;&nbsp;&nbsp; &#124; latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_system&nbsp;&nbsp;&nbsp;&nbsp; &#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_sets_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; /usr/share/mysql/charsets/ &#124;<br/>+--------------------------+----------------------------+<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改字符集 ： <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.查找/etc目录下是否有my.cnf文件；<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#ls -l &#124; grep my.cnf (在/etc下查找是否有my.cnf文件存在)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.如果没有就要从/usr/share/mysql,拷贝一个到/etc 下，在/usr/share/mysql目录下有五个后缀为.cnf的文件，分别是 my-huge.cnf&nbsp;&nbsp;&nbsp;&nbsp;my-innodb-heavy-4G.cnf&nbsp;&nbsp;&nbsp;&nbsp;my-large.cnf&nbsp;&nbsp; my-medium.cnf&nbsp;&nbsp;&nbsp;&nbsp; my-small.cnf ；从中随便拷贝一个到/etc目录下并将其改为my.cnf文件,我选择的是my-medium.cnf ：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #cp /usr/share/mysql/my-medium.cnf&nbsp;&nbsp; /etc/my.cnf <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.修改my.cnf文件，在该文件中的三个地方加上 default-character-set=utf8（[client] [mysqld] [mysql]）<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #vi&nbsp;&nbsp;/etc/my.cnf<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改如下：（红色为添加部分）<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [client]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = your_password<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 3306<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= /var/lib/mysql/mysql.sock<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-character-set=utf8&nbsp;&nbsp; （经过验证好像这一步不用设置也可以达到效果）<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[mysqld]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 3306<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= /var/lib/mysql/mysql.sock<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skip-locking<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key_buffer = 16M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_allowed_packet = 1M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table_cache = 64<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort_buffer_size = 512K<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;net_buffer_length = 8K<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read_buffer_size = 256K<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read_rnd_buffer_size = 512K<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myisam_sort_buffer_size = 8M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-character-set=utf8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init_connect=&#039;SET NAMES utf8&#039; <br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [mysql]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no-auto-rehash<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-character-set=utf8 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;保存退出；<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.重起MySQL服务器，使其设置的内容生效<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#/etc/init.d/mysql&nbsp;&nbsp;restart <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 重新登入mysql；<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # mysql -u root - p <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(输入密码)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; show variables like &#039;character_set%&#039; ; <br/>+--------------------------+----------------------------+<br/>&#124; Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br/>+--------------------------+----------------------------+<br/>&#124; character_set_client&nbsp;&nbsp;&nbsp;&nbsp; &#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_connection &#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;（都生成了utf8，成功了 哈哈哈）<br/>&#124; character_set_database&nbsp;&nbsp; &#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_filesystem &#124; binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_results&nbsp;&nbsp;&nbsp;&nbsp;&#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_server&nbsp;&nbsp;&nbsp;&nbsp; &#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_set_system&nbsp;&nbsp;&nbsp;&nbsp; &#124; utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;<br/>&#124; character_sets_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; /usr/share/mysql/charsets/ &#124;<br/>+--------------------------+----------------------------+<br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql启动和停止 操作 ：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以通过 #/etc/init.d/mysql&nbsp;&nbsp; [start &#124; stop &#124; restart](实现启动，停止，重启) <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也可以通过 #service mysql [start &#124; stop &#124; restart](实现启动，停止，重启) <br/><br/> <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上为实践总结，如果有更好的方法请告知谢谢<br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/utf8/" rel="tag">utf8</a> , <a href="http://www.dzhope.com/tags/%25E5%25AD%2597%25E7%25AC%25A6%25E9%259B%2586/" rel="tag">字符集</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/594/</link>
<title><![CDATA[linux 安装 mysql设置为GBK成功笔录]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Mon, 27 Apr 2009 08:04:19 +0000</pubDate> 
<guid>http://www.dzhope.com/post/594/</guid> 
<description>
<![CDATA[ 
	按以下完装可以解决 MYSQL 中文乱码问题 安装字体为GBK编码<br/><br/>我在linux 9 和linux as 3,linux as 4 下成功安装多次。<br/><br/>#groupadd mysql<br/>#useradd -g mysql mysql<br/>#tar -zxvf mysql-5.0.27.tar.gz<br/>#cd mysql-5.0.27<br/>#./configure -prefix=/opt/mysql -with-charset=gbk -with-extra-charsets=all<br/>#make<br/>#make install<br/>#cp support-files/my-medium.cnf /etc/my.cnf或者cp /opt/mysql/share/mysql/my-medium.cnf /etc/my.cnf<br/>#./scripts/mysql_install_db --user=mysql //初试化表并且规定用mysql用户来访问。初始化表以后就开始给mysql和root用户设定访问权限 <br/><br/>设置用户权限<br/>#chown -R root .<br/>#chown -R mysql var<br/>#chown -R mysql var/.<br/>#chgrp -R mysql .<br/><br/># cp support-files/mysql.server /etc/rc.d/init.d/mysqld<br/># chmod 700 /etc/init.d/mysqld<br/># chkconfig --add mysqld<br/># chkconfig --level 345 mysqld on <br/># service mysqld start<br/># netstat -atln 查看mysql端口3306是否打开，如果打开说明安装成功<br/><br/>更改root用户密码<br/>#./bin/mysqladmin -u root password &#039;new passwd&#039;<br/><br/>use 库名； 切换库名<br/>create table 表名 (字段设定列表)； 创建表<br/>create database 库名; 创建数据库<br/><br/>#grant select,insert,update,delete,index,alter,create,drop,grant,references,reload,shutdown,process,file,reload,shutdown,precess on *.* to user_1@&quot;%&quot; Identified by &#039;123&#039;;<br/><br/>#grant select,insert,update,delete,index,alter,create,drop on 库名.表名 to user_1@&quot;%&quot; Identified by &quot;123&quot;;<br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E5%25AD%2597%25E7%25AC%25A6%25E9%259B%2586/" rel="tag">字符集</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/593/</link>
<title><![CDATA[mysql字符集编码转换]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Mon, 27 Apr 2009 07:32:35 +0000</pubDate> 
<guid>http://www.dzhope.com/post/593/</guid> 
<description>
<![CDATA[ 
	启动mysql，登陆mysql以后，通过如下命令显示当前mysql所用编码。<br/>&gt;show variables like &#039;character%&#039;; #执行编码显示 <br/>+--------------------------+----------------------------+ <br/>&#124; Variable_name &#124; Value &#124; <br/>+--------------------------+----------------------------+ <br/>&#124; character_set_client &#124; latin1 &#124; <br/>&#124; character_set_connection &#124; latin1 &#124; <br/>&#124; character_set_database &#124; latin1 &#124; <br/>&#124; character_set_filesystem &#124; binary &#124; <br/>&#124; character_set_results &#124; latin1 &#124; <br/>&#124; character_set_server &#124; latin1 &#124; <br/>&#124; character_set_system &#124; utf8 &#124; <br/>&#124; character_sets_dir &#124; /usr/share/mysql/charsets/ &#124; <br/>+--------------------------+----------------------------+ <br/><br/>在mysql中的my.cnf中修改如下设置：<br/>找到客户端配置[client] 在下面添加 <br/>default-character-set=utf8 默认字符集为utf8 <br/>在找到[mysqld] 添加 <br/>default-character-set=utf8 默认字符集为utf8 <br/><br/>旧数据升级办法<br/>以原来的字符集为latin1为例，升级成为utf8的字符集，<br/>编码转换步骤：<br/>1、导出旧数据：<br/>mysqldump -uroot -p --default-character-set=latin1 --set-charset=utf8 --skip-opt 数据库&gt;old.sql<br/>2、转换sql编码：<br/><br/>iconv -t utf-8 -f gb2312 -c old.sql &gt; new.sql<br/>在这里，假定原来的数据默认是gb2312编码。<br/><br/>3、导入新数据库：<br/>mysql -uroot -p --default-character-set=gbk -f 新数据库&lt;new.sql<br/>附：<br/>查看mysql支持的编码：<br/><br/>SHOW VARIABLES LIKE &#039;character_set_%&#039;;<br/><br/>SHOW VARIABLES LIKE &#039;collation_%&#039;;<br/><br/>查看文件编码命令：<br/><br/>file 文件名<br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E5%25AD%2597%25E7%25AC%25A6%25E9%259B%2586/" rel="tag">字符集</a> , <a href="http://www.dzhope.com/tags/%25E7%25BC%2596%25E7%25A0%2581%25E8%25BD%25AC%25E6%258D%25A2/" rel="tag">编码转换</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/592/</link>
<title><![CDATA[linux下mysql server的默认字符集修改和默认数据库引擎的修改]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Mon, 27 Apr 2009 00:02:25 +0000</pubDate> 
<guid>http://www.dzhope.com/post/592/</guid> 
<description>
<![CDATA[ 
	/etc/init.d/mysql start (stop) 为启动和停止服务器 <br/>/etc/mysql/ 主要配置文件所在位置 my.cnf <br/>/var/lib/mysql/ 放置的是数据库表文件夹，这里的mysql相当于windows下mysql的date文件夹 <br/><br/>启动mysql后，以root登录mysql <br/>isher@isher-ubuntu:~$ mysql -u root <br/>&gt;show variables like &#039;character%&#039;; #执行编码显示 <br/>+--------------------------+----------------------------+ <br/>&#124; Variable_name &#124; Value &#124; <br/>+--------------------------+----------------------------+ <br/>&#124; character_set_client &#124; latin1 &#124; <br/>&#124; character_set_connection &#124; latin1 &#124; <br/>&#124; character_set_database &#124; latin1 &#124; <br/>&#124; character_set_filesystem &#124; binary &#124; <br/>&#124; character_set_results &#124; latin1 &#124; <br/>&#124; character_set_server &#124; latin1 &#124; <br/>&#124; character_set_system &#124; utf8 &#124; <br/>&#124; character_sets_dir &#124; /usr/share/mysql/charsets/ &#124; <br/>+--------------------------+----------------------------+ <br/><br/>在某些时候，我们续要修改mysql默认数据库的编码，以保证某些迁移的程序可以正常显示，编辑my.cnf文件进行编码修改,windows可以直接用Ｍysql Server Instance Config Wizard 进行设置 <br/><br/>在linux下修改３个my.cnf的１个/etc/mysql/my.cnf文件 <br/><br/>找到客户端配置[client] 在下面添加 <br/>default-character-set=utf8 默认字符集为utf8 <br/>在找到[mysqld] 添加 <br/>default-character-set=utf8 默认字符集为utf8 <br/>init_connect=&#039;SET NAMES utf8&#039; （设定连接mysql数据库时使用utf8编码，以让mysql数据库为utf8运行） <br/><br/>修改好后，重新启动mysql 即可，查询一下show variables like &#039;character%&#039;; <br/>+--------------------------+----------------------------+ <br/>&#124; Variable_name &#124; Value &#124; <br/>+--------------------------+----------------------------+ <br/>&#124; character_set_client &#124; utf8 &#124; <br/>&#124; character_set_connection &#124; utf8 &#124; <br/>&#124; character_set_database &#124; utf8 &#124; <br/>&#124; character_set_filesystem &#124; binary &#124; <br/>&#124; character_set_results &#124; utf8 &#124; <br/>&#124; character_set_server &#124; utf8 &#124; <br/>&#124; character_set_system &#124; utf8 &#124; <br/>&#124; character_sets_dir &#124; /usr/share/mysql/charsets/ &#124; <br/>+--------------------------+----------------------------+ <br/><br/><br/><br/>此方法用于标准mysql版本同样有效，对于/etc/my.cnf文件，需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf <br/><br/><br/>一般安装系统默认是INNODB <br/>default-storage-engine=INNODB <br/><br/>　　你可以使用很多方法指定一个要使用的存储引擎。最简单的方法是，如果你喜欢一种能满足你的大多数数据库需求的存储引擎，你可以在MySQL设置文件中设置一个默认的引擎类型（使用storage_engine 选项）或者在启动数据库服务器时在命令行后面加上--default-storage-engine或--default-table-type选项 。 <br/><br/>　　更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎。最直接的方式是在创建表时指定存储引擎的类型，向下面这样: <br/><br/>　　CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB <br/><br/>Tags - <a href="http://www.dzhope.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E9%25BB%2598%25E8%25AE%25A4%25E5%25AD%2597%25E7%25AC%25A6%25E9%259B%2586/" rel="tag">默认字符集</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/587/</link>
<title><![CDATA[mysql将一个字段的值赋给另一个字段]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Fri, 17 Apr 2009 05:21:22 +0000</pubDate> 
<guid>http://www.dzhope.com/post/587/</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/><br/>update xxx set a=b where xxxxx;<br/><br/>update xxx set b=a where not b<br/><br/></div><br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/586/</link>
<title><![CDATA[MySql复制表,数据,列,字段!]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Fri, 17 Apr 2009 05:20:05 +0000</pubDate> 
<guid>http://www.dzhope.com/post/586/</guid> 
<description>
<![CDATA[ 
	MySql数据库复制表数据<br/><br/>将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下：<br/><br/>CREATE TABLE mytbl_new LIKE production.mytbl;<br/><br/>INSERT mytbl_new SELECT * FROM production.mytbl;<br/><br/>第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。<br/><br/>第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。<br/><br/>注：production.mytbl是指定要复制表的数据库名称为 production 。它是可选的。<br/><br/>假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库。<br/><br/> <br/><br/>另外：在mysql数据库中复制数据为：<br/><br/>select * into desTable from sourceTable在mssql中支持，在mysql中不支持<br/><br/>insert into desTable select * from sourceTable<br/> <br/><br/> <br/><br/>mysql合并字段的方法:<br/><br/>update table set name1=concat(name1,name2) where 条件<br/><br/>//表示将字段name1,name2的内容合并为name,效果如:<br/><br/>table(id,name1,name2,name)<br/><br/>复制列的方法:<br/><br/>insert into table1 (字段...) select 字段2 from table2 where 条件<br/><br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E6%2595%25B0%25E6%258D%25AE/" rel="tag">数据</a> , <a href="http://www.dzhope.com/tags/%25E5%25AD%2597%25E6%25AE%25B5/" rel="tag">字段</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/574/</link>
<title><![CDATA[MySQL数据表字段内容的批量修改、复制命令]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Thu, 09 Apr 2009 02:04:54 +0000</pubDate> 
<guid>http://www.dzhope.com/post/574/</guid> 
<description>
<![CDATA[ 
	复制字段里的数据命令：<br/><br/><div class="code"><br/><br/>UPDATE table SET 被替换的字段名=被复制的字段名&nbsp;&nbsp; <br/><br/></div><br/><br/>演示如下<br/><br/><div class="code"><br/><br/>UPDATE dede_archives SET senddate=pubdate <br/><br/></div><br/><br/><br/>如何手动将同一数据表内不同字段之间的内容批量转换，可以参考下面的命令：<br/><br/><div class="code"><br/><br/>UPDATE table set 字段名=REPLACE(字段名,&#039;原字符串&#039;,&#039;替换的字符串&#039;) where 已知的字段名 LIKE &#039;%原字符串%&#039;&nbsp;&nbsp;<br/><br/></div><br/><br/>应用到本文实例<br/><br/><div class="code"><br/><br/>UPDATE pw_members set yz=REPLACE(yz,&#039;1&#039;,&#039;2&#039;) where yz LIKE &#039;%1%&#039; <br/><br/></div><br/>Tags - <a href="http://www.dzhope.com/tags/%25E6%2589%25B9%25E9%2587%258F%25E4%25BF%25AE%25E6%2594%25B9/" rel="tag">批量修改</a> , <a href="http://www.dzhope.com/tags/%25E6%259B%25BF%25E6%258D%25A2/" rel="tag">替换</a> , <a href="http://www.dzhope.com/tags/%25E5%25A4%258D%25E5%2588%25B6/" rel="tag">复制</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/564/</link>
<title><![CDATA[如何修改Linux下MySQL 5的默认连接数]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Mon, 23 Mar 2009 07:51:33 +0000</pubDate> 
<guid>http://www.dzhope.com/post/564/</guid> 
<description>
<![CDATA[ 
	这段时间服务器崩溃2次，一直没有找到原因，今天看到论坛发出的错误信息邮件，想起可能是mysql的默认连接数引起的问题，一查果然，老天，默认 连接数才100， 怎么够呀，在网上找了半天资料，有说修改my.cnf的，有说修改safe_mysqld，试了，前者无用，<br/><br/><br/>后者文件找不到：)原来是以前的版本跟现在的版本有所不同。 <br/><br/>言归正传,我以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明： <br/><br/>vi /usr/local/mysql/bin/mysqld_safe <br/><br/>找到safe_mysqld编辑它，找到mysqld启动的那两行，在后面加上参数： <br/><br/>-O max_connections=1500 <br/><br/>具体一点就是下面的位置： <br/><br/>用红字特别说明： <br/><br/>then $NOHUP_NICENESS $ledir/$MYSQLD <br/><br/>$defaults --basedir=$MY_BASEDIR_VERSION <br/><br/>--datadir=$DATADIR $USER_OPTION <br/><br/>--pid-file=$pid_file <br/><br/>--skip-external-locking <br/><br/>-O max_connections=1500 <br/><br/>>> $err_log 2>&1 else <br/><br/>eval "$NOHUP_NICENESS $ledir/$MYSQLD <br/><br/>$defaults --basedir=$MY_BASEDIR_VERSION <br/><br/>--datadir=$DATADIR $USER_OPTION <br/><br/>--pid-file=$pid_file <br/><br/>--skip-external-locking $args <br/><br/>-O max_connections=1500 >> <br/><br/>$err_log 2>&1" <br/><br/>保存。 <br/><br/># service mysqld restart <br/><br/># /usr/local/mysql/bin/mysqladmin -uroot -p variables <br/><br/>输入root数据库账号的密码后可看到 <br/><br/>max_connections 1500 即新改动已经生效。 <br/><br/>还有一种方法: <br/><br/>修改原代码: <br/><br/>解开MySQL的原代码，进入里面的sql目录修改mysqld.cc找到下面一行： <br/><br/>&#123;"max_connections", OPT_MAX_CONNECTIONS, <br/><br/>"The number of simultaneous clients allowed.", (gptr*) &max_connections, <br/><br/>(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1, <br/><br/>0&#125;, <br/><br/>把它改为： <br/><br/>&#123;"max_connections", OPT_MAX_CONNECTIONS, <br/><br/>"The number of simultaneous clients allowed.", (gptr*) &max_connections, <br/><br/>(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1, <br/><br/>0&#125;, <br/><br/>存盘退出，然后./configure ;make;make install可以获得同样的效果。 <br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E8%25BF%259E%25E6%258E%25A5%25E6%2595%25B0/" rel="tag">连接数</a> , <a href="http://www.dzhope.com/tags/mysql%25E4%25BC%2598%25E5%258C%2596/" rel="tag">mysql优化</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/563/</link>
<title><![CDATA[Linux系统高负载 MySQL优化]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Mon, 23 Mar 2009 07:24:12 +0000</pubDate> 
<guid>http://www.dzhope.com/post/563/</guid> 
<description>
<![CDATA[ 
	　　同时在线访问量继续增大对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机或者时不时的服务器卡一下这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法，因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　安装好mysql后，配制文件应该在/usr/local/mysql/share/mysql目录中，配制文件有几个，有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境，当然需要有不同的配制文件了。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　一般的情况下，my- medium.cnf这个配制文件就能满足我们的大多需要；一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了，使用mysqladmin variables extended-status -uroot -p可以看到目前的参数，有3个配置参数是最重要的，即key_buffer_size,query_cache_size,table_cache。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　key_buffer_size只对MyISAM表起作用，key_buffer_size指定索引缓冲区的大小，它决定索引处理的速度，尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点　这个数字是远远不够的，通过检查状态值Key_read_requests和 Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低，至少是1:100，1:1000更好（上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得）。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql，以下的状态值都是本人通过phpmyadmin获得的实例分析:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　这个服务器已经运行了20天&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　key_buffer_size – 128M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　key_read_requests – 650759289&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　key_reads - 79112&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　比例接近1:8000 健康状况非常好&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　另外一个估计key_buffer_size的办法　把你网站数据库的每个表的索引所占空间大小加起来看看以此服务器为例:比较大的几个表索引加起来大概125M 这个数字会随着表变大而变大。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　从4.0.1开始，MySQL提供了查询缓冲机制。使用查询缓冲，MySQL将SELECT语句和查询结果存放在缓冲区中，今后对于同样的SELECT 语句（区分大小写），将直接从缓冲区中读取结果。根据MySQL用户手册，使用查询缓冲最多可以达到238%的效率。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　通过调节以下几个参数可以知道query_cache_size设置得是否合理&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache inserts&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache hits&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache lowmem prunes&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache free blocks&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache total blocks&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache_lowmem_prunes的值非常大，则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大，则表明查询缓冲使用非常频繁，此时需要增加缓冲大小Qcache_hits的值不大，则表明你的查询重复率很低，这种情况下使用查询缓冲反而会影响效率，那么可以考虑不用查询缓冲。此外，在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache_free_blocks，如果该值非常大，则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　我设置:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　QUOTE:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　query_cache_size = 32M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　query_cache_type= 1&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　得到如下状态值:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache queries in cache 12737 表明目前缓存的条数&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache inserts 20649006&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　Qcache hits 79060095 　看来重复查询率还挺高的&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache lowmem prunes 617913　有这么多次出现缓存过低的情况&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache not cached 189896 　　&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache free memory 18573912　　目前剩余缓存空间&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache free blocks 5328 这个数字似乎有点大　碎片不少&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Qcache total blocks 30953&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　如果内存允许32M应该要往上加点&nbsp;&nbsp; <br/><br/>　table_cache指定表高速缓存的大小。每当MySQL访问一个表时，如果在表缓冲区中还有空间，该表就被打开并放入其中，这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables，可以决定是否需要增加table_cache的值。如果你发现 open_tables等于table_cache，并且opened_tables在不断增长，那么你就需要增加table_cache的值了（上述状态值可以使用SHOW STATUS LIKE ‘Open%tables’获得）。注意，不能盲目地把table_cache设置成很大的值。如果设置得太高，可能会造成文件描述符不足，从而造成性能不稳定或者连接失败。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　对于有1G内存的机器，推荐值是128－256。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　笔者设置&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　QUOTE:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　table_cache = 256&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　得到以下状态:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　Open tables 256&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　Opened tables 9046&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　虽然open_tables已经等于table_cache，但是相对于服务器运行时间来说,已经运行了20天，opened_tables的值也非常低。因此，增加table_cache的值应该用处不大。如果运行了6个小时就出现上述值那就要考虑增大table_cache。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　如果你不需要记录2进制log 就把这个功能关掉，注意关掉以后就不能恢复出问题前的数据了，需要您手动备份，二进制日志包含所有更新数据的语句，其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外，如果做同步复制( Replication )的话，也需要使用二进制日志传送修改情况。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　 log_bin指定日志文件，如果不提供文件名，MySQL将自己产生缺省文件名。MySQL会在文件名后面自动添加数字引，每次启动服务时，都会重新生成一个新的二进制文件。此外，使用log-bin-index可以指定索引文件；使用binlog-do-db可以指定记录的数据库；使用binlog- ignore-db可以指定不记录的数据库。注意的是：binlog-do-db和binlog-ignore-db一次只指定一个数据库，指定多个数据库需要多个语句。而且，MySQL会将所有的数据库名称改成小写，在指定数据库时必须全部使用小写名字，否则不会起作用。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　关掉这个功能只需要在他前面加上#号&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　QUOTE:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　#log-bin&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　开启慢查询日志( slow query log )&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　慢查询日志对于跟踪有问题的查询非常有用。它记录所有查过long_query_time的查询，如果需要，还可以记录不使用索引的记录。下面是一个慢查询日志的例子：&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　开启慢查询日志，需要设置参数log_slow_queries、long_query_times、log-queries-not-using-indexes。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　log_slow_queries指定日志文件，如果不提供文件名，MySQL将自己产生缺省文件名。long_query_times指定慢查询的阈值，缺省是10秒。log-queries-not-using-indexes是4.1.0以后引入的参数，它指示记录不使用索引的查询。笔者设置 long_query_time=10&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　笔者设置:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　QUOTE:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　sort_buffer_size = 1M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　max_connections=120&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　wait_timeout =120&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　back_log=100&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　read_buffer_size = 1M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　thread_cache=32&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　interactive_timeout=120&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　thread_concurrency = 4&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　参数说明:&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　back_log&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求，这就起作用，然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接，你需要增加它，换句话说，这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 Unix listen(2)系统调用的手册页应该有更多的细节。检查你的OS文档找出这个变量的最大值。试图设定back_log高于你的操作系统的限制将是无效的。&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　max_connections&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　并发连接数目最大，120 超过这个值就会自动恢复，出了问题能自动解决&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　thread_cache&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　没找到具体说明，不过设置为32后 20天才创建了400多个线程而以前一天就创建了上千个线程 所以还是有用的&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　thread_concurrency&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　#设置为你的cpu数目x2,例如，只有一个cpu,那么thread_concurrency=2&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　#有2个cpu,那么thread_concurrency=4&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　skip-innodb&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　#去掉innodb支持&nbsp;&nbsp; <br/><br/><div class="code">&nbsp;&nbsp;<br/>　　Example MySQL config file for medium systems.&nbsp;&nbsp; <br/>　　# Example MySQL config file for medium systems.&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# This is for a system with little memory (32M - 64M) where MySQL plays&nbsp;&nbsp; <br/>　　# an important part, or systems up to 128M where MySQL is used together with&nbsp;&nbsp; <br/>　　# other programs (such as a web server)&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# You can copy this file to&nbsp;&nbsp; <br/>　　# /etc/my.cnf to set global options,&nbsp;&nbsp; <br/>　　# mysql-data-dir/my.cnf to set server-specific options (in this&nbsp;&nbsp;<br/>　　# installation this directory is /var/lib/mysql) or&nbsp;&nbsp; <br/>　　# ~/.my.cnf to set user-specific options.&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# In this file, you can use all long options that a program supports.&nbsp;&nbsp; <br/>　　# If you want to know which options a program supports, run the program&nbsp;&nbsp; <br/>　　# with the &quot;--help&quot; option.&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　# The following options will be passed to all MySQL clients&nbsp;&nbsp; <br/>　　&#91;client&#93;&nbsp;&nbsp; <br/>　　#password = your_password&nbsp;&nbsp; <br/>　　port = 3306&nbsp;&nbsp;<br/>　　socket = /tmp/mysql.sock&nbsp;&nbsp; <br/>　　#socket = /var/lib/mysql/mysql.sock&nbsp;&nbsp; <br/>　　# Here follows entries for some specific programs&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　# The MySQL server&nbsp;&nbsp; <br/>　　&#91;mysqld&#93;&nbsp;&nbsp; <br/>　　port = 3306&nbsp;&nbsp;<br/>　　socket = /tmp/mysql.sock&nbsp;&nbsp; <br/>　　#socket = /var/lib/mysql/mysql.sock&nbsp;&nbsp; <br/>　　skip-locking&nbsp;&nbsp; <br/>　　key_buffer = 128M&nbsp;&nbsp; <br/>　　max_allowed_packet = 1M&nbsp;&nbsp; <br/>　　table_cache = 256&nbsp;&nbsp;<br/>　　sort_buffer_size = 1M&nbsp;&nbsp; <br/>　　net_buffer_length = 16K&nbsp;&nbsp; <br/>　　myisam_sort_buffer_size = 1M&nbsp;&nbsp; <br/>　　max_connections=120&nbsp;&nbsp;<br/>　　#addnew config&nbsp;&nbsp; <br/>　　wait_timeout =120&nbsp;&nbsp;<br/>　　back_log=100&nbsp;&nbsp;<br/>　　read_buffer_size = 1M&nbsp;&nbsp; <br/>　　thread_cache=32&nbsp;&nbsp;<br/>　　skip-innodb&nbsp;&nbsp; <br/>　　skip-bdb&nbsp;&nbsp; <br/>　　skip-name-resolve&nbsp;&nbsp; <br/>　　join_buffer_size=512k&nbsp;&nbsp; <br/>　　query_cache_size = 32M&nbsp;&nbsp; <br/>　　interactive_timeout=120&nbsp;&nbsp;<br/>　　long_query_time=10&nbsp;&nbsp;<br/>　　log_slow_queries= /usr/local/mysql4/logs/slow_query.log&nbsp;&nbsp; <br/>　　query_cache_type= 1&nbsp;&nbsp;<br/>　　# Try number of CPU&#039;s*2 for thread_concurrency&nbsp;&nbsp; <br/>　　thread_concurrency = 4&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　#end new config&nbsp;&nbsp; <br/>　　# Don&#039;t listen on a TCP/IP port at all. This can be a security enhancement,&nbsp;&nbsp; <br/>　　# if all processes that need to connect to mysqld run on the same host.&nbsp;&nbsp; <br/>　　# All interaction with mysqld must be made via Unix sockets or named pipes.&nbsp;&nbsp; <br/>　　# Note that using this option without enabling named pipes on Windows&nbsp;&nbsp; <br/>　　# (via the &quot;enable-named-pipe&quot; option) will render mysqld useless!&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　#skip-networking&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　# Replication Master Server (default)&nbsp;&nbsp; <br/>　　# binary logging is required for replication&nbsp;&nbsp; <br/>　　#log-bin&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　# required unique id between 1 and 2^32 - 1&nbsp;&nbsp;<br/>　　# defaults to 1 if master-host is not set&nbsp;&nbsp; <br/>　　# but will not function as a master if omitted&nbsp;&nbsp; <br/>　　server-id = 1&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　# Replication Slave (comment out master section to use this)&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# To configure this host as a replication slave, you can choose between&nbsp;&nbsp; <br/>　　# two methods :&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# 1) Use the CHANGE MASTER TO command (fully described in our manual) -&nbsp;&nbsp; <br/>　　# the syntax is:&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,&nbsp;&nbsp; <br/>　　# MASTER_USER=, MASTER_PASSWORD= ;&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# where you replace , , by quoted strings and&nbsp;&nbsp; <br/>　　# by the master&#039;s port number (3306 by default).&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# Example:&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# CHANGE MASTER TO MASTER_HOST=&#039;125.564.12.1&#039;, MASTER_PORT=3306,&nbsp;&nbsp; <br/>　　# MASTER_USER=&#039;joe&#039;, MASTER_PASSWORD=&#039;secret&#039;;&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# OR&nbsp;&nbsp; <br/># 2) Set the variables below. However, in case you choose this method, then&nbsp;&nbsp; <br/>　　# start replication for the first time (even unsuccessfully, for example&nbsp;&nbsp; <br/>　　# if you mistyped the password in master-password and the slave fails to&nbsp;&nbsp; <br/>　　# connect), the slave will create a master.info file, and any later&nbsp;&nbsp; <br/>　　# change in this file to the variables&#039; values below will be ignored and&nbsp;&nbsp; <br/>　　# overridden by the content of the master.info file, unless you shutdown&nbsp;&nbsp; <br/>　　# the slave server, delete master.info and restart the slaver server.&nbsp;&nbsp; <br/>　　# For that reason, you may want to leave the lines below untouched&nbsp;&nbsp; <br/>　　# (commented) and instead use CHANGE MASTER TO (see above)&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# required unique id between 2 and 2^32 - 1&nbsp;&nbsp;<br/>　　# (and different from the master)&nbsp;&nbsp; <br/>　　# defaults to 2 if master-host is set&nbsp;&nbsp; <br/>　　# but will not function as a slave if omitted&nbsp;&nbsp; <br/>　　#server-id = 2&nbsp;&nbsp;<br/>　　#&nbsp;&nbsp; <br/>　　# The replication master for this slave - required&nbsp;&nbsp; <br/>　　#master-host =&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# The username the slave will use for authentication when connecting&nbsp;&nbsp; <br/>　　# to the master - required&nbsp;&nbsp; <br/>　　#master-user =&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# The password the slave will authenticate with when connecting to&nbsp;&nbsp; <br/>　　# the master - required&nbsp;&nbsp; <br/>　　#master-password =&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# The port the master is listening on.&nbsp;&nbsp; <br/>　　# optional - defaults to 3306&nbsp;&nbsp;<br/>　　#master-port =&nbsp;&nbsp; <br/>　　#&nbsp;&nbsp; <br/>　　# binary logging - not required for slaves, but recommended&nbsp;&nbsp; <br/>　　#log-bin&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　# Point the following paths to different dedicated disks&nbsp;&nbsp; <br/>　　#tmpdir = /tmp/&nbsp;&nbsp; <br/>　　#log-update = /path-to-dedicated-directory/hostname&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　# Uncomment the following if you are using BDB tables&nbsp;&nbsp; <br/>　　#bdb_cache_size = 4M&nbsp;&nbsp; <br/>　　#bdb_max_lock = 10000&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　# Uncomment the following if you are using InnoDB tables&nbsp;&nbsp; <br/>　　#innodb_data_home_dir = /var/lib/mysql/&nbsp;&nbsp; <br/>　　#innodb_data_file_path = ibdata1:10M:autoextend&nbsp;&nbsp; <br/>　　#innodb_log_group_home_dir = /var/lib/mysql/&nbsp;&nbsp; <br/>　　#innodb_log_arch_dir = /var/lib/mysql/&nbsp;&nbsp; <br/>　　# You can set .._buffer_pool_size up to 50 - 80 %&nbsp;&nbsp; <br/>　　# of RAM but beware of setting memory usage too high&nbsp;&nbsp; <br/>　　#innodb_buffer_pool_size = 16M&nbsp;&nbsp; <br/>　　#innodb_additional_mem_pool_size = 2M&nbsp;&nbsp; <br/>　　# Set .._log_file_size to 25 % of buffer pool size&nbsp;&nbsp; <br/>　　#innodb_log_file_size = 5M&nbsp;&nbsp; <br/>　　#innodb_log_buffer_size = 8M&nbsp;&nbsp; <br/>　　#innodb_flush_log_at_trx_commit = 1&nbsp;&nbsp;<br/>　　#innodb_lock_wait_timeout = 50&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>　　&#91;mysqldump&#93;&nbsp;&nbsp; <br/>　　quick&nbsp;&nbsp; <br/>　　max_allowed_packet = 16M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　&#91;mysql&#93;&nbsp;&nbsp; <br/>　　no-auto-rehash&nbsp;&nbsp; <br/>　　# Remove the next comment character if you are not familiar with SQL&nbsp;&nbsp; <br/>　　#safe-updates&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　&#91;isamchk&#93;&nbsp;&nbsp; <br/>　　key_buffer = 20M&nbsp;&nbsp; <br/>　　sort_buffer_size = 20M&nbsp;&nbsp; <br/>　　read_buffer = 2M&nbsp;&nbsp; <br/>　　write_buffer = 2M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　&#91;myisamchk&#93;&nbsp;&nbsp; <br/>　　key_buffer = 20M&nbsp;&nbsp; <br/>　　sort_buffer_size = 20M&nbsp;&nbsp; <br/>　　read_buffer = 2M&nbsp;&nbsp; <br/>　　write_buffer = 2M&nbsp;&nbsp; <br/>&nbsp;&nbsp;<br/>　　&#91;mysqlhotcopy&#93;&nbsp;&nbsp; <br/>　　interactive-timeout&nbsp;&nbsp; <br/><br/></div><br/><br/>Tags - <a href="http://www.dzhope.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.dzhope.com/tags/mysql%25E4%25BC%2598%25E5%258C%2596/" rel="tag">mysql优化</a> , <a href="http://www.dzhope.com/tags/my.cnf/" rel="tag">my.cnf</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post/562/</link>
<title><![CDATA[Linux服务器MySQL数据库无法登陆处理方法]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Mon, 23 Mar 2009 01:54:39 +0000</pubDate> 
<guid>http://www.dzhope.com/post/562/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;您在使用Linux独享服务器时，可能会遇到由于服务器MySQL负载高或调试、误操作而导致的数据库无法登陆问题，那么我们现在简单介绍下MySQL数据库无法登陆的处理方法。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;首先使用CRT远程登陆服务器，使用以下两行命令：<br/><br/>例如MySQL进程查询返回信息：<br/><br/>Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 10165&nbsp;&nbsp;0.0&nbsp;&nbsp;0.1&nbsp;&nbsp;4804 1144 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;17:08&nbsp;&nbsp; 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql<br/>mysql&nbsp;&nbsp;&nbsp;&nbsp;10196&nbsp;&nbsp;0.0&nbsp;&nbsp;1.0 50948 11308 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;17:08&nbsp;&nbsp; 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --pid-file=/usr/local/mysql/var/ud.pid --skip-external-locking --port=3306 --socket=/tmp/mysql.sock<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 10197&nbsp;&nbsp;0.0&nbsp;&nbsp;1.0 50948 11308 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S&nbsp;&nbsp;&nbsp;&nbsp;17:08&nbsp;&nbsp; 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --pid-file=/usr/local/mysql/var/ud.pid --skip-external-locking --port=3306 --socket=/tmp/mysql.sock<br/><br/>1、[root@ud~]# kill -9 `ps ax&#124;grep mysqld &#124;awk '&#123;print $1&#125;'`(杀掉MySQL进程)<br/><br/>2、[root@ud~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &(重新启动MySQL服务)<br/><br/><br/> <br/><br/>Tags - <a href="http://www.dzhope.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.dzhope.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.dzhope.com/tags/%25E9%2587%258D%25E5%2590%25AFmysql/" rel="tag">重启mysql</a>
]]>
</description>
</item>
</channel>
</rss>