<code>一、准备(主从都需要配置):</code>
<code> </code><code>yum </code><code>-</code><code>y install mysql mysql</code><code>-</code><code>server </code><code>#安装mysql</code>
<code> </code><code>yum </code><code>-</code><code>y install ntpdate </code><code>#安装时间同步</code>
<code> </code><code>echo </code><code>'*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null'</code> <code>>></code><code>/</code><code>var</code><code>/</code><code>spool</code><code>/</code><code>cron</code><code>/</code><code>root </code><code>#配置网络时间同步</code>
<code> </code><code>service mysqld start </code><code>#启动服务</code>
<code> </code><code>chkconfig </code><code>-</code><code>-</code><code>add mysqld </code><code>#添加为系统服务</code>
<code> </code><code>chkconfig mysqld on </code><code>#开启默认运行级别</code>
<code> </code>
<code>二、主服务器配置:主配置文件默认为:</code><code>/</code><code>etc</code><code>/</code><code>my.cnf</code>
<code> </code><code>[mysqld]</code>
<code> </code><code>datadir</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code>
<code> </code><code>socket</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code><code>/</code><code>mysql.sock</code>
<code> </code><code>user</code><code>=</code><code>mysql</code>
<code> </code><code>symbolic</code><code>-</code><code>links</code><code>=</code><code>0</code>
<code> </code><code>log</code><code>-</code><code>bin</code><code>=</code><code>master</code><code>-</code><code>bin</code> <code>#开启二进制日志文件</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>1</code> <code>#设置服务器id,保证全局唯一</code>
<code> </code><code>sync</code><code>-</code><code>binlog</code><code>=</code><code>1</code> <code>#全局唯一的server-id</code>
<code> </code><code>innodb</code><code>-</code><code>flush</code><code>-</code><code>logs</code><code>-</code><code>at</code><code>-</code><code>trx</code><code>-</code><code>commit</code><code>=</code><code>1</code>
<code> </code><code>innodb</code><code>-</code><code>support</code><code>-</code><code>xa</code><code>=</code><code>1</code>
<code> </code>
<code> </code><code>service mysqld restart </code><code>#重启动服务</code>
<code> </code><code>mysql> show </code><code>global</code> <code>variables like </code><code>'%server%'</code><code>; </code><code>#数据库id</code>
<code> </code><code>mysql> show master logs; </code><code>#查看数据库二进制日志</code>
<code> </code><code>mysql> show master status; </code><code>#查看主服务器状态,记住二进制日志名,配置从服务器会用</code>
<code> </code><code>mysql> grant replication slave,replication client on </code><code>*</code><code>.</code><code>*</code> <code>to </code><code>'copy'</code><code>@</code><code>'192.168.0.50'</code> <code>identified by </code><code>'123.com'</code><code>;</code>
<code> </code><code>#授权192.168.0.50主机上的copy用户对所有库有复制权限</code>
<code> </code><code>mysql> select Host,User,Password </code><code>from</code> <code>mysql.user; </code><code>#查看用户</code>
<code>三、从服务器配置:</code>
<code> </code><code>datadir</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code>
<code> </code><code>socket</code><code>=</code><code>/</code><code>var</code><code>/</code><code>lib</code><code>/</code><code>mysql</code><code>/</code><code>mysql.sock</code>
<code> </code><code>user</code><code>=</code><code>mysql</code>
<code> </code><code>symbolic</code><code>-</code><code>links</code><code>=</code><code>0</code>
<code> </code><code>relay</code><code>-</code><code>log</code><code>=</code><code>slave</code><code>-</code><code>log </code><code>#启用中继日志</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>10</code> <code>#服务器id,全局唯一</code>
<code> </code><code>read</code><code>-</code><code>only</code><code>=</code><code>1</code> <code>#将服务器设置为只读模式(对拥有root权限的用户无效)</code>
<code> </code><code>service mysqld restart </code><code>#重启动服务</code>
<code> </code><code>mysql> change master to master_host</code><code>=</code><code>'192.168.0.10'</code><code>,master_user</code><code>=</code><code>'copy'</code><code>,</code>
<code> </code><code>master_password</code><code>=</code><code>'123.com'</code><code>,master_log_file</code><code>=</code><code>'master-bin.000001'</code><code>,master_log_pos</code><code>=</code><code>590</code><code>;</code>
<code> </code><code>master_host </code><code>#主服务器地址</code>
<code> </code><code>master_user </code><code>#拥有复制权限的用户</code>
<code> </code><code>master_password </code><code>#密码</code>
<code> </code><code>master_log_file </code><code>#从哪个二进制日志开始复制</code>
<code> </code><code>master_log_pos </code><code>#从二进制日志的什么位置开始复制</code>
<code> </code>
<code> </code><code>mysql> start slave; </code><code>#开启从服务器</code>
<code> </code><code>mysql> show slave status\G; </code><code>#查看从服务器状态</code>
<code>四、验证主从:</code>
<code> </code><code>主服务器:</code>
<code> </code><code>mysql> create database db_test; </code><code>#创建数据库</code>
<code> </code><code>从服务器:</code>
<code> </code><code>mysql> show databases; </code><code>#查看服务器是否同步</code>
<code>五、主主复制</code>
<code> </code><code>服务器A:</code>
<code> </code><code>[mysqld] </code><code>#添加内容</code>
<code> </code><code>log</code><code>-</code><code>bin</code><code>=</code><code>master</code><code>-</code><code>bin</code> <code>#启用二进制日志</code>
<code> </code><code>relay</code><code>-</code><code>log</code><code>=</code><code>slave</code><code>-</code><code>log </code><code>#启用中继日志</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>1</code> <code>#服务器id,全局唯一</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>offset</code><code>=</code><code>1</code> <code>#自增列起始</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>increment</code><code>=</code><code>2</code> <code>#自增列一次步进(例:1,3,5,7,9...)</code>
<code> </code><code>mysql> grant replication slave,replication client on </code><code>*</code><code>.</code><code>*</code> <code>to </code><code>'copy'</code><code>@</code><code>'192.168.0.50'</code> <code>identified by </code><code>'123.com'</code><code>;</code>
<code> </code><code>mysql> change master to master_host</code><code>=</code><code>'192.168.0.50'</code><code>,master_user</code><code>=</code><code>'copy'</code><code>,</code>
<code> </code><code>master_password</code><code>=</code><code>'123.com'</code><code>,master_log_file</code><code>=</code><code>'master-bin.000001'</code><code>,master_log_pos</code><code>=</code><code>106</code><code>;</code>
<code> </code><code>mysql> start slave; </code>
<code> </code><code>mysql> show slave status\G; </code>
<code> </code>
<code> </code><code>服务器B: </code>
<code> </code><code>log</code><code>-</code><code>bin</code><code>=</code><code>master</code><code>-</code><code>bin</code>
<code> </code><code>relay</code><code>-</code><code>log</code><code>=</code><code>slave</code><code>-</code><code>log</code>
<code> </code><code>server</code><code>-</code><code>id</code><code>=</code><code>10</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>offset</code><code>=</code><code>2</code> <code>#自增列起始</code>
<code> </code><code>auto</code><code>-</code><code>increment</code><code>-</code><code>increment</code><code>=</code><code>2</code> <code>#自增列一次步进(例:2,4,6,8,10...)</code>
<code> </code><code>mysql> grant replication slave,replication client on </code><code>*</code><code>.</code><code>*</code> <code>to </code><code>'copy'</code><code>@</code><code>'192.168.0.10'</code> <code>identified by </code><code>'123.com'</code><code>; </code>
<code> </code><code>master_password</code><code>=</code><code>'123.com'</code><code>,master_log_file</code><code>=</code><code>'master-bin.000003'</code><code>,master_log_pos</code><code>=</code><code>106</code><code>;</code>
<code>六、半同步复制</code>
<code> </code><code>要想使用半同步复制,必须满足以下几个条件:</code>
<code> </code><code>1.</code> <code>MySQL </code><code>5.5</code><code>及以上版本</code>
<code> </code><code>2.</code> <code>变量have_dynamic_loading为YES</code>
<code> </code><code>3.</code> <code>异步复制已经存在</code>
<code> </code><code>主:</code>
<code> </code><code>mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME </code><code>'semisync_master.so'</code><code>; </code><code>#安装插件</code>
<code> </code><code>mysql> show plugins; </code><code>#查看插件是否安装成功</code>
<code> </code><code>mysql> </code><code>SET</code> <code>GLOBAL rpl_semi_sync_master_enabled </code><code>=</code> <code>1</code><code>; </code><code>#启用半同步</code>
<code> </code><code>mysql> show status like </code><code>'Rpl_semi_sync_master_status'</code><code>; </code><code>#查看是否在运行</code>
<code> </code><code>从:</code>
<code> </code><code>mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME </code><code>'semisync_slave.so'</code><code>; </code><code>#安装插件</code>
<code> </code><code>mysql> show plugins;</code>
<code> </code><code>mysql> </code><code>SET</code> <code>GLOBAL rpl_semi_sync_slave_enabled </code><code>=</code> <code>1</code><code>; </code><code>#启用半同步</code>
<code> </code><code>mysql> STOP SLAVE </code><code>#关闭复制线程</code>
<code> </code><code>mysql> START SLAVE </code><code>#开启复制线程</code>
<code> </code><code>mysql> show status like </code><code>'Rpl_semi_sync_slave_status'</code><code>; </code><code>#查看是否在运行</code>
<code> </code><code>mysql> show variables like </code><code>'%Rpl%'</code><code>; </code><code>#查看和半同步相关的服务器变量</code>
<code> </code><code>rpl_semi_sync_master_enabled </code><code>#是否启用半同步</code>
<code> </code><code>rpl_semi_sync_master_timeout </code><code>#等待超时时间</code>
<code> </code><code>rpl_semi_sync_master_wait_for_slave_count</code>
<code> </code><code>#需要等待多少个slave应答,才能返回给客户端</code>
<code> </code><code>mysql> show status like </code><code>'%Rpl_semi%'</code><code>; </code><code>#半同步状态</code>
<code> </code><code>Rpl_semi_sync_master_clients </code><code>#当前半同步复制从的个数</code>
<code>七、和复制相关的文件</code>
<code> </code><code>从节点:</code>
<code> </code><code>master.info:用于保存slave连接至master时的相关信息(账号,密码,服务器地址,复制的二进制文件等)</code>
<code> </code><code>relay</code><code>-</code><code>log.info:保存当前slave节点上已经复制到的二进制文件位置,和relay</code><code>-</code><code>log的位置 </code>
<code> </code>
本文转自 红尘世间 51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1936473