데이터 베이스 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Win11에서 Python 환경 변수를 구성하는 방법은 win11python에서 환경 변수를 추가하는 방법입니다. Win11에서 Python 환경 변수를 구성하는 방법은 win11python에서 환경 변수를 추가하는 방법입니다. Feb 29, 2024 pm 04:30 PM

Win11 시스템은 최신 Windows 운영 체제이므로 사용자는 이를 사용할 때 일부 구성 문제가 발생할 수 있습니다. 그 중에서도 Python 환경 변수를 구성하는 것은 사용자가 어느 위치에서나 Python 명령을 쉽게 사용할 수 있도록 하기 때문에 일반적인 요구 사항입니다. 이번 글에서는 사용자가 Python 프로그래밍 언어를 보다 편리하게 사용할 수 있도록 Win11 시스템에서 Python 환경 변수를 구성하는 방법을 소개합니다. 1. 바탕 화면에서 이 컴퓨터를 [마우스 오른쪽 버튼으로 클릭]하고 열리는 메뉴 항목에서 [속성]을 선택합니다. 2. 그런 다음 관련 링크에서 [고급 시스템 설정]을 찾아 클릭합니다. 3. 시스템 속성 창에서 하단 변수]에서 [환경]을 클릭합니다. 4. 환경 변수 창의 시스템 변수에서 [경로]를 선택한 후 클릭합니다.

PHP에서 MySQL 데이터베이스의 마스터-슬레이브 복제를 구현하는 방법 PHP에서 MySQL 데이터베이스의 마스터-슬레이브 복제를 구현하는 방법 May 17, 2023 am 08:18 AM

인터넷의 급속한 발전으로 인해 웹 애플리케이션은 점점 더 데이터베이스 작업을 통합하고 있습니다. MySQL은 널리 사용되는 세계적으로 유명한 관계형 데이터베이스 시스템입니다. 동시성 웹 애플리케이션에서 MySQL 마스터-슬레이브 복제는 데이터베이스 성능과 가용성을 향상시키는 중요한 방법입니다. 이 기사에서는 PHP를 사용하여 MySQL 데이터베이스의 마스터-슬레이브 복제를 구현하는 방법을 소개합니다. 1. MySQL 마스터-슬레이브 복제란 무엇입니까? MySQL 마스터-슬레이브 복제는 한 MySQL 데이터베이스 서버에서 다른 서버로 데이터를 복사하는 것을 의미합니다.

고가용성 MySQL 클러스터 구축: 마스터-슬레이브 복제 및 로드 밸런싱을 위한 모범 사례 가이드 고가용성 MySQL 클러스터 구축: 마스터-슬레이브 복제 및 로드 밸런싱을 위한 모범 사례 가이드 Sep 09, 2023 am 10:57 AM

고가용성 MySQL 클러스터 구축: 마스터-슬레이브 복제 및 로드 밸런싱을 위한 모범 사례 가이드 최근 몇 년간 인터넷의 급속한 발전과 함께 데이터베이스는 대부분의 웹 애플리케이션에 대한 핵심 데이터 저장 및 처리 엔진 중 하나가 되었습니다. 이 시나리오에서는 고가용성과 로드 밸런싱이 데이터베이스 아키텍처 설계에서 중요한 고려 사항이 되었습니다. 가장 인기 있는 오픈 소스 관계형 데이터베이스 중 하나인 MySQL의 클러스터 배포 솔루션은 많은 주목을 받았습니다. 이 기사에서는 MySQL 마스터-슬레이브 복제 및 로드 밸런싱을 통해 고가용성 데이터베이스 클러스터를 구현하는 방법을 소개합니다.

처음부터 Go 언어 배우기: 환경 구성은 더 이상 장애물이 아닙니다. 처음부터 Go 언어 배우기: 환경 구성은 더 이상 장애물이 아닙니다. Feb 21, 2024 pm 02:12 PM

