文档章节

rhel6下,mysql 5.6.14 主(master)从(slave)复制(也称mysql AB

五大三粗
 五大三粗
发布于 2015/04/21 10:39
字数 1849
阅读 11
收藏 0
点赞 0
评论 0

一、mysql主(称master)从(称slave)复制的原理:

(1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)

(2).slave将master的binary log events拷贝到它的中继日志(relay log)

(3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

附简要原理图:
replication

二、mysql主从复制支持的类型:

(1).基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高

(2).基于行的复制:把改变的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的 . 从mysql5.0开始支持

(3).混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制.

三、主从配置需要注意的地方:

(1).主DB server和从DB server数据库的版本一致

(2).主DB server和从DB server数据库数据一致[ 这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录]

(3).主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

四、主从配置的简要步骤:

附简要示意图:
单向主从

1.主DB SERVER上的配置

(1).安装数据库

(2).修改数据库配置文件,指明server_id,开启二进制日志(log-bin)

(3).启动数据库,查看当前是哪个日志,position号是多少

(4).登陆数据库,授权用户[ip地址为从机IP地址,如果是双向主从,这里的还需要授权本机的IP地址(此时自己的IP地址就是从IP地址)]

(5).备份数据库[记得加锁和解锁]

(6).传送备份到从DB server上

(7).启动数据库
以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:

(1).登陆数据库,指定主DB server的地址,用户,密码等信息[此步仅双向主从时,需要]

(2).开启同步,查看状态

2.从DB SERVER上的配置

(1).安装数据库

(2).修改数据库配置文件,指明server_id[如果是搭建双向主从的话,也要开启二进制日志(log-bin)]

(3).启动数据库,还原备份

(4).查看当前是哪个日志,position号是多少[单向主从此步不需要,双向主从需要]

(5).指定主DB server的地址,用户,密码等信息

(6).开启同步,查看状态

五、单向主从环境[也称 mysql A/B复制]的搭建案例:

1.主DB server和从DB server都安装相应版本的数据库,我的两台DB server都已经安装好(5.6.14版本),都会是双实例,这里就不演示安装,可以参考mysql源码编译安装和mysql多实例配置两篇文章

注:两台机器的的selinux都是disable(永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled),防火墙可以选择关闭,开启的话也行[不行的话,添加防火墙策略]

2.修改主DB server的配置文件(/etc/my.cnf),开启日志功能,设置server_id值,保证唯一[client102为主DB server]

  1. [root@client102 scripts]# vim /etc/my.cnf  
  2. # 修改配置文件里,下面两个参数:  
  3. # 设置server_id,一般建议设置为IP,或者再加一些数字  
  4. server_id =102  
  5. # 开启二进制日志功能,可以随便取,最好有含义  
  6. log-bin=mysql3306-bin  

3.启动数据库服务器,并登陆数据库,授予相应的用户用于同步

  1. # 我这里是多实例mysql,所以启动是这样的,如果大家是单实例的,就直接启动就可以[/etc/init.d/mysqld start]  
  2. [root@client102 scripts]# mysqld_multi start 3306  
  3. # 登陆mysql 服务器  
  4. [root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p  
  5. # 授予用户权限用于主从同步  
  6. mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong';  
  7. Query OK, 0 rows affected (0.00 sec)  
  8. # 刷新授权表信息  
  9. mysql> flush privileges;  
  10. Query OK, 0 rows affected (0.00 sec)  
  11. # 查看position 号,记下position 号(很重要,从机上需要这个position号和现在的日志文件,我这里是414和mysql3306-bin.000001)  
  12. mysql> show master status;  
  13. +----------------------+----------+--------------+------------------+-------------------+  
  14. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |  
  15. +----------------------+----------+--------------+------------------+-------------------+  
  16. | mysql3306-bin.000001 | 414 | | | |  
  17. +----------------------+----------+--------------+------------------+-------------------+  
  18. 1 row in set (0.00 sec)  

4.为保证主DB server和从DB server的数据一致,这里采用主备份,从还原来实现初始数据一致

  1. # 临时锁表  
  2. mysql> flush tables with read lock;  
  3. # 我这里实行的全库备份,在实际中,我们可能只同步某一个库,可以只备份一个库  
  4. # 新开一个终端,执行如下操作  
  5. [root@client102 data]# mysqldump -p3306 -uroot -p -S /usr/local/mysql/mysqld3306.sock --all-databases > /tmp/mysql.sql  
  6. # 解锁  
  7. mysql> unlock tables;  
  8. # 将备份的数据传送到从机上,用于恢复  
  9. [root@client102 data]# scp /tmp/mysql.sql root@192.168.1.100:/tmp  

5.从DB server配置文件只需修改一项,其余用命令行做

  1. [root@client100 ~]# vim /etc/my.cnf  
  2. # 设置server_id,一般建议设置为IP,或者再加一些数字  
  3. server_id =100  

6.启动数据库,还原备份数据

  1. # 启动数据库  
  2. [root@client100 ~]# mysqld_multi start 3306  
  3. # 还原主DB server备份的数据  
  4. [root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql 7.登陆数据库,添加相关参数(主DBserver的ip/端口/同步用户/密码/position号/读取哪个日志文件)   
  5. [root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p  
  6. mysql> change master to  
  7. > master_host='192.168.1.102',  
  8. > master_user='kongzhong',  
  9. > master_password='kongzhong',  
  10. > master_port=3306,  
  11. > master_log_file='mysql3306-bin.000001',  
  12. > master_log_pos=414;  
  13. #/* 下面是一部分注解:  
  14. #/* 指定主DB server的IP地址  
  15. master_host='192.168.1.102'  
  16. #/* 指定用于同步的用户[这个就是我们在主DB server授权的用户]  
  17. master_user='kongzhong'  
  18. #/* 指定用于同步的用户的密码  
  19. master_password='kongzhong'  
  20. #/* 指定主DB server的端口[下面一个例子,可以重点看这个]  
  21. master_port=3306  
  22. #/* 指定从DB server 从哪个日志文件开始读[在主DB server上使用show master status查看到日志]  
  23. master_log_file='mysql3306-bin.000001'  
  24. #/* 指定 从哪个POSITION号开始读  
  25. master_log_pos=414  
  26.   
  27. # 开启主从同步  
  28. mysql> start slave;  
  29. # 查看主从同步状态  
  30. mysql> show slave status\G;  
  31. # 主要看以下两个参数:[这两个参数如果是yes就表示主从同步正常]  
  32. Slave_IO_Running: Yes  
  33. Slave_SQL_Running: Yes  

8.下面大家就可以在主DB server上新建一个表,看是否能同步到从DB server上,我这里就不测试了

[注:千万不要在从DB server手动插入数据,那样数据就不一致,主从就会断开,需要重新配置了]

如果有问题,可以尝试关闭IPTABLES(/etc/init.d/iptables stop)和selinux(setenforce 0:临时关闭selinux,永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled)

9.上面所搭建的是单向主从,也是用的比较多的,有人想了解双向主从是如何搭建,其实,就是主DB server和从DB sever都开启日志功能,然后在主DB SERVER执行授权用户[这里授权的是自己作为从服务器,也就是这里的IP地址是主DB server的IP地址],然后再在主DB server上进行chang master操作.有不理解的可以留言询问.

© 著作权归作者所有

共有 人打赏支持
五大三粗
粉丝 155
博文 890
码字总数 4537901
作品 0
广州
程序员
rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]

更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn) 一、mysql主(称master)从(称slave)复制的原理: (1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-b...

xcga_wise ⋅ 2013/11/20 ⋅ 0

rhel6系统中,mysql 5.6复制新特性下主从复制配置[基于GTID]

更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn) 1.mysql5.6在复制方面的新特性: (1).支持多线程复制:事实上是针对每个database开启相应的独立线程,即每个库有一个单独的(...

xcga_wise ⋅ 2013/11/24 ⋅ 0

MYSQL 5.6 GTID模式下手工删除日志导致备库数据丢失

我们在测试 5.6 GTID 的时候,发现了一个导致主备数据丢失的场景。特别提醒一下使用 MySQL 5.6 并启用了 GTID 的各位,以避免这种情况发生。同时也简单介绍了 GTID 的实现原理。 场景描述 有...

梧桐0928 ⋅ 2013/11/25 ⋅ 0

mysql主从复制原理介绍

一、mysql主(称master)从(称slave)复制的原理: (1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events) (2...

fighting-cluber ⋅ 2014/02/24 ⋅ 0

mysql (ab复制 mysql中间件)

原理图: mysql ab复制 A->B master: vim /etc/my.cnf 添加 log-bin=mysql-bin server_id=1 show master status grant replication slave on . to repl@'%' identified by 'repl' mysql-bin......

doudou___9958 ⋅ 2016/11/10 ⋅ 0

Mysql的AB复制

Mysql的AB复制 环境:rhel 6.5 master:192.168.2.1 slave1:192.168.2.2 slave2:192.168.2.10 1.mysql的单向复制 注: mysql 数据库的版本,两个数据库版本要相同,或者slave 比master 版本高!...

Berry涩味 ⋅ 2014/06/22 ⋅ 0

Mysql数据库AB复制简单实现

Mysql 主 从 复 制 在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。介于这种情况,我们可以对mys...

YLSL2014 ⋅ 2016/06/27 ⋅ 0

mysql 的AB角复制

1 原理 当主库有更新操作的时候,主库会把更新操作的sql,写如到二进制日志文件当中,并维护一个二进制日志文件的索引文件,以便日志文件轮询 在从库启动异步复制的时候,从库会开启两个I/O...

wzl_up ⋅ 2016/11/10 ⋅ 0

mysql数据库AB复制配置

mysql AB复制配置 使用俩台mysql服务器实现AB,主从复制。 一、在主MASTER服务器配置 MASTER 172.16.1.3 BACKUP 172.16.1.2 1、编辑my.cnf文件 #在原有基础上添加这俩行 [root@zhaoyu...

wbf961127 ⋅ 2017/11/13 ⋅ 0

(四)Zabbix_linux安装mysql5.6

Zabbix_linux安装mysql5.6 一、下载mysql wget -chttp://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-linux-glibc2.5-x8664.tar.gz/from/http://cdn.mysql.com/-O mysql-5.6.14-li......

火头一号 ⋅ 2017/11/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 30分钟前 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 昨天 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 昨天 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 昨天 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部