>  기사  >  데이터 베이스  >  Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법에 대한 간략한 설명은 무엇입니까?

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법에 대한 간략한 설명은 무엇입니까?

青灯夜游
青灯夜游앞으로
2021-09-06 18:58:382278검색

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법은 무엇입니까? 다음 문서에서는 Mysql5.7에서 마스터-슬레이브 복제를 구축하는 단계를 안내합니다. 도움이 되기를 바랍니다.

Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법에 대한 간략한 설명은 무엇입니까?

1. 개요

마스터-슬레이브 복제는 데이터베이스 백업 및 읽기-쓰기 분리를 실현할 수 있습니다.

서비스 가용성을 방지하고 데이터의 보안과 신뢰성을 보장하려면 배포가 필요합니다. 데이터베이스 데이터를 저장하려면 최소 두 개 이상의 서버, 즉 데이터를 복사하여 여러 다른 서버에 배포해야 합니다. 한 서버가 실패하더라도 다른 서버는 계속해서 서비스를 제공할 수 있습니다. 서비스 가용성과 데이터 보안 및 신뢰성을 향상시키는 슬레이브 복제 기능

마스터-슬레이브 복제는 서버가 마스터 서버와 슬레이브 서버로 나누어져 읽기 및 쓰기를 담당하고 슬레이브 서버는 읽기만 담당한다는 의미입니다. 마스터-슬레이브 복제는 마스터/슬레이브라고도 하며 마스터는 마스터이고 슬레이브는 슬레이브이지만 필수는 아닙니다. 즉, 슬레이브도 쓸 수 있고 마스터도 읽을 수 있습니다. 읽어보세요. 하지만 일반적으로 우리는 이렇게 하지 않습니다. [관련 권장사항:

mysql 동영상 튜토리얼]

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

하나의 마스터와 다중 슬레이브 아키텍처:
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법에 대한 간략한 설명은 무엇입니까?
다중 마스터 및 다중 슬레이브 아키텍처:
Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법에 대한 간략한 설명은 무엇입니까?
마스터 -슬레이브 복제 원칙 :

    마스터 서버의 데이터가 변경되면 변경 사항이 바이너리 이벤트 로그 파일에 기록됩니다.
  1. salve 슬레이브 서버는 특정 시간 간격 내에 마스터 서버의 바이너리 로그를 감지합니다. 감지 변경 여부 마스터 서버의 바이너리 이벤트 로그가 변경된 것으로 감지되면 I/O 스레드가 시작되어 마스터 바이너리 이벤트 로그를 요청합니다
  2. 동시에 마스터 서버는 덤프 스레드를 시작합니다. 각 I/O 스레드에 대해 바이너리 이벤트 로그를 보내는 데 사용됩니다.
  3. 슬레이브 서버는 수신된 바이너리 이벤트 로그를 자체 로컬 릴레이 로그 파일에 저장합니다.
  4. salve 슬레이브 서버는 바이너리 로그를 읽기 위해 SQL 스레드를 시작합니다. 데이터를 메인 서버와 일치시키기 위해 로컬에서 재생합니다.
  5. 마지막으로 I/O 스레드와 SQL 스레드는 절전 상태에 들어가고 다음 번에 깨어나기를 기다립니다.
3. 하나의 마스터와 여러 개 슬레이브 설정

빌드 환경: 1. Linux 버전 CentOS 릴리스 6.9(최종)
2.mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 주소 다운로드1. 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.设置从机设置主机配置

🎜1 .unzip mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz🎜🎜
change master to 
master_host='主机ip',master_user='copy',
master_port=主机端口,master_password='连接主机密码',
master_log_file='mysql-bin.000001',master_log_pos=154;
🎜🎜2 멀티 인스턴스 데이터 디렉토리 생성🎜🎜
start slave;
🎜여기에 이미지 설명 삽입🎜🎜3 데이터베이스 초기화🎜🎜
show slave status \G;
🎜 오류가 발생하면 🎜yum install libaio-devel .x86_64🎜yum -y install numactl여기에 그림 설명 삽입🎜🎜4. 각 데이터베이스에 대해 my.cnf 구성 파일을 만듭니다🎜🎜🎜참고:🎜 1. Windows가 Linux 인코딩과 일치하지 않도록 하려면 Linux에서 파일을 생성하는 것이 좋습니다.🎜2. 다른 인스턴스 구성에서 포트 번호를 수정하세요.🎜3. my.cnf를 각각 3306 및 3307 폴더로 수정했습니다.🎜<pre class="brush:js;toolbar:false;">stop slave; set global sql_slave_skip_counter =1; start slave; show slave status\G;</pre>🎜🎜5. 다중 인스턴스 시작🎜🎜<code>/usr/local/mysql-5.7.24/bin 디렉토리로 전환하고 msyqld_safe를 사용합니다. 구성 파일을 지정하고 MySQL 서비스를 시작하는 명령:🎜
 slave-parallel-type=LOGICAL_CLOCK
 slave-parallel-workers=16
 master_info_repository=TABLE
 relay_log_info_repository=TABLE
 relay_log_recovery=ON
🎜🎜6. 데이터베이스 초기화 구성🎜🎜각 인스턴스에서 각각 구성(예: 3306):🎜rrreee🎜 클라이언트 연결 테스트🎜여기에 그림 설명 삽입🎜 🎜7. 데이터베이스 고유 ID 구성🎜🎜🎜1. 각 인스턴스가 정상적으로 시작되는지 확인하고 마스터-슬레이브 구성을 수행합니다.🎜2. 인스턴스를 닫고 my.conf에 다음 구성을 추가합니다. 각 인스턴스의 cnf 파일🎜rrreee🎜추가 완료 후 각 인스턴스 시작 예시🎜rrreee🎜🎜7. 호스트 설정🎜🎜1. 메인 서버를 인증하고🎜rrreee🎜2. 메인 서버 상태를 확인하세요🎜rrreee🎜3. 메인 서비스 상태가 초기 상태가 아닌 경우에는 상태를 확인해야 합니다. 재설정🎜rrreee🎜🎜7. 슬레이브 머신 설정🎜🎜 1.3306|3307|3308 슬레이브 클라이언트에 로그인해야 합니다🎜rrreee🎜2. 🎜rrreee🎜3. 초기상태가 아니면 재설정🎜rrreee🎜 4. 슬레이브 머신 설정 및 호스트 구성 설정🎜
change master to 
master_host=&#39;主机ip&#39;,master_user=&#39;copy&#39;,
master_port=主机端口,master_password=&#39;连接主机密码&#39;,
master_log_file=&#39;mysql-bin.000001&#39;,master_log_pos=154;

5.执行 开始复制命令

start slave;

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

更多编程相关知识,请访问:编程入门!!

위 내용은 Mysql5.7에서 마스터-슬레이브 복제를 설정하는 방법에 대한 간략한 설명은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제