Go 언어는 Google에서 개발한 정적으로 유형이 지정되고 컴파일된 프로그래밍 언어입니다. 현대 프로그래밍 언어 중에서 독특한 위치를 차지하고 있으며 클라우드 컴퓨팅, 네트워크 프로그래밍, 빅데이터 및 기타 분야에서 널리 사용됩니다. Go 언어가 점점 대중화됨에 따라 점점 더 많은 프로그래머가 Go 언어를 배우기 시작하고 있으며 이 언어의 기능과 응용 기술을 익히기를 희망하고 있습니다. 그러나 기초가 전혀 없는 학습자에게는 Go 언어의 환경 구성이 학습의 첫 번째 장애물이 되는 경우가 많습니다. Go 언어를 배우기 전에 먼저 적합한 언어를 구축해야 합니다.

Go 로케일 설정을 위한 전체 가이드: 개발 환경 생성을 위한 연습 가이드 Go 로케일 설정을 위한 전체 가이드: 개발 환경 생성을 위한 연습 가이드 Feb 18, 2024 pm 10:26 PM

오픈 소스 프로그래밍 언어로서 Go 언어는 점점 더 많은 개발자들이 선호하고 있습니다. 단순성, 효율성 및 크로스 플랫폼 특성은 널리 호평을 받았습니다. Go 언어를 배우고 사용하기 전에 먼저 원활한 개발 작업을 수행하기 위한 환경 구성이 필요합니다. 이 문서에서는 포괄적인 Go 언어 환경 구성 가이드를 제공하고 Go 언어 개발을 쉽게 시작할 수 있도록 개발 환경을 설정하는 방법을 단계별로 설명합니다. 1. Go 언어 설치 먼저 최신 버전의 Go 언어를 다운로드하여 설치해야 합니다. Go 공식 홈페이지에서 확인하실 수 있습니다.

Python 개발자를 위한 필독서: PyCharm 환경 구성 가이드 Python 개발자를 위한 필독서: PyCharm 환경 구성 가이드 Feb 23, 2024 pm 01:57 PM

PyCharm은 많은 Python 개발자가 일반적으로 사용하는 IDE(통합 개발 환경)로 개발자가 Python 코드를 효율적으로 작성, 디버깅 및 테스트할 수 있도록 다양한 기능과 도구를 제공합니다. 개발에 PyCharm을 사용하기 전에 중요한 단계는 PyCharm 환경을 구성하는 것입니다. 이 문서에서는 Python 개발자에게 PyCharm 설치, Python 인터프리터 구성, 가상 환경 설정 등을 포함한 PyCharm 환경 구성 가이드를 제공합니다. 또한 도구도 함께 제공됩니다.

Maven 환경 구성 튜토리얼: 빠른 시작 구성 단계 Maven 환경 구성 튜토리얼: 빠른 시작 구성 단계 Feb 21, 2024 pm 07:57 PM

Maven 환경 구성 튜토리얼: 빠른 시작 구성 단계 Maven은 개발자가 자동으로 프로젝트 빌드, 종속성 관리, 테스트 실행 등을 수행하는 데 도움을 줄 수 있는 강력한 프로젝트 관리 도구입니다. Java 개발을 배우고 사용할 때 Maven 환경 구성은 필수 기술입니다. 이 글에서는 Maven 설치, 환경 변수 구성, 프로젝트 생성 등 일련의 단계를 포함하여 Maven 환경을 빠르게 구성하는 방법을 소개하고, 이해를 돕기 위해 구체적인 코드 예제를 제공합니다. 1단계: Mave 다운로드 및 설치

Mac 컴퓨터에서 Golang 개발 환경을 설정하고 설치하는 단계 Mac 컴퓨터에서 Golang 개발 환경을 설정하고 설치하는 단계 Feb 24, 2024 pm 04:30 PM

Mac 컴퓨터는 많은 개발자들이 선호하는 작업 플랫폼이며 효율적인 프로그래밍 언어인 Golang도 점점 더 많은 사람들에게 사랑을 받고 있습니다. 이 기사에서는 Mac 컴퓨터에서 Golang 개발 환경을 구성하고 설치하는 방법을 자세히 소개하고 독자가 Golang을 사용하여 빠르게 시작하고 개발하는 데 도움이 되는 구체적인 코드 예제를 제공합니다. 1단계: Golang 설치 패키지 다운로드 먼저 Golang 공식 웹사이트(https://golang.org/dl/)에서 Golang 설치 패키지를 다운로드해야 합니다.

See all articles