> 데이터 베이스 > MySQL 튜토리얼 > Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.

青灯夜游
풀어 주다: 2021-08-26 11:02:38
앞으로
2890명이 탐색했습니다.

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법은 무엇입니까? 다음 글에서는 Mysql5.7-master-slave 복제를 구축하는 단계를 소개하겠습니다. 필요한 친구들이 배울 수 있습니다~

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.

1. 개요

Master-slave 복제는 데이터베이스 백업 및 읽기를 실현할 수 있습니다. 쓰기 분리:

서비스 가용성을 방지하고 데이터의 보안과 신뢰성을 보장하려면 데이터베이스 데이터를 저장하기 위해 최소 두 개 이상의 서버를 배포해야 합니다. 즉, 데이터를 복사하여 서버에 배포해야 합니다. 여러 다른 서버 인터넷에서는 하나의 서버가 실패하더라도 다른 서버는 계속해서 서비스를 제공할 수 있습니다.
MySQL은 서비스 가용성과 데이터 보안 및 안정성을 향상시키기 위해 마스터-슬레이브 복제 기능을 제공합니다.
마스터-슬레이브 복제는 서버를 의미합니다. 마스터 서버와 서버에서 마스터 서버는 읽기와 쓰기를 담당하고, 슬레이브 서버는 읽기만 담당합니다. 마스터-슬레이브 복제를 마스터/슬레이브라고도 합니다. 슬레이브는 슬레이브이지만 필수는 아닙니다. 이는 슬레이브도 쓸 수 있고 마스터도 읽을 수 있다는 것을 의미하지만 일반적으로 우리는 이것을 하지 않습니다.

2. 마스터-슬레이브 복제 아키텍처

하나의 마스터와 다중 슬레이브 아키텍처:
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
다중 마스터와 다중 슬레이브 아키텍처:
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
마스터-슬레이브 복제 원칙:

  1. 데이터가 마스터 서버에서 변경 사항이 발생하면 변경 사항이 바이너리 이벤트 로그 파일에 기록됩니다.
  2. salve 슬레이브 서버는 특정 시간 간격 내에 마스터 서버의 바이너리 로그를 감지하여 마스터가 변경되었는지 여부를 감지합니다. 서버가 감지되면 서버는 수신된 바이너리 이벤트 로그를 로컬 릴레이 로그 파일에 저장합니다.
  3. salve 슬레이브 서버는 SQL Thread를 시작하여 릴레이 로그에서 바이너리 로그를 읽고 로컬에서 재생하여 데이터를 만듭니다.
  4. 마지막으로 I/O 스레드와 SQL 스레드는 절전 상태에 들어가고 다음에 깨어날 때까지 기다립니다.
  5. 3. 하나의 마스터와 다중 슬레이브 구성
빌딩 환경:

1. Linux 버전 CentOS 릴리스 6.9(최종)

2. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz다운로드 주소
1. mysql-5.7.26-linux-glibc2의 압축을 푼다. 12-x86_64.tar.gz1. Linux 版本 CentOS release 6.9 (Final)
2. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz下载地址

1.解压 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

#/usr/local下解压
tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#重命名文件
mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql
로그인 후 복사

2.创建多实例数据目录

cd /usr/local/mysql
mkdir data
cd data
#主
mkdir 3306
#从
mkdir 3307
로그인 후 복사

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
3.数据库初始化

#mysql 安装bin目录下执行
#initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空

#初始化3306
./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306 --user=mysql
#初始化3307
./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307 --user=mysql
로그인 후 복사

若出现错误执行
yum install libaio-devel.x86_64
yum -y install numactlMysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
4.创建各个数据库的配置文件my.cnf

注意:
1.建议在linux下创建文件防止windows 与 linux 编码不一致
2.不同的实例下配置要修改端口号
3.将修改好的my.cnf分别放至3306、3307文件夹内

[client]
port        = 3306
socket      = /usr/local/mysql/data/3306/mysql.sock
default-character-set=utf8

[mysqld]
port    = 3306
socket  = /usr/local/mysql/data/3306/mysql.sock
datadir = /usr/local/mysql/data/3306
log-error = /usr/local/mysql/data/3306/error.log
pid-file = /usr/local/mysql/data/3306/mysql.pid

character-set-server=utf8
lower_case_table_names=1
autocommit = 1

log-bin=mysql-bin
server-id=3306
로그인 후 복사

5.多实例启动

切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:

#其中 --defaults-file 是指定配置文件,& 符合表示后台启动
./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
로그인 후 복사

6.数据库初始化配置

分别在各个实例内进行配置 如3306:

#客户端连接
./mysql -uroot -p -P3306 -h127.0.0.1
#修改Mysql密码
alter user 'root'@'localhost' identified by 'root';
#授权远程访问(这样远程客户端才能访问)
grant all privileges on *.* to root@'%' identified by 'root';
#刷新配置
flush privileges;
로그인 후 복사

客户端连接测试
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
7.数据库唯一id配置

1.确定各个实例正常启动无误后进行主从配置
2.关闭实例分别在各个实例的my.cnf文件加入以下配置

#/usr/local/mysql/bin 关闭实例
./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown
./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown

#新加的配置
log-bin=mysql-bin   	#表示启用二进制日志
server-id=3307 		#表示server编号,编号要唯一 建议和端口保持一致
로그인 후 복사

