当前位置:首页 > 开发 > 数据库 > 正文

MYSQL主从同步测试及常见问题处理

发表于: 2012-03-07   作者:baalwolf   来源:转载   浏览次数:
摘要: 今天调试MYSQL主从同步测试,现把其中过程做一个简单的记录。 一、准备服务器 由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低, Master的版本肯定不能高于Slave版本。 我用的主服务器(Master)和从服务器(Slave)的版本都是5.0.22,操作系统是Linux CentO

今天调试MYSQL主从同步测试,现把其中过程做一个简单的记录。

一、准备服务器

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,

Master的版本肯定不能高于Slave版本。

我用的主服务器(Master)和从服务器(Slave)的版本都是5.0.22,操作系统是Linux CentOS 5.2.x。

Master的主机IP为:192.168.1.129
Slave的主机IP为:192.168.1.131,

2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/usr/local/mysql/data。

二、设置同步服务器


1、master 配置
 
每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了。接下来开始修改 my.cnf,在[mysqld]下面增加以下几行:

server-id = 1    //服务器编号

log-bin = mysql-bin    //开启日志 

set-variable=binlog-ignore-db=mysql //不需要同步的表

set-variable=binlog-do-db = test  // 要同步的表,如果全部同步可以不写此行

然后在Master上增加一个账号专门用于同步,如下:

登录mysql服务器
#./mysql -uroot -p
mysql>GRANT REPLICATION SLAVE ON *.* TO slave@192.168.1.131 IDENTIFIED BY '密码';

从库连接主库进行测试: >mysql -h192.168.1.129 -uslave -p123456

此处测试应该是通过的,否则 mysql 配置有问题.

2、slave 配置
 修改my.cnf配置,在[mysqld]下面增加以下几行:

    server-id=2  //服务器编号

    master-host = '192.168.1.129'

    master-user = 'slave'

    master-password = '123456'

    master-port = 3306

    master-connect-retry = 120

重新启动mysql,登录mysql查看:
 mysql>SHOW SLAVE STATUS\G;
如果出现:
          Slave_IO_Running: Yes
          Slave_SQL_Running: Yes

表明配置成功,可以进行测试。

如果Slave_IO_Runing:No 则说明权限分配有错误,重新分配权限。
如果Slave_SQL_Runing:No 则可用下面方法解决:


解决办法一、

Slave_SQL_Running: No
1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

一般是事务回滚造成的:
解决办法:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;

 

解决办法二、

首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值

进入master

mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 |              |                  |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

 

然后到slave服务器上执行手动同步:

mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3306,
> master_log_file='localhost-bin.000094',
> master_log_pos=33622483 ;
1 row in set (0.00 sec)
mysql> slave start;


手动同步需要停止master的写操作!

MYSQL主从同步测试及常见问题处理

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的
转自:http://blog.chinaunix.net/uid-20639775-id-3254611.html MYSQL主从同步架构是目前使用最多
Replication 线程    Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之
1、Replication 线程 Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制
这次单独调查一下主从延迟的时间。这里说的主从延迟,并不是指“从库更新性能跟不上主库”, 而是“
MySQL版本:5.5.28 操作系统:centos 5.8 64位 Server1:192.168.1.1 配置:my.cnf server-id = 1 bi
MySQL版本:5.5.28 操作系统:centos 5.8 64位 Server1:192.168.1.1 配置:my.cnf server-id = 1 bi
由于背景原因,所做的主从同步还是要基于MySQL 5.1的版本,主从同步主要是一个数据库读写访问原来的
MYSQL管理之主从同步管理 MYSQL 主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的
MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号