|
<div class="f14 mb10" id="read_tpc">
<span style="display:none"> r]x;JBy </span> <br /> <span style="display:none"> O<3i6 </span> <br /><font size="6"><b>介绍</b></font><span style="display:none"> %G%##wv: </span> <br /> <span style="display:none"> ,"U8Fgf[r </span> <br /> <span style="display:none"> FzOr#(^ </span> <br />说到 Binlog 就不得不提一下 MySQL Server 的四种类型的日志:Error Log、General Query Log、Slow Query Log 和 Binary Log 。<span style="display:none"> ]Gw?DD|Gn </span> <br /><ol type="1" style="margin:0 0 0 25px"><li><b>Error Log</b> 即 <span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=错误',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_8">错误</span>日志,记录 mysqld 发生的一些错误。</li><li><b>General Query Log</b> 即 一般查询日志,记录 mysqld 正在做的事情,如客户端的连接和断开、来<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=自',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_3">自</span>客户端每条 Sql Statement 记录<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=信息',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_4">信息</span>;如果你想准确知道客户端究竟传了什么内容给<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=服务',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_2">服务</span>端,这个日志就非常管用了,当然了这货非常影响性能。</li><li><b>Slow Query Log</b> 即 慢查询日志,记录一些查询执行较慢的 SQL 语句,这个日志非常常用,主要是给开发者调优用的。</li><li><b>Binary Log</b> 简称 Binlog 即 二进制日志文件,这个文件记录了mysql所有的 DML <span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=操作',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_9">操作</span>。通过 Binlog 日志我们可以做<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=数据',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_5">数据</span>恢复,做主主复制和主从复制等等。对于开发者可能对 Binlog 并不怎么关注,但是对于运维或者架构人员来讲是非常重要的。</li></ol><span style="display:none"> zE{@' </span> <br /><span style="display:none"> P#o/S4 </span> <br /><span style="display:none"> v1hrRf2< </span> <br />简而言之,Binlog 两个重要的用途——复制和恢复,很多十分好用的 MySQL 体验比如说增量备份,回滚至指定时间以及上面提到的主主和主从等等都依赖于 Binlog。<span style="display:none"> c65_E<5Z </span> <br /><b>Binlog 有三种模式:</b><ol type="1" style="margin:0 0 0 25px"><li>STATEMENT:顾名思义,STATEMENT 格式的 Binlog 记录的是<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=数据库',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_7">数据库</span>上执行的原生SQL语句</li><li>ROW:这种格式的 Binlog 记录的是数据表的行是怎样被修改的。</li><li>MIXED:混合模式,如果设置了这种格式,MariaDB / MySQL 会在一些特定的情况下自动从 STATEMENT 格式切换到 ROW 格式。例如,包含 UUID 等不确定性函数的语句,引用了<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=系统',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_6">系统</span>变量的语句等等。</li></ol><span style="display:none"> xO2S|DH{ </span> <br /> <span style="display:none"> <B]\& </span> <br /><font size="6"><b>开启 Binlog</b></font><span style="display:none"> >uN`q1?l' </span> <br /> <span style="display:none"> /o=V
( </span> <br /> <span style="display:none"> tuA,t </span> <br />像一些公有云上的云数据库一般都是默认开始 Binlog 的,不需要人为干涉,如果是自建的 MySQL 一般是不开启的。<span style="display:none"> "ei*iUBN: </span> <br /> <span style="display:none"> "7R"(.~> </span> <br /><font size="5"><b>检查是否开启</b></font><span style="display:none"> RU!j"T
5 </span> <br /> <span style="display:none"> 2[&3$-] </span> <br /> <span style="display:none"> z/*nY? </span> <br />登录 MySQL ,执行 SQL :<span style="display:none"> { 7y.0_Y </span> <br /><div class="f12">复制代码</div><div class="blockquote2" id="code1"><ol><li>show global variables like 'log_bin';</li></ol></div><span style="display:none"> GyV3]Qqj </span> <br /><span style="display:none"> fP`g#t)4Tu </span> <br />会返回一个如下的结果:<span style="display:none"> zr9o </span> <br /><div class="f12">复制代码</div><div class="blockquote2" id="code2"><ol><li>+---------------+-------+</li><li>| Variable_name | Value |</li><li>+---------------+-------+</li><li>| log_bin | OFF |</li><li>+---------------+-------+</li><li>1 row in set (0.001 sec)</li></ol></div><span style="display:none"> |]a=He; </span> <br /><span style="display:none"> 9Vx2VjK2' </span> <br /><span style="display:none"> ; Xy\7tx </span> <br />如果返回的是 log_bin | OFF 那么就是没有开启,ON 则是已经开启<span style="display:none"> E3gR%t </span> <br /> <span style="display:none"> qvz2u]IOw </span> <br /><font size="5"><b> 设置开启</b></font><span style="display:none"> W G2 E3y </span> <br /> <span style="display:none"> 2Mc/ah </span> <br /> <span style="display:none"> so|5HR| </span> <br />修改 my.cnf 文件,一般来说都位于 /etc/my.cnf 这边,部分像 MariaDB 可能是修改/etc/my.cnf.d/server.cnf 文件。<span style="display:none"> N=K|Nw </span> <br />在 [mysqld] 下写入如下内容:<span style="display:none"> qu[ ~# </span> <br /><div class="f12">复制代码</div><div class="blockquote2" id="code3"><ol><li>log_bin = /var/lib/mysql/bin-log</li><li>log_bin_index = /var/lib/mysql/mysql-bin.index</li><li>expire_logs_days = 7</li><li>server_id = 0002</li><li>binlog_format = ROW</li></ol></div><span style="display:none"> hkw;W[ZWa </span> <br /><span style="display:none"> OKfJ </span> <br /><span style="display:none"> <@FOqi{o{ </span> <br /><b>解释一下:</b><span style="display:none"> =>Y b~r71 </span> <br />log_bin = /var/lib/mysql/bin-log , 开启 Binlog 并写明存放日志的位置<span style="display:none"> &| %<=\ </span> <br />log_bin_index = /var/lib/mysql/mysql-bin.index , 指定索引文件的位置。<span style="display:none"> W)jO 4,eO </span> <br />expire_logs_days = 7 ,删除超出这个变量保留期之前的全部日志被删除<span style="display:none"> f3e#.jan </span> <br />server_id = 0002 , 指定一个集群内的 MySQL <span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=服务器',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_1">服务器</span> ID,如果做数据库集群那么必须全局唯一,一般来说不推荐 指定 server_id 等于 1。<span style="display:none"> D3V5GQ\=
</span> <br />binlog_format = ROW,设置方面提到过的三种 Binlog 的日志模式。<span style="display:none"> e&f9/rfx </span> <br /><b>更多选项:</b><span style="display:none"> *6~ODiB </span> <br />max_binlog_size ,binary log 最大的大小<span style="display:none"> TEl:;4 </span> <br />binlog_cache_size ,当前的多少事务cache在内存中<span style="display:none"> ~dfc </span> <br />binlog_cache_disk_use ,当前有多少事务暂存在磁盘上的,如果这个值有数值的话,就应该要注意调优了。<span style="display:none"> i"%X[(U7 </span> <br />max_binlog_cache_size ,最大能有多少事务cache在内存中<span style="display:none"> fk)ts,p? </span> <br />binlog_do_db和binlog_ingore_db ,是一对控制对哪些数据库进行收集的选项。<span style="display:none"> t4pc2b </span> <br />sync_binlog ,这个值控制cache的数据commit多少次才刷到磁盘上。默认是0,也就是让数据库自己决定同步的频率。如设置成1的话,则每commit一次就会将cache的数据同步到磁盘上,这样做最<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=安全',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_10">安全</span>,但是性能最差。<span style="display:none"> T9]|*~ ,T </span> <br />最后就是重启一下数据库:<span style="display:none"> kM5N#|! </span> <br /><div class="f12">复制代码</div><div class="blockquote2" id="code4"><ol><li>service mysql restart</li></ol></div><span style="display:none"> 3o%,8l, </span> <br /><span style="display:none"> oK&LYlU </span> <br />或者<span style="display:none"> 9ctvy?53H </span> <br /><div class="f12">复制代码</div><div class="blockquote2" id="code5"><ol><li>service mysqld restart</li></ol></div><span style="display:none"> *]~ug%a </span> <br /><span style="display:none"> B"TZ8(< </span> <br /><span style="display:none"> (Da/$S. </span> <br /> <span style="display:none"> H];|<G </span> <br /><font size="5"><b>继续检查一下是否开启</b></font><span style="display:none"> 8<M'~G%CEq </span> <br /> <span style="display:none"> MB
:knj </span> <br /> <span style="display:none"> g1VdP[Y# </span> <br />登录 MySQL ,执行 SQL :<span style="color:#c5c8c6 "> </span><span style="display:none"> cc7*O </span> <br /><span style="color:#c5c8c6 "></span><div class="f12">复制代码</div><div class="blockquote2" id="code6"><ol><li>show global variables like 'log_bin';</li></ol></div><span style="display:none"> wXp
A1,i </span> <br /><span style="display:none"> xRYL{+ </span> <br /><span style="display:none"> )ALPMmlRs </span> <br />这下应该就是返回 ON 了<span style="display:none"> 9K~2!< </span> <br /><div class="f12">复制代码</div><div class="blockquote2" id="code7"><ol><li>MariaDB [(none)]> show global variables like 'log_bin'; </li><li>+---------------+-------+</li><li>| Variable_name | Value |</li><li>+---------------+-------+</li><li>| log_bin | ON |</li><li>+---------------+-------+</li><li>1 row in set (0.001 sec)</li></ol></div><span style="display:none"> j*>+^g\Q6 </span> <br /><span style="display:none"> ,ii*[{X? </span> <br />
</div>
</div>
<!--content_read-->
</td>
</tr>
<tr>
|
|