찾다
데이터 베이스MySQL 튜토리얼Mysql复制(Replication)的实现_MySQL

bitsCN.com Mysql复制(Replication)的实现 个人需要做一个小工程,需要将3台Mysql服务器的数据进行同步操作,经过上网查资料,并进行了实际操作完成了基本构思。         首先准备了3台Centos6.2,搭配了Apache Mysql PHP 等基本Webserver配置         3台机分别是Master A:192.168.1.49                              Slave   B1:192.168.1.50                                     B2:192.168.1.51         我需要的环境是单向复制,从复制A的数据到B1和B2.令3台机的数据一致。 配置逻辑:     从高层来看,复制分成三步:    (1)    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);    (2)    slave将master的binary log events拷贝到它的中继日志(relay log);    (3)    slave重做中继日志中的事件,将改变反映它自己的数据。 开始配置:         第一步:创建复制帐号         每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATIONSLAVE权限。     用户名的密码都会存储在文本文件master.info中。假如,你想创建repl用户,如下:         1mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.*2-> TO repl@'192.168.1.%' IDENTIFIED BY '123456';    第二步:配置My.cnf     配置Master的My.cnf,该文件默认位置为/etc/my.cnf         接下来对master进行配置,包括打开二进制日志,指定唯一的servr ID。例如,在配置文件加入如下值:        [mysqld]        log-bin=mysql-bin        server-id=10         重启master,运行SHOW MASTER STATUS,输出如下:  Mysql复制(Replication)的实现_MySQL            配置Slave的My.cnf,该文件默认位置为/etc/my.cnf         Slave的配置与master类似,你同样需要重启slave的MySQL。如下:         log_bin = mysql-bin         server_id = 2            relay_log = mysql-relay-bin         log_slave_updates = 1         read_only = 1         server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。 relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。 
 有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。     第三步:启动slave         接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:1mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.49',2    -> MASTER_USER='repl',3    -> MASTER_PASSWORD='123456',4    -> MASTER_LOG_FILE='mysql-bin.000001',5    -> MASTER_LOG_POS=0;        MASTER_LOG_POS的值为0,因为它是日志的开始位置。然后,你可以用SHOW SLAVE STATUS语句查看slave的设置是否正确: 01mysql> SHOW SLAVE STATUS/G02*************************** 1. row ***************************03                 Slave_IO_State:04                Master_Host: server105                Master_User: repl06                Master_Port: 330607              Connect_Retry: 6008            Master_Log_File: mysql-bin.00000109        Read_Master_Log_Pos: 410             Relay_Log_File: mysql-relay-bin.00000111              Relay_Log_Pos: 412      Relay_Master_Log_File: mysql-bin.00000113           Slave_IO_Running: No14          Slave_SQL_Running: No15                             ...omitted...16      Seconds_Behind_Master: NULL        Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running表明slave还没有开始复制过程。日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。实际上,MySQL知道的第一个事件的位置是4。 为了开始复制,你可以运行: 01mysql> START SLAVE;02mysql> SHOW SLAVE STATUS/G03运行SHOW SLAVE STATUS查看输出结果:04*************************** 1. row ***************************05             Slave_IO_State: Waiting for master to send event06                    Master_Host: server107                Master_User: repl08                Master_Port: 330609              Connect_Retry: 6010            Master_Log_File: mysql-bin.00000111        Read_Master_Log_Pos: 16412             Relay_Log_File: mysql-relay-bin.00000113              Relay_Log_Pos: 16414      Relay_Master_Log_File: mysql-bin.00000115           Slave_IO_Running: Yes16          Slave_SQL_Running: Yes17                             ...omitted...18      Seconds_Behind_Master: 0注意,slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。 你可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接: 01mysql> show processlist /G02*************************** 1. row ***************************03     Id: 104   User: root05   Host: localhost:209606     db: test    07Command: Query08   Time: 009 State: NULL10   Info: show processlist11*************************** 2. row ***************************12     Id: 213   User: repl14   Host: localhost:214415     db: NULL16Command: Binlog Dump17   Time: 1838    18 State: Has sent all binlog to slave; waiting for binlog to be updated19   Info: NULL202 rows in set (0.00 sec)基本到这里就完成,至于后期的加强操作,我会在另行添加。 测试过程要主要的问题:1.请先配置好Mysql2.开通复制前请将Mysql的库和表的框架复制过去。(在测试一下能不能连表都复制过去!)   作者 Tingel bitsCN.com

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL과 다른 SQL 방언의 구문의 차이점은 무엇입니까?MySQL과 다른 SQL 방언의 구문의 차이점은 무엇입니까?Apr 27, 2025 am 12:26 AM

mysqldiffersfromothersqldialectsinsyntaxforlimit, 자동 점유, 문자열 comparison, 하위 쿼리 및 퍼포먼스 앤 알리 분석 .1) mysqluse Slimit, whilesqlSerVerusestOpandoracleSrownum.2) MySql'Sauto_incrementContrastSwithPostgresql'serialandoracle '

