`
810364804
  • 浏览: 786935 次
文章分类
社区版块
存档分类
最新评论

MySQL Master/Slave 主从数据同步

 
阅读更多


转自:http://www.linuxidc.com/Linux/2012-08/67412.htm

http://blog.sina.com.cn/s/blog_9f02ddef0100yjcz.html


MySQL的同步原理是用一个服务器作为Master(主服务器),另一个或多个服务器作为Salve(从服务器)。Master服务器把更新的内容写到 二进制日志(Binary log或bin log中),并且用一个索引文件来记录日志循环的情况。这些日志中的更新部分会被发送到Slave服务器。当一个Slave连接到Master之后,它会通知Master最后一次成功增量更新的日志位置。Slave会找出所有从那个时刻开始的更新操作,然后阻塞并等待Master发送新的更新操作。

MySQL数据库同步的主要优点如下:
1. 使系统更加稳健,当Master上发生问题时,可以把Slave作为备用切换过去。
2. 提高系统响应速度,可以在Slave和Master之间分担一些查询,这就能加速响应时间。SELECT查询就可以在Slave上执行以减少Master的负载。更新数据的语句则要放在Master上执行以保持Master和Slave的同步。
3. 容易管理,可以在Slave上备份数据,无需干扰Master。而备份数据时Master照样继续运作。

------------------------------------------------------------------------------------------------

MySQL的Master/Slave数据同步原理是在Master开启二进制日志功能(log- bin="log-file-name"),该功能会记录数据的任何操作(create, insert, update等),然后由Slave取回Master的二进制日志再自己执行一遍从而实现同步的功能。

因此它可实现数据或表结构的同步,在Master中新建/修改/删除表一样被同步到Slave中。



项目申请了两台数据库服务器,为了保持数据同步,就搞了个数据同步,以此文记录以备后续使用:

首先声明:

服务器操作系统都是CentOS6.1、mysql版本号一致,为了减少出现其他问题的可能性,故做此环境搭配。

数据库服务器A,ip地址:192.168.6.108

数据库服务器B,ip地址:192.168.6.200

当然 首先要备份一台数据最新的数据库,然后等设置同步完毕之后都还原成相同的数据!

先做B同步A数据库的数据功能:

暂时称A为主机Master、B为从机Slave

A主机Master

1、修改mysql数据库conf文件,修改/etc/my.conf

# Replication Master Server (default)

# binary logging is required for replication

之后增加

  1. server-id=1#自带就有的话就不用添加看一下my.conf上下文
  2. binlog-do-db=mydb_name#需要同步的数据库名称
  3. binlog-ignore-db=mysql#需要忽略的数据库名

2、重启mysql

(CentOS是service mysqld restart 其他系统的自行重启 若不知请谷歌、度娘)

3、创建一个MySQL帐号为同步专用

用root用户登陆mysql

mysql> grant replication slave,reload,super on *.* to backup@192.168.5.200 identified by 'backup';

mysql> flush privileges;

ps:我这里是创建了一个backup用户密码也是backup的mysql数据库用户,用于同步。@后面指定该账户允许远程登录的ip,也就是B从机的ip地址

B从机Slave

1、同样的修改mysql数据库conf文件,修改/etc/my.conf

# Replication Master Server (default)

# binary logging is required for replication

之后增加

  1. server-id=2#自带就有的话就不用添加看一下my.conf上下文
  2. master-host=192.168.5.108#此处是需要备份的主机ip这里填的是A主机的ip
  3. master-user=backup#此处是备份的账号
  4. master-password=backup#此处是备份账号的密码
  5. master-port=3306#数据库端口号没改就填默认的3306
  6. replicate-ignore-db=mysql#需要忽略的数据库名
  7. replicate-do-db=mydb_name#需要同步的数据库名称

启动同步

在主服务器A上,mysql命令下(root用户登陆mysq)

mysql> show master status;

eg:

+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+

|mysql-bin.000012 | 106 | mydb_name | mysql |

+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+

从服务器B上,mysql命令下(同样用root用户登陆mysq)

mysql> slave stop;

mysql> change master to master_log_file='mysql-bin.000012',master_log_pos=106;

mysql> slave start;

ps:

master_log_file就是在主服务器mysql下show master status;显示的File列的值

master_log_pos就是在主服务器mysql下show master status;显示的Position列的值

还是在从服务器B的mysql命令下

用show slave status \G;看一下从服务器的同步情况

mysql>show slave status \G;

有如下两项的值都是YES就表示已经在同步

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

否则就是同步失败,当然了,失败的原因有N种,自己慢慢谷歌、度娘,这里只把我自己的操作步骤记录。

设置MySQL双向同步

其实设置双向同步就是把上面的步骤重复一下,只是A和B服务器的操作反过来,A变成从服务器、B变成主服务器!

1、修改B服务器的my.conf,添加

  1. binlog-do-db=mydb_name#需要同步的数据库名称
  2. binlog-ignore-db=mysql#需要忽略的数据库名

2、重启B服务器的mysql (service mysqld restart)

3、登陆mysql,

mysql> grant replication slave,reload,super on *.* to backup@192.168.5.108 identified by 'backup';

mysql> flush privileges;

ps:创建一个backup用户,密码也是backup的mysql数据库用户,用于同步。@后面指定该账户允许远程登录的ip,也就是A从机的ip地址。

4、修改A服务器的my.cnf,添加

  1. master-host=192.168.5.200#此处是需要备份的主机ip这里填的是A主机的ip
  2. master-user=backup#此处是备份的账号
  3. master-password=backup#此处是备份账号的密码
  4. master-port=3306#数据库端口号没改就填默认的3306
  5. replicate-ignore-db=mysql#需要忽略的数据库名
  6. replicate-do-db=mydb_name#需要同步的数据库名称

5、重启A服务器的mysql(service mysqld restart)

6、在主服务器B MySQL命令符下:

mysql> show master status;

eg:

+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+

|mysql-bin.000014| 188 | mydb_name | mysql |

+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+

7、在服务器A MySQL命令符下:

mysql> slave stop;

mysql> change master to master_log_file='mysql-bin.000014',master_log_pos=188;

mysql> slave start;

8、还是在从服务器A的mysql命令下

用show slave status \G;看一下从服务器的同步情况

mysql>show slave status \G;

有如下两项的值都是YES就表示已经在同步

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

然后还原数据至最新数据库!

至此 双向同步配置完毕!

ps:因为是基于操作日志备份,所以设置同步前请把数据库先备份,然后用用一份备份还原数据库,之后数据就可以保持一致!


分享到:
评论

相关推荐

    Mysql-master-slave.rar_Master/Slave_slave mysql

    mysql master-slave 主从配置的讲解

    mysql(master/slave)主从复制原理及配置图文详解

    主要介绍了mysql(master/slave)主从复制原理及配置图文详解,以前脚本之家小编发过相关的内容,但这么好的非常少见特分享一下,需要的朋友可以参考下

    docker安装mysql主从.txt

    使用allen老师的hub镜像制作自己的mysql主从 --------- docker pull xiaochunping/mysql-master; docker pull xiaochunping/mysql-slave; -- cnetos docker run ,把my.cnf和data数据引入到属主机 -----------------...

    MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置详解(Master-Linux Slave-windows7)

    主要为大家详细介绍了MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    MySQL5.6 数据库主从同步安装与配置详解(Master/Slave)

    MySQL5.6 数据库主从同步安装与配置详解(Master/Slave) 本篇文章主要介绍了MySQL5.6 数据库主从同步安装与配置详解,具有一定的参考价值,有兴趣的可以了解一下。 安装环境 操作系统 :CentOS 6.5 数据库版本:...

    Mysql主从数据库(Master/Slave)同步配置与常见错误

    随着访问量的增加,对于一些比较耗时的数据库读取操作,一般采用将写入与读取操作分开来缓解数据库的压力,数据库引擎一般采用Master/Slave架构。实现mysql服务器的主从配置,可以实现读写分离,另外在主数据库崩溃...

    MySQL Master Slave构架 spring3 整合

    里面实现的是动态切换数据源,大家都是知道,spring2之后添加AbstractRoutingDataSource这个东西,这个就可以实现切换数据源,实现思路是:先按照搭建MySQL的MasterSlave架构.doc>>(我上传有资源),搭建好,然后动态...

    Mysql主从同步备份策略

    Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...

    Mysql主从配置.docx

    (4)双主复制:每个服务既是Master又是另一台服务的Slave,服务之间相互同步数据 (5)级联复制:Slave同步Master数据,Slave级别和最新数据量成正比,低级Slave连接比自身高的Slave节点,依次排序,导致数据更新慢

    joeywang310#mysql-master-slave#Mysql主从复制集群搭建-基于DockerCompose1

    如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave mysql容器配置配置Dockerfile设置server_id,一般设置为

    MySQL不停机不锁表主从同步与读写分离配置

    MySQL不停机不锁表主从同步与读写分离配置,1 .xtrabackup安装.2.核对mysql的版本.3.在master服务器上在线备份数据库.4.slave机器上操作

    mysql Linux下主从同步

    mysql在redhat Linux下的主从同步,实现master与slave的应用 已经测试可用

    mysql5.5 master-slave(Replication)主从配置

    一主一从: Master: OS:centos release 5.6 DB:mysql 5.5.8 IP:192.168.1.2 Slave: OS:centos release 5.6 DB:mysql 5.5.8 IP:192.168.1.3 修改主机Master配置文件 (/etc/my.cnf) 代码如下: [mysqld] //至少要有...

    windows主从同步

    mysql数据库windows下mysql主从同步备份步骤 haha_yong2人评论2507人阅读2010-04-29 11:13:54 windows下mysql主从同步备份步骤 A:主服务器 IP地址:192.168.1.124 B:从服务器 IP地址:192.168.1.125 前提:设置...

    sharding-jdbc-master-slave.zip

    Sharding-JDBC教程:Spring Boot2.0以上整合Sharding-JDBC实现分库分表+读写分离,Mysql数据库主从搭建:https://blog.csdn.net/forezp/article/details/94173427

    mysql主从数据库的一些资料

    mysql主从数据库的一些资料 包含master/slave实现原理,安装,以及在使用过程中遇到的一些问题

Global site tag (gtag.js) - Google Analytics