>  기사  >  데이터 베이스  >  GTID 마스터-슬레이브 구성을 기반으로 한 MySQL의 요약 및 배열

GTID 마스터-슬레이브 구성을 기반으로 한 MySQL의 요약 및 배열

WBOY
WBOY앞으로
2022-08-26 11:56:332458검색

추천 학습: mysql 비디오 튜토리얼

xtarbackup을 사용하여 데이터를 동기화한 다음 GTID를 기반으로 마스터와 슬레이브를 설정합니다.

1. xtarbackup을 사용하여 데이터베이스 백업

1.1 장점

xtarbackup은 데이터를 매우 빠르게 백업하고 복원하므로 마스터와 슬레이브의 사전 준비에 xtarbackup을 사용합니다. 이는 특히 대용량 데이터베이스 백업에 적합합니다. 데이터가 있고 설치가 매우 빠릅니다. 간단하고 사용하기 쉽습니다.... (말도 안 돼요, 말도 안 돼요).

1.2 설치

특정 상황에 따라 특정 버전을 선택하세요. 다음 단계에 따라 설치하세요. 매우 간단하지 않나요...

# rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm
# yum list | grep percona
# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL 
# rpm -Uvh ftp://rpmfind.net/linux/epel/6/x86_64/libev-4.03-3.el6.x86_64.rpm
# yum install percona-xtrabackup –y

1.3

1.3.1 일반 백업

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backupMysql/

1.3.2 tar 백업

(1)을 사용하고 로컬에 백업

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/>/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | gzip >/data/mysql.tar.gz

(2), 원격으로 백업

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | ssh root@192.168.1.7 \ "cat - >/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz

(3), 압축 해제 방법

# 未经过压缩的文件解压
tar xvf mysql.tar -C /data

# 压缩过的文件解压
tar zxvf mysql.tar.gz -C /data

1.3.3 xbstream 백업

(1), 로컬로 백업

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/>/data/mysql.xbstream

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ >/data/mysql_compress.xbstream

(2), 백업 원격으로 진행해야 합니다

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/| ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ | ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

(3), 압축 해제 방법

#### 未压缩的
xbstream -x < mysql.xbstream -C /data

#### 压缩过的
# 1、先解压xbstream
xbstream -x < mysql_compress.xbstream -C /data
# 2、再解压qp压缩格式
for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done

注:如果xtrabackup版本大于2.1.4,可以直接通过以下方式解压第二步。
innobackupex --decompress /data

1.3.4 복원

먼저 원본 백업 압축 패키지를 디렉터리에 압축 해제한 후 다음 명령문을 실행하여 복원합니다.

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /var/lib/mysql/backup/

참고: 백업, 압축 해제 및 복구 과정에서 분할 화면 도구를 사용할 수 있습니다. 저는 화면을 사용하는 것을 좋아합니다.

2. GTID 기반 데이터 동기화

2.1 GTID의 개념

  • 1. 글로벌 트랜잭션 식별자: 글로벌 트랜잭션 식별자.
  • 2. GTID는 거래에 대한 일대일 대응이며 전역적으로 고유한 ID입니다.
  • 3. GTID는 반복 실행으로 인한 데이터 혼란이나 마스터-슬레이브 불일치를 방지하기 위해 서버에서 한 번만 실행됩니다.
  • 4. GTID는 기존 복제 방법을 대체하는 데 사용되며 MASTER_LOG_FILE+MASTER_LOG_POS는 더 이상 복제를 활성화하는 데 사용되지 않습니다. 대신 MASTER_AUTO_POSTION=1을 사용하여 복사를 시작하세요.
  • 5. MySQL-5.6.5부터 지원되며 MySQL-5.6.10 이후에는 개선될 예정입니다.
  • 6. 기존 슬레이브 측에서는 binlog를 활성화할 필요가 없지만, GTID에서는 실행된 GTID를 기록하기 위해 슬레이브 측의 binlog를 활성화해야 합니다(필수).

2.2 GTID 구성

GTID = source_id:transaction_id source_id: 원본 서버, 즉 mysql 서버의 고유한 server_uuid를 식별하는 데 사용됩니다. GTID는 슬레이브에 전달되므로 다음과 같이 이해될 수도 있습니다. 소스 ID입니다.

transaction_id: 현재 서버에 제출된 트랜잭션의 시퀀스 번호입니다. 일반적으로 1부터 시작하여 자체 증가하는 시퀀스입니다. 하나의 값은 하나의 트랜잭션에 해당합니다.