MySQL 파티셔닝이란 무엇입니까?MySQL 파티셔닝이란 무엇입니까?Apr 27, 2025 am 12:23 AM

MySQL 파티셔닝은 성능을 향상시키고 유지 보수를 단순화합니다. 1) 큰 테이블을 특정 기준 (예 : 날짜 범위)으로 작은 조각으로 나누고, 2) 데이터를 독립적 인 파일로 물리적으로 나눌 수 있습니다.

MySQL에서 어떻게 권한을 부여하고 취소합니까?MySQL에서 어떻게 권한을 부여하고 취소합니까?Apr 27, 2025 am 12:21 AM

MySQL에서 권한을 부여하고 취소하는 방법은 무엇입니까? 1. 보조금 명세서를 사용하여 grantallprivilegesondatabase_name.to'username'@'host '와 같은 부여 권한; 2. Revoke 문을 사용하여 Revokeallprivilegesondatabase_name.from'username'@'host '와 같은 권한을 취소하여 허가 변경의 적시에 의사 소통을 보장하십시오.

InnoDB와 MyISAM 스토리지 엔진의 차이점을 설명하십시오.InnoDB와 MyISAM 스토리지 엔진의 차이점을 설명하십시오.Apr 27, 2025 am 12:20 AM

InnoDB는 거래 지원 및 높은 동시성이 필요한 응용 프로그램에 적합한 반면, MyISAM은 더 많은 읽기와 덜 쓰는 응용 프로그램에 적합합니다. 1. INNODB는 전자 상거래 및 은행 시스템에 적합한 거래 및 은행 수준의 자물쇠를 지원합니다. 2. Myisam은 블로깅 및 컨텐츠 관리 시스템에 적합한 빠른 읽기 및 색인을 제공합니다.

MySQL의 다른 유형의 조인은 무엇입니까?MySQL의 다른 유형의 조인은 무엇입니까?Apr 27, 2025 am 12:13 AM

MySQL에는 Innerjoin, Leftjoin, RightJoin 및 FullouterJoin의 네 가지 주요 조인 유형이 있습니다. 1. 결합 조건을 충족하는 두 테이블의 모든 행을 반환합니다. 2. Leftjoin 오른쪽 테이블에 일치하는 행이 없더라도 왼쪽 테이블의 모든 행을 반환합니다. 3. RightJoin은 LeftJoin과 상반되며 오른쪽 테이블의 모든 행을 반환합니다. 4. FULLOUTERNOIN은 조건을 충족 시키거나 충족하지 않는 두 테이블의 모든 행을 반환합니다.

MySQL에서 사용 가능한 다른 스토리지 엔진은 무엇입니까?MySQL에서 사용 가능한 다른 스토리지 엔진은 무엇입니까?Apr 26, 2025 am 12:27 AM

mysqloffersvariousStorageEngines, 각각의 everitedforentUsecases : 1) innodbisidealforapplicationsneedingAcidCoInceandHighConcurrency, 지원 트랜잭션 및 foreignKeys.2) myIsAmisbestforread-heverworkloads, memoryengineis

MySQL의 일반적인 보안 취약점은 무엇입니까?MySQL의 일반적인 보안 취약점은 무엇입니까?Apr 26, 2025 am 12:27 AM

MySQL의 일반적인 보안 취약점에는 SQL 주입, 약한 암호, 부적절한 권한 구성 및 업데이트되지 않은 소프트웨어가 포함됩니다. 1. 전처리 명령문을 사용하여 SQL 주입을 방지 할 수 있습니다. 2. 강력한 비밀번호 전략을 사용하여 약한 암호는 피할 수 있습니다. 3. 정기적 인 검토 및 사용자 권한 조정을 통해 부적절한 권한 구성을 해결할 수 있습니다. 4. Unupdated 소프트웨어는 MySQL 버전을 정기적으로 확인하고 업데이트하여 패치 할 수 있습니다.

MySQL에서 느린 쿼리를 어떻게 식별 할 수 있습니까?MySQL에서 느린 쿼리를 어떻게 식별 할 수 있습니까?Apr 26, 2025 am 12:15 AM

느린 쿼리 로그를 활성화하고 임계 값을 설정하여 MySQL에서 느린 쿼리를 식별 할 수 있습니다. 1. 느린 쿼리 로그를 활성화하고 임계 값을 설정하십시오. 2. 느린 쿼리 로그 파일을보고 분석하고 심층 분석을 위해 MySQLDumpSlow 또는 PT-Query 소수성과 같은 도구를 사용하십시오. 3. 인덱스 최적화, 쿼리 재 작성 및 select*의 사용을 피함으로써 느린 쿼리 최적화를 달성 할 수 있습니다.

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

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!