<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[网络旺旺]]></title> 
<link>http://blog.ich8.com/index.php</link> 
<description><![CDATA[混子日开始了...！失败的我！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[网络旺旺]]></copyright>
<item>
<link>http://blog.ich8.com/post/215/</link>
<title><![CDATA[[转载]MySQL数据库双向同步]]></title> 
<author>网络旺旺 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[数据库相关]]></category>
<pubDate>Sat, 22 May 2010 04:34:40 +0000</pubDate> 
<guid>http://blog.ich8.com/post/215/</guid> 
<description>
<![CDATA[ 
	<p>1. 主从关系的同步<br />master端 192.168.5.10<br />&nbsp;&nbsp;&nbsp; slave端&nbsp; 192.168.5.4<br />&nbsp;<br />修改master端的/etc/my.cnf文件<br />[mysqld]:<br />log-bin<br />server-id = 1</p><p>进入mysql</p><p>创建一个要同步的数据库abc<br />&nbsp;create database abc;</p><p>创建一个用来同步的用户,指定只能在192.168.5.4登录<br />grant file on *.* to <a href="mailto:bak@'192.168.5.4">bak@'192.168.5.4</a> identified by '123456'; <br />grant all privileges on backup.* to <a href="mailto:bak@&rsquo;192.168.5.4&rsquo;">bak@&rsquo;192.168.5.4&rsquo;</a> identified by &lsquo;123456&rsquo;;<br />flush privileges;</p><p>重启mysql</p><p>修改slave端的/etc/my.cnf文件<br />[mysqld]:<br />server_id = 2<br />log-bin = mysql-bin<br />master-host = 192.168.5.10<br />master-user = bak<br />master-password = '123456' (如果为空也要打上两个单引号)<br />master-port = 3306 (根据具体设置的端口号填)<br />master-connect-retry = 10 连接重试次数<br />replicate-do-db = abc 要接收的数据库名，如果有多个数据库，每个数据库一行<br />replicate-ignore-db= mysql&nbsp;&nbsp; 设置不要接收的数据库，每个数据库一行&nbsp;&nbsp; （一般这条可以不写）</p><p>重启mysql<br />slave start;</p><p>配置成功后会在mysql目录下生成master.info,如果要更改slave设置,要先将master.info删除,才会起作用。<br />然后进入mysql用show slave status 或show master status 查看同步情况</p><p>3、 双向同步</p><p>&nbsp;master端的设置<br />[mysqld]: <br />log-bin<br />server-id = 1<br />sql-bin-update-same 同步模式 ，在mysql5以上的版本都不需要这句，否则会启动不了</p><p>mysql服务<br />binlog-do-db= abc&nbsp;&nbsp;&nbsp; 设置同步数据库，如果有多个数据库，每个数据库一行<br />&nbsp;binlog-ignore-db = mysql 设置不要同步的数据库，如有多个数据库，每个数据库一行<br />master-host=192.168.5.4<br />master-user=bak<br />master-password='123456'<br />master-port=3306<br />master-connect-retry=10<br />replicate-do-db=abc&nbsp;&nbsp; 设置要接收的数据库，如有多个数据库，每个数据库一行<br />replicate-ignore-db= mysql&nbsp;&nbsp; 设置不要接收的数据库，每个数据库一行&nbsp;&nbsp; （一般这条可以不写）<br />log-slave-updates&nbsp;&nbsp;&nbsp; 在mysql5以上的版本都不需要这句</p><p>进入mysql<br />创建一个数据库abc<br />create database abc;<br />创建一个用来同步的用户,指定只能在192.168.5.4登录<br />grant file on *.* to <a href="mailto:bak@'192.168.5.4">bak@'192.168.5.4</a> identified by '123456';<br />重启mysql服务<br />slave start;<br />&nbsp;<br />slave设置<br />log-bin<br />server-id = 2<br />binlog-do-db= abc&nbsp;&nbsp;&nbsp; 设置同步数据库，如果有多个数据库，每个数据库一行<br />binlog-ignore-db = mysql 设置不要同步的数据库，如有多个数据库，每个数据库一行<br />sql-bin-update-same&nbsp;&nbsp; 同步模式 ，在mysql5以上的版本都不需要这句，否则会启动不了mysql服务 <br />master-host=192.168.5.10<br />master-user= bak<br />master-password='123456'<br />master-port=3306<br />master-connect-retry=10<br />replicate-do-db=abc&nbsp;&nbsp; 设置要接收的数据库，如有多个数据库，每个数据库一行<br />replicate-ignore-db= mysql&nbsp;&nbsp; 设置不要接收的数据库，每个数据库一行&nbsp;&nbsp; （一般这条可以不写）<br />log-slave-updates&nbsp;&nbsp; 在mysql5以上的版本都不需要这句</p><p>进入mysql<br />&nbsp;创建一个数据库abc<br />create database abc;</p><p>创建一个用来同步的用户,指定只能在192.168.5.10登录<br />grant file on *.* to <a href="mailto:bak@'192.168.5.10">bak@'192.168.5.10</a> identified by '123456';<br />重启mysql服务<br />&nbsp;slave start;<br />&nbsp;<br />注意，如果有一端修改了数据后，另一端接收不到，手工执行命令load data from master;就可以了<br />&nbsp;<br />如果因为误删了二进制日志文件导致无法同步，则执行<br />reset slave;<br />stop slave;<br />start slave;</p><p>三、可能遇到的问题<br />&nbsp;&nbsp;&nbsp; 1、my.ini是WINDOWS系统下的mysql配置文件，而在linux系统下该文件会命名为my.cnf。此文件修改后mysql必须重启才能生效。在用PDM方式安装mysql的时候，在系统的默认位置/etc/my,cnf会找不到my.cnf文件，此时mysql则会去读mysql/support-files/my-medium.cnf这个位置的文件来进行初始化设置，因此可以直接把后一个文件拷到前面的默认位置。</p><p>&nbsp;&nbsp;&nbsp; 2、配置完后，可以用&ldquo;mysql &ndash;u root -p&rdquo;命令进行sql环境，用&ldquo;show master status&rdquo;及&rdquo;show slave status&rdquo;命令查看主用和备用进程的运行情况，可以发现问题。同时可以用&rdquo;show variables&rdquo;来查看系统设置的变量。Slave进程有两个线程非常重要，分别是&ldquo;Slave_IO_Running和&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slave_SQL_Running&rdquo;。必须都启动。</p><p>&nbsp;&nbsp; 3、如果配置完了但没有同步，可以查/var/lib/mysql/localhost.localdomain.err下的这个错误日志。日志以主机名命名，不同的机器可能不一样，不同的安装路径也会导致前面的路径不同。在此日志里会详细提示发生的错误，根据错误在网上查询或者分析配置，基本上就能解决大部分问题了。</p><p>&nbsp;&nbsp; 4、如果修改了主服务器的配置，记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置，可能会导致错误。这是因为从服务器会直接把master.info文件中的内容去替代my.cnf中的配置。</p><p>&nbsp;&nbsp; 5、单向同步的时候，有可能报&ldquo;[ERROR] Slave: Error 'Duplicate entry '589' for key 1' on query. Default database: plication_master'. Query: 'insert into as_card_type values ('589','sdddddsd',25,'dfsdfd')', Error_code: 1062&rdquo;错，这时到数据库里去把该条数据删除即可。因为导致报此错的原因是数据库内已有此条数据，而二进制文件又要求再插入一条此数据。发生此错误后一般会终止slave进程。</p><p>&nbsp;&nbsp; 6、错误&ldquo;[ERROR] Failed to open the relay log './localhost-relay-bin.000609' (relay_log_pos 288)&rdquo;，此错误的解决方法为：</p><p>　-&gt; stop mysql on the slave server<br />　-&gt; find the directory that contains the relay logs (usually /var/lib/mysql)<br />　-&gt; delete all relay logs called hostname-relay-bin.XXX, hostname-relay-bin.index and relay-log.info<br />　-&gt; restart mysql</p><p>　我觉得发生此错误的原因是读本地二进制日志出问题，那么就把本地日志删除，强制去读主机的日志信息。　</p><p>&nbsp; 7、有时候数据库同步自己会停下来，原因是发生了错误。那么用下面的语句可以避免这个问题。</p><p>　#出现错误后忽略，如果不加这个，出现任何错误，同步进程会终止<br />　slave-skip-errors=all</p><p>　8、有人说此选项重要，我觉得此选项不过是让从机日志记载了所有的操作，将来便于恢复或者回滚。我觉得可以不用。</p><p>　log-slave-updates //当Slave从Master数据库读取日志时将跟新写入日志中 <br />　log-bin 用于启动数据库的跟新日记，当针对启动这个选项的数据库本身进行数据跟新时更新操作将被记录。log-slave-updates 告诉Slave在二进制记录中记录从主数据库同步到的更新数据。如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。</p><p>&nbsp; 9、今天又碰到一个错误：前段时间还同步的很正常的系统今天四台全部失效，重启后报&ldquo;Warning: World-writable config file '/etc/my.cnf ' is ignored &rdquo;。我估计是我以前把my.cnf文件权限全设成了666，所以系统认为危险，跳过去没有读，于是我用chmod 660重设了一下，果然没有再报此错，一切正常了。</p><p>&nbsp;</p><p>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/jiahehao/archive/2008/11/27/3390838.aspx"><a href="http://blog.csdn.net/jiahehao/archive/2008/11/27/3390838.aspx" target="_blank">http://blog.csdn.net/jiahehao/archive/2008/11/27/3390838.aspx</a></a></p>
]]>
</description>
</item><item>
<link>http://blog.ich8.com/post/139/</link>
<title><![CDATA[[原创]Discuz登陆缓慢解决方法]]></title> 
<author>网络旺旺 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[数据库相关]]></category>
<pubDate>Sun, 31 Jan 2010 09:39:50 +0000</pubDate> 
<guid>http://blog.ich8.com/post/139/</guid> 
<description>
<![CDATA[ 
	<p>查看论坛的配置文件，DISCUZ BBS的配置文件是config.inc.php&nbsp; 拉到最底部 查看define('UC_IP', 'IP地址');查看里面的IP地址是否是你的数据库地址或者服务器地址 如果服务器是本地则可以填写127.0.0.1&nbsp; 或者你的服务器IP&nbsp;都行。即可解决。&nbsp;</p>
]]>
</description>
</item><item>
<link>http://blog.ich8.com/post/116/</link>
<title><![CDATA[[转载]搞定mySQL启动就占用非常大虚拟内存]]></title> 
<author>网络旺旺 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[数据库相关]]></category>
<pubDate>Mon, 21 Dec 2009 13:01:26 +0000</pubDate> 
<guid>http://blog.ich8.com/post/116/</guid> 
<description>
<![CDATA[ 
	<p>为了装mysql环境测试，装上后发现启动后mysql占用了很大的虚拟内存，达8百多兆。网上搜索了一下，得到高人指点my.ini。再也没见再详细的了..只好打开my.ini逐行的啃，虽然英文差了点，不过多少M还是看得明的^-^ <br /><br />更改后如下：<br /><br />innodb_buffer_pool_size=576M -&gt;256M InnoDB引擎缓冲区占了大头，首要就是拿它开刀<br />query_cache_size=100M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; -&gt;16M 查询缓存<br />tmp_table_size=102M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; -&gt;64M 临时表大小<br />key_buffer_size=256m &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; -&gt;32M<br /><br />重启mysql服务后，虚拟内存降到200以下．<br /><br />另外mysql安装目录下有几个文件：my-huge.ini 、my-large.ini、my-medium.ini...这几个是根据内存大小作的建议配置，新手在设置的时候也可以参考一下。</p><div class="t_msgfont"><strong>2G内存的MYSQL数据库服务器 my.ini优化 (my.ini)</strong><br /><br />2G内存,针对站少,优质型的设置,试验特：<br /><br />table_cache=1024 物理内存越大,设置就越大.默认为2402,调到512-1024最佳<br />innodb_additional_mem_pool_size=8M&nbsp;&nbsp; 默认为2M<br />innodb_flush_log_at_trx_commit=0 等到innodb_log_buffer_size列队满后再统一储存,默认为1<br />innodb_log_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为1M<br />innodb_thread_concurrency=8 &nbsp;&nbsp; &nbsp;&nbsp; 你的服务器CPU有几个就设置为几,默认为8<br />key_buffer_size=256M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为218 &nbsp;&nbsp; &nbsp;&nbsp; 调到128最佳<br />tmp_table_size=64M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为16M &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 调到64-256最挂<br />read_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为64K<br />read_rnd_buffer_size=16M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为256K<br />sort_buffer_size=32M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为256K<br />max_connections=1024 &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 默认为1210<br /><br /><br />试验一：<br /><br />table_cache=512或1024 <br />innodb_additional_mem_pool_size=2M<br />innodb_flush_log_at_trx_commit=0<br />innodb_log_buffer_size=1M<br />innodb_thread_concurrency=8 &nbsp;&nbsp; &nbsp;&nbsp; 你的服务器CPU有几个就设置为几,默认为8<br />key_buffer_size=128M<br />tmp_table_size=128M<br />read_buffer_size=64K或128K<br />read_rnd_buffer_size=256K<br />sort_buffer_size=512K<br />max_connections=1024 &nbsp;&nbsp; &nbsp;&nbsp; <br /><br /><br />&nbsp;&nbsp; <br />试验二：<br /><br />table_cache=512或1024 <br />innodb_additional_mem_pool_size=8M&nbsp;&nbsp;<br />innodb_flush_log_at_trx_commit=0 <br />innodb_log_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; <br />innodb_thread_concurrency=8 &nbsp;&nbsp; &nbsp;&nbsp; <br />key_buffer_size=128M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />tmp_table_size=128M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />read_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />read_rnd_buffer_size=16M &nbsp;&nbsp; &nbsp;&nbsp; <br />sort_buffer_size=32M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />max_connections=1024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />一般：<br /><br />table_cache=512 <br />innodb_additional_mem_pool_size=8M&nbsp;&nbsp;<br />innodb_flush_log_at_trx_commit=0<br />innodb_log_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; <br />innodb_thread_concurrency=8 &nbsp;&nbsp; &nbsp;&nbsp; <br />key_buffer_size=128M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />tmp_table_size=128M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />read_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <br />read_rnd_buffer_size=16M &nbsp;&nbsp; &nbsp;&nbsp; <br />sort_buffer_size=32M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />max_connections=1024<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />经过测试.没有特殊情况,最好还是用默认的.<br /><br /><br />2G内存,针对站多,抗压型的设置,最佳：<br /><br /><br />table_cache=1024 物理内存越大,设置就越大.默认为2402,调到512-1024最佳<br />innodb_additional_mem_pool_size=4M&nbsp;&nbsp; 默认为2M<br />innodb_flush_log_at_trx_commit=1 <br />(设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1)<br />innodb_log_buffer_size=2M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为1M<br />innodb_thread_concurrency=8 &nbsp;&nbsp; &nbsp;&nbsp; 你的服务器CPU有几个就设置为几,建议用默认一般为8<br />key_buffer_size=256M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 默认为218 &nbsp;&nbsp; &nbsp;&nbsp; 调到128最佳<br />tmp_table_size=64M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为16M &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 调到64-256最挂<br />read_buffer_size=4M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 默认为64K<br />read_rnd_buffer_size=16M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 默认为256K<br />sort_buffer_size=32M &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为256K<br />max_connections=1024 &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 默认为1210<br />thread_cache_size=120 &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 默认为60<br />query_cache_size=64M<br /><br /><br /><br /><strong>优化mysql数据库性能的十个参数</strong><br /><br />(1)、max_connections：<br />允许的同时客户的数量。增加该值增加 mysqld 要求的文件描述符的数量。这个数字应该增加，否则，你将经常看到 too many connections 错误。 默认数值是100，我把它改为1024 。<br /><br />(2)、record_buffer：<br />每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描，你可能想要增加该值。默认数值是131072(128k)，我把它改为16773120 (16m)<br /><br />(3)、key_buffer_size： <br />索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小，增加它可得到更好处理的索引(对所有读和多重写)，到你能负担得起那样多。如果你使它太大，系统将开始换页并且真的变慢了。默认数值是8388600(8m)，我的mysql主机有2gb内存，所以我把它改为 402649088(400mb)。<br /><br />4)、back_log：<br />要求 mysql 能有的连接数量。当主要mysql线程在一个很短时间内得到非常多的连接请求，这就起作用，然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。<br />back_log 值指出在mysql暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接，你需要增加它，换句话说，这值对到来的tcp/ip连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。<br />当你观察你的主机进程列表，发现大量 264084 &#124; unauthenticated user &#124; xxx.xxx.xxx.xxx &#124; null &#124; connect &#124; null &#124; login &#124; null 的待连接进程时，就要加大 back_log 的值了。默认数值是50，我把它改为500。<br /><br />(5)、interactive_timeout： <br />服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 client_interactive 选项的客户。 默认数值是28800，我把它改为7200。<br /><br /><br />(6)、sort_buffer：<br />每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速order by或group by操作。默认数值是2097144(2m)，我把它改为 16777208 (16m)。<br /><br />(7)、table_cache：<br />为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。mysql对每个唯一打开的表需要2个文件描述符。默认数值是64，我把它改为512。 <br /><br />(8)、thread_cache_size：<br />可以复用的保存在中的线程的数量。如果有，新的线程从缓存中取得，当断开连接的时候如果有空间，客户的线置在缓存中。如果有很多新的线程，为了提高性能可以这个变量值。通过比较 connections 和 threads_created 状态的变量，可以看到这个变量的作用。我把它设置为 80。<br /><br />(9)mysql的搜索功能<br />用mysql进行搜索，目的是能不分大小写，又能用中文进行搜索<br />只需起动mysqld时指定 --default-character-set=gb2312<br /><br />(10)、wait_timeout：<br />服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800，我把它改为7200。 <br /><br />注：参数的调整可以通过修改 /etc/my.cnf 文件并重启 mysql 实现。这是一个比较谨慎的工作，上面的结果也仅仅是我的一些看法，你可以根据你自己主机的硬件情况（特别是内存大小）进一步修改。</div>
]]>
</description>
</item>
</channel>
</rss>