首页 数据库 mysql教程 mysql5.6.14主从复制(也称mysql AB复制)环境配置方法

mysql5.6.14主从复制(也称mysql AB复制)环境配置方法

Mar 30, 2017 pm 05:41 PM

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

      (1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
      (2).slave将master的binary log events拷贝到它的中继日志(relay log)
      (3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

附简要原理图:

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

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

word-spacing: 0px">   (2).基于行的复制:把改变的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的 . 从mysql5.0开始支持
word-spacing: 0px">   (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]

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

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

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

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

代码如下:

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

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

代码如下:

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

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

代码如下:

# 启动数据库 
[root@client100 ~]# mysqld_multi start 3306 
# 还原主DB server备份的数据 
[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql
登录后复制

7.登陆数据库,添加相关参数(主DBserver的ip/端口/同步用户/密码/position号/读取哪个日志文件)

代码如下:

[root@client100 ~]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p 
mysql> change master to 
    -> master_host=&#39;192.168.1.102&#39;, 
    -> master_user=&#39;kongzhong&#39;, 
    -> master_password=&#39;kongzhong&#39;, 
    -> master_port=3306, 
    -> master_log_file=&#39;mysql3306-bin.000001&#39;, 
    -> master_log_pos=414; 
#/*  下面是一部分注解: 
#/*  指定主DB server的IP地址 
master_host=&#39;192.168.1.102&#39;
#/*  指定用于同步的用户[这个就是我们在主DB server授权的用户] 
master_user=&#39;kongzhong&#39;
#/* 指定用于同步的用户的密码 
master_password=&#39;kongzhong&#39;
#/* 指定主DB server的端口[下面一个例子,可以重点看这个] 
master_port=3306
#/*  指定从DB server 从哪个日志文件开始读[在主DB server上使用show master status查看到日志] 
master_log_file=&#39;mysql3306-bin.000001&#39;
#/*  指定 从哪个POSITION号开始读 
master_log_pos=414
# 开启主从同步 
mysql> start slave; 
# 查看主从同步状态 
mysql> show slave status\G; 
# 主要看以下两个参数:[这两个参数如果是yes就表示主从同步正常] 
Slave_IO_Running: Yes 
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操作.有不理解的可以留言询问.

 以上就是mysql5.6.14主从复制(也称mysql AB复制)环境配置方法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win11怎么配置python环境变量? win11python添加环境变量的技巧 Win11怎么配置python环境变量? win11python添加环境变量的技巧 Feb 29, 2024 pm 04:30 PM

Win11系统作为最新的Windows操作系统,用户们在使用时可能会遇到一些配置问题。其中,配置Python环境变量是一个常见的需求,因为它可以让用户在任何位置轻松地使用Python命令。本文将介绍如何在Win11系统中配置Python环境变量,以便于用户能够更方便地使用Python编程语言。1、桌面【右键】点击此电脑,在打开的菜单项中,选择【属性】;2、接着,相关链接下,找到并点击【高级系统设置】;3、系统属性窗口,点击下方的【环境变量】;4、环境变量窗口,系统变量下,选择【Path】,再点击

PHP实现MySQL数据库主从复制的方法 PHP实现MySQL数据库主从复制的方法 May 17, 2023 am 08:18 AM

随着互联网的飞速发展,Web应用程序越来越多地集成了数据库操作。MySQL作为一款世界知名的关系型数据库系统,使用广泛。在高并发的Web应用中,MySQL主从复制是一种提高数据库性能和可用性的重要方式。本文将介绍如何使用PHP实现MySQL数据库主从复制。一、什么是MySQL主从复制MySQL主从复制是指将一个MySQL数据库服务器的数据复制到另一个服务器上

零基础学习Go语言:环境配置不再成为障碍 零基础学习Go语言:环境配置不再成为障碍 Feb 21, 2024 pm 02:12 PM

Go语言是一种由Google开发的静态类型、编译型的编程语言。它在现代编程语言中拥有独特的地位,被广泛应用于云计算、网络编程、大数据等领域。随着Go语言的逐渐流行,越来越多的程序员开始学习Go语言,希望能够掌握这门语言的特性和应用技巧。然而,对于零基础的学习者来说,Go语言的环境配置常常成为他们学习的第一个障碍。在学习Go语言之前,我们首先需要搭建一个适合的

构建高可用的MySQL集群:主从复制与负载均衡的最佳实践指南 构建高可用的MySQL集群:主从复制与负载均衡的最佳实践指南 Sep 09, 2023 am 10:57 AM

构建高可用的MySQL集群:主从复制与负载均衡的最佳实践指南近年来,随着互联网的快速发展,数据库已成为大部分Web应用的核心数据存储和处理引擎之一。在这个场景下,高可用性和负载均衡成为了数据库架构设计中的重要考虑因素。而MySQL作为最受欢迎的开源关系型数据库之一,其集群化部署方案备受关注。本文将介绍如何通过MySQL主从复制与负载均衡实现高可用的数据库集群

Go语言环境设置完全指南:漫步引导您创建开发环境 Go语言环境设置完全指南:漫步引导您创建开发环境 Feb 18, 2024 pm 10:26 PM

Go语言作为一种开源的编程语言,被越来越多的开发者所青睐。它的简洁性、高效性以及跨平台性受到了广泛的好评。在学习和使用Go语言之前,首先需要进行环境配置,才能顺利进行开发工作。本文将为大家提供一份全面的Go语言环境配置攻略,一步步教你搭建开发环境,让你轻松上手Go语言开发。一、安装Go语言首先,我们需要下载并安装Go语言的最新版本。你可以在Go官方网站上找到

Maven环境配置教程:快速上手配置步骤 Maven环境配置教程:快速上手配置步骤 Feb 21, 2024 pm 07:57 PM

Maven环境配置教程:快速上手配置步骤Maven是一个强大的项目管理工具,它可以帮助开发人员自动构建项目、管理依赖、执行测试等。在学习和使用Java开发时,配置Maven环境是一个必备的技能。本文将向您介绍如何快速上手配置Maven环境,包括安装Maven、配置环境变量、创建项目等一系列步骤,并提供具体的代码示例帮助您更好地理解。第一步:下载和安装Mave

Python开发者必看:PyCharm环境配置指南 Python开发者必看:PyCharm环境配置指南 Feb 23, 2024 pm 01:57 PM

PyCharm是众多Python开发者常用的集成开发环境(IDE),它提供了丰富的功能和工具,方便开发者高效地编写、调试和测试Python代码。在使用PyCharm进行开发之前,重要的一步就是对PyCharm环境进行配置。本文将为Python开发者提供PyCharm环境配置指南,包括安装PyCharm、配置Python解释器、设置虚拟环境等内容,同时会附带具

PHP语言开发中如何处理开发环境与生产环境的数据不一致错误? PHP语言开发中如何处理开发环境与生产环境的数据不一致错误? Jun 10, 2023 am 10:31 AM

随着互联网的快速发展,开发人员的任务也随之多样化和复杂化。特别是对于PHP语言开发人员而言,在开发过程中面临的最常见问题之一就是在开发环境和生产环境中,数据不一致的错误问题。因此,在开发PHP应用程序时,如何处理这些错误是开发人员必须面对的一个重要问题。开发环境和生产环境的区别首先需要明确的是,开发环境和生产环境是不同的,它们有着不同的设置和配置。在开发环境

See all articles