注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

Mysql主从同步配置  

2016-07-17 15:00:34|  分类: Mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

因手头项目需求配置mysql的主从同步配置,所以从网上找了些资料来学习下,首先是明白原理。其实Mysql的主从同步就是一个异步的复制过程,从Master复制到Slave上。而在 Master与Slave之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave端,另外一个线程(IO线程)在Master端。当然这个复制的前提是,首先Master端的BinaryLog(mysql-bin)功能必须打开,否则就无法实现复制。原因就在于整个复制过程实际上就是Slave从Master端获取该二进制日志然后再在完全顺序的执行日志中所记录的各种操作。打开 MySQL的Binary Log可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的mysqld 参数选项中([mysqld]标识后的参数部分)增加 “log-bin” 参数项。

下面来看看具体的配置过程:

1)Master端:

a)修改/etc/my.cnf[此配置文件名称要根据安装目录而定],在[mysqld]下添加如下字段:

server-id=1 #这是数据库ID,此ID是唯一的,主库默认为1,其他从库以此ID进行递增,ID值不能重复,否则会同步出错;
log-bin=593668_com_bin_log #开启二进制日志文件,此项为必填项,否则不能同步数据
binlog-do-db=593668_com #需要同步的数据库,可以多行
binlog-ignore-db=mysql #被忽略的数据库

b)加入一个同步的账号[这里假设要同步的数据库用户名为593668.com,从服务器IP为192.168.1.250,同步的数据库密码为123456]:

grant replication slave on *.* to '593668_com'@'192.168.1.250' identified by '123456';

c)重启下mysql下,登录进mysql用show master status命令查看日志情况:

mysql> show master status\G;

*************************** 1. row ***************************
File: log.000007
Position: 106
Binlog_Do_DB: 593668_com
Binlog_Ignore_DB:
1 row in set (0.00 sec)

有以上显示即证明Master端配置成功。示意图如下:

Mysql主从同步配置 - sinsunson - 天朝布衣田中码农参上

2)SLave端:

a)同样修改my.cnf文件,在[mysqld]下添加如下字段:

server-id=2
master-host=192.168.1.250 //同步的数据库
master-user= 593668_com //数据库用户名
master-password= 123456 //密码
master-port=3306 //端口
master-connect-retry=60 //重连时间
replicate-do-db=593668_com //同步的数据库
replicate-ignore-db=mysql //被忽略的数据库

b)重启slave的mysql服务:

service mysql restart;

c)然后登录进mysql用如下命令启动并察看Slave端状态。

mysql>start slave;
mysql>show slave status\G;

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.250
Master_User: 593668_com
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: log.000007
Read_Master_Log_Pos: 106

Relay_Log_File: localhost-relay-bin.000079
Relay_Log_Pos: 45
Relay_Master_Log_File: log.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: 593668_com
Replicate_Ignore_DB: mysql

...

如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。
这里解释下这两个的进程的功能:
Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
Slave_SQL_Running:读取本地日志文件,并执行日志里的SQL命令。
好了,这样就大功告成了。如果这两个线程没有启动成功的话,那么就可以采取如下两种解决方案:
一)slave上手动同步。
请先察看master上查看Position[这个可以参看Master端配置c],然后执行如下命令:

mysql> slave stop;
mysql>change master to
>master_host='192.168.124.51',
>master_user='593368_com',
>master_password='123456',
>master_log_file='log.000007',
>master_log_pos=106;

mysql> slave start;

二)设置GLOBAL SQL_SLAVE_SKIP_COUNTER=1

mysql> slave stop;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

请记住,最终需要看到Slave_IO_Running、Slave_SQL_Running状态为Yes才表明设置成功。当然还需要保证主从服务器之间的网络通讯是正常的,防火墙没有做限制。





  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017