加入完毕后启动各个实例

./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
로그인 후 복사

7.主机设置
1.在主服务器上创建复制数据的账号并授权

#在/usr/local/mysql/bin目录下执行 
 ./mysql -uroot -p -P3306 -h127.0.0.1
 grant replication slave on *.* to 'copy'@'%' identified by 'root';
로그인 후 복사

2.查看主服务器状态

# mysql主服务器默认初始值:
#			File:mysql-bin.000001
#			Position:154

show master status;
로그인 후 복사

3.如果主服务状态不是初始状态,需要重置状态

reset master;
로그인 후 복사

7.从机设置

1.需要登录到 3306|3307|3308的从机客户端

#在/usr/local/mysql/bin目录下执行  多台从机‘|’分隔
./mysql -uroot -p -P3308|3309|3310 -h127.0.0.1
로그인 후 복사

2.查看从机状态

#初始状态:Empty set 
show slave status;
로그인 후 복사

3.若不是初始状态,重置一下

stop slave; 	#停止复制,相当于终止从服务器上的IO和SQL线程
reset slave;
로그인 후 복사

4.设置从机设置主机配置

change master to 
master_host='主机ip',master_user='copy',
master_port=主机端口,master_password='连接主机密码',
master_log_file='mysql-bin.000001',master_log_pos=154;
로그인 후 복사

5.执行 开始复制命令

start slave;
로그인 후 복사

6.查看从机状态

show slave status \G;
로그인 후 복사
로그인 후 복사
🎜🎜2. 다중 인스턴스 데이터 디렉터리를 생성합니다🎜🎜
stop slave;
set global sql_slave_skip_counter =1;
start slave;
show slave status\G;
로그인 후 복사
로그인 후 복사
🎜여기에 그림 설명 삽입🎜🎜3. 데이터베이스 초기화🎜🎜
 slave-parallel-type=LOGICAL_CLOCK
 slave-parallel-workers=16
 master_info_repository=TABLE
 relay_log_info_repository=TABLE
 relay_log_recovery=ON
로그인 후 복사
로그인 후 복사
🎜오류가 발생하면 🎜yum을 실행하세요. libaio-devel.x86_64 설치🎜yum - y numactl 설치여기에 이미지 설명 삽입🎜 🎜4. 각 데이터베이스에 대해 my.cnf 구성 파일을 생성합니다🎜🎜🎜참고:🎜1. 다음을 수행하는 것이 좋습니다. Windows와 Linux 간의 코딩 불일치를 방지하기 위해 Linux에서 파일을 만듭니다.🎜 2. 다른 인스턴스를 구성할 때 포트 번호를 수정합니다.🎜3. 수정된 my.cnf를 3306 및 3307 폴더 각각🎜rrreee🎜🎜5. 여러 인스턴스 시작 🎜🎜🎜 /usr/local/mysql-5.7.24/bin 디렉터리로 전환하고, msyqld_safe 명령을 사용하여 구성 파일을 지정하고 MySQL 서비스: 🎜🎜rrreee🎜🎜6. 데이터베이스 초기화 구성 🎜🎜🎜 인스턴스 내에서 3306으로 구성:🎜rrreee🎜클라이언트 연결 테스트🎜여기에 그림 설명 삽입🎜🎜7. 데이터베이스 고유 ID 구성🎜🎜🎜1. 각 인스턴스가 정상적으로 시작되는지 확인하고 마스터-슬레이브 구성을 수행합니다🎜 2. 인스턴스를 닫고 각 인스턴스의 my.cnf 파일에 다음 구성을 추가합니다🎜rrreee🎜< code>각 인스턴스 추가 후 시작🎜rrreee🎜🎜7. 호스트 설정🎜🎜< code>1. 메인 서버에 데이터를 복제하기 위한 계정을 생성하고 권한을 부여합니다🎜rrreee🎜 2. 메인 서버 상태 확인🎜rrreee🎜3. 메인 서비스 상태가 초기 상태가 아닌 경우 상태를 재설정해야 합니다🎜rrreee🎜🎜7. 🎜🎜1.3306|3307|3308의 슬레이브 클라이언트에 로그인해야 합니다.🎜rrreee🎜2.슬레이브 상태를 확인하세요🎜rrreee🎜3. 초기 상태가 아니니 초기화🎜rrreee🎜4. 슬레이브 설정 및 호스트 구성🎜rrreee🎜 복사 시작 명령 실행🎜 rrreee🎜6. 슬레이브 상태 확인🎜
show slave status \G;
로그인 후 복사
로그인 후 복사

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
7.测试主从复制

在主数据库中进行创建表,从库同步就算搭建成功了!
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.
若你在从库进行写操作,则从服务器不再同步主库数据,在从库中执行此命令即可解决!

stop slave;
set global sql_slave_skip_counter =1;
start slave;
show slave status\G;
로그인 후 복사
로그인 후 복사

若主从复制速度较慢的话,执行此命令

 slave-parallel-type=LOGICAL_CLOCK
 slave-parallel-workers=16
 master_info_repository=TABLE
 relay_log_info_repository=TABLE
 relay_log_recovery=ON
로그인 후 복사
로그인 후 복사

相关学习推荐:mysql教程(视频)

위 내용은 Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법을 단계별로 알려드립니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