예: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 첫 번째 문자열은 서버의 server_uuid, 즉 3E11FA47-71CA-11E1-9E33-C80AA9429562이고 마지막 23은 transaction_id입니다

2.3 원리 GTID

1. 메인 라이브러리 측에서 트랜잭션이 실행되어 제출되면 GTID가 생성되어 binlog에 기록됩니다.

2. binlog가 슬레이브로 전송되어 슬레이브의 Relaylog에 저장된 후 GTID 값을 읽고 슬레이브에 실행할 다음 GTID 값을 알려주는 gtid_next 변수를 설정합니다.

3. SQL 스레드는 릴레이 로그에서 GTID를 얻은 다음 슬레이브 측의 binlog를 비교하여 GTID가 존재하는지 확인합니다.

4. 기록이 있으면 GTID의 트랜잭션이 실행되었음을 의미하며 슬레이브는 이를 무시합니다.

5. 기록이 없으면 슬레이브는 GTID 트랜잭션을 실행하고 GTID를 자체 binlog에 기록합니다. 트랜잭션을 읽고 실행하기 전에 먼저 다른 세션이 GTID를 보유하고 있는지 확인하여 실행되지 않는지 확인합니다. 자꾸.

6. 파싱 과정에서 기본 키가 있는지 판단합니다. 없으면 보조 인덱스를 사용합니다.

2.4 GTID의 장점

  • 1. 더 쉬운 장애 조치 구현, 이전처럼 log_file 및 log_pos를 찾을 필요가 없습니다.
  • 2. 마스터-슬레이브 복제 구축이 더 쉬워졌습니다.
  • 3. 기존 복사보다 더 안전합니다.
  • 4. GTID는 구멍 없이 연속되어 데이터 일관성과 손실이 없습니다.

2.5 특정 구성 프로세스

GTID 구성은 주로 구성 파일에서 GTID 기능과 관련된 몇 가지 중요한 매개변수를 수정하는 것입니다. mysql 버전은 mysql-5.6.5 이상을 권장합니다.

2.5.1 마스터 Gtid 열기

기본 구성은 다음과 같습니다.

[mysqld]
#GTID:
server_id=135                #服务器id
gtid_mode=on                 #开启gtid模式
enforce_gtid_consistency=on  #强制gtid一致性,开启后对于特定create table不被支持

#binlog
log_bin=master-binlog
log-slave-updates=1    
binlog_format=row            #强烈建议,其他格式可能造成数据不一致

#relay log
skip_slave_start=1

2.5.2 마스터에 데이터 백업

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz

2.5.3 백업된 데이터 압축 풀기

tar zxvf /data/mysql.tar.gz -C /data/baskup

2.5.4 구성 슬레이브 구성 파일

[mysqld]
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=143

#binlog
log-bin=slave-binlog
log-slave-updates=1
binlog_format=row      #强烈建议,其他格式可能造成数据不一致

#relay log
skip_slave_start=1

2.5.5 데이터 복구

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /data/backup

2.5.6 GTID 노드 가져오기

more /data/backup/2018-02-08_15-03-18/xtrabackup_binlog_info

2.5.7 마스터-슬레이브 구성

(1), master

grant replication slave on *.* to slaveuser@&#39;192.168.1.7&#39;  identified by "c2xhdmV1c2Vy";

(2)에서 승인 슬레이브 구성

stop slave;
SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758";
CHANGE MASTER TO MASTER_HOST=&#39;192.168.1.6&#39;,MASTER_PORT=3306,MASTER_USER=&#39;slaveuser&#39;,MASTER_PASSWORD=&#39;c2xhdmV1c2Vy&#39;,MASTER_AUTO_POSITION=1;
start slave;

2.6 已运行经典复制mysql服务器转向GTID复制

  • a、按本文2.5.2描述配置参数文件;
  • b、所有服务器设置global.read_only参数,等待主从服务器同步完毕;  mysql> SET @@global.read_only = ON;
  • c、依次重启主从服务器;
  • d、使用change master 更新主从配置;mysql> CHANGE MASTER TO > MASTER_HOST = host,  > MASTER_PORT = port, > MASTER_USER = user,   > MASTER_PASSWORD = password,   > MASTER_AUTO_POSITION = 1;
  • e、从库开启复制  mysql> START SLAVE; f、验证主从复制

推荐学习:mysql视频教程

위 내용은 GTID 마스터-슬레이브 구성을 기반으로 한 MySQL의 요약 및 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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