찾다
데이터 베이스MySQL 튜토리얼mysql5.6.14主从复制(也称mysql AB复制)环境配置方法

一、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으로 문의하세요.
MySQL에 사용자 추가 : 완전한 튜토리얼MySQL에 사용자 추가 : 완전한 튜토리얼May 12, 2025 am 12:14 AM

MySQL 사용자를 추가하는 방법을 마스터하는 것은 데이터베이스 관리자 및 개발자가 데이터베이스의 보안 및 액세스 제어를 보장하기 때문에 데이터베이스 관리자 및 개발자에게 중요합니다. 1) CreateUser 명령을 사용하여 새 사용자를 만듭니다. 2) 보조금 명령을 통해 권한 할당, 3) FlushPrivileges를 사용하여 권한이 적용되도록하십시오.

MySQL 문자열 데이터 유형 마스터 링 : Varchar vs. Text vs. CharMySQL 문자열 데이터 유형 마스터 링 : Varchar vs. Text vs. CharMay 12, 2025 am 12:12 AM

ChooseCharfixed-lengthdata, varcharforvariable-lengthdata, andtextforlargetextfields.1) charisefficientsconsentent-lengthdatalikecodes.2) varcharsuitsvariable-lengthdatalikeNames, 밸런싱 플렉스 및 성능

MySQL : 문자열 데이터 유형 및 인덱싱 : 모범 사례MySQL : 문자열 데이터 유형 및 인덱싱 : 모범 사례May 12, 2025 am 12:11 AM

MySQL에서 문자열 데이터 유형 및 인덱스를 처리하기위한 모범 사례는 다음과 같습니다. 1) 고정 길이의 Char, 가변 길이의 Varchar 및 큰 텍스트의 텍스트와 같은 적절한 문자열 유형 선택; 2) 인덱싱에 신중하고, 과도한 인덱싱을 피하고, 공통 쿼리에 대한 인덱스를 만듭니다. 3) 접두사 인덱스 및 전체 텍스트 인덱스를 사용하여 긴 문자열 검색을 최적화합니다. 4) 인덱스를 작고 효율적으로 유지하기 위해 인덱스를 정기적으로 모니터링하고 최적화합니다. 이러한 방법을 통해 읽기 및 쓰기 성능의 균형을 맞추고 데이터베이스 효율성을 향상시킬 수 있습니다.

MySQL : 원격으로 사용자를 추가하는 방법MySQL : 원격으로 사용자를 추가하는 방법May 12, 2025 am 12:10 AM

Toaddauserremotelytomysql, 다음에 따르면 : 1) 1) ConnectTomysqlasRoot, 2) CreateEnewerwitHremoteAccess, 3) GrantNecessaryPrivileges 및 4) FlushPrivileges

MySQL 문자열 데이터 유형에 대한 최고의 안내서 : 효율적인 데이터 저장MySQL 문자열 데이터 유형에 대한 최고의 안내서 : 효율적인 데이터 저장May 12, 2025 am 12:05 AM

tostorestringsefficiallyInmysql, choOseTherightDatAtypeBasedOnyOURNEDS : 1) USECHARFIXED-lengthstringsLikeCountryCodes.2) UseVarCharForVariable-lengthstringsLikenames.3) USETEXTFORLONG-FORMTEXTCONTENT.4) USETEXTFORLONG-FORMTEXTCONTENT.4) USETLOBFORBINARYIMAGES

MySQL Blob 대 텍스트 : 큰 개체에 대한 올바른 데이터 유형 선택MySQL Blob 대 텍스트 : 큰 개체에 대한 올바른 데이터 유형 선택May 11, 2025 am 12:13 AM

MySQL의 블로브 및 텍스트 데이터 유형을 선택할 때 Blob은 이진 데이터를 저장하는 데 적합하며 텍스트는 텍스트 데이터를 저장하는 데 적합합니다. 1) Blob은 그림 및 오디오와 같은 이진 데이터에 적합합니다. 2) 텍스트는 기사 및 주석과 같은 텍스트 데이터에 적합합니다. 선택할 때는 데이터 속성 및 성능 최적화를 고려해야합니다.

MySQL : 내 제품에 루트 사용자를 사용해야합니까?MySQL : 내 제품에 루트 사용자를 사용해야합니까?May 11, 2025 am 12:11 AM

아니요, youshouthusTherootUserInmysqlforyOUrProduct.instead, createScificuserswithlimitedPrivilegestoEnhancesecurity 및 forcuments : 1) grantOnlySerypermissionStothisUser, 3) 정기적으로 재구성 한 사람들이 관리자입니다

MySQL 문자열 데이터 유형 설명 : 데이터에 대한 올바른 유형 선택MySQL 문자열 데이터 유형 설명 : 데이터에 대한 올바른 유형 선택May 11, 2025 am 12:10 AM

mysqlstringdatatatypess는 Bechosenbeasedondatacharacteristicsandusecases : 1) Usecharfixed-lengthstringslikecountryCodes.2) UseVarCharforVariable-lengthstringslikenames.3) UseBaryBarBarBaryBinaryDatalikeCryPyps.4) Usebortextforlargeuns

See all articles

핫 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

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

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경