MySQL 시리즈 의 14 MySQL 의 높 은 사용 가능 한 구현
메 인 노드 를 감시 하면 자동 고장 이 다른 노드 로 이전 되 는 것 을 실현 할 수 있다.특정한 노드 를 새로운 메 인 노드 로 향상 시 키 고 메 인 복 제 를 바탕 으로 실현 되 며 클 라 이언 트 의 협조 가 필요 하 다.현재 MHA 는 주로 메 인 다 중 구 조 를 지원 하고 MHA 를 구축 하려 면 복사 클 러 스 터 에 최소 세 대의 데이터 베이스 서버 가 있어 야 한다.하 나 는 메 인 2 종,즉 하 나 는 master 를 충당 하고 하 나 는 예비 master 를 충당 하 며 다른 하 나 는 라 이브 러 리 를 충당 해 야 한다.
1.MHA 작업 원리
MHA 소프트웨어 는 두 부분 으로 구성 되 어 있 으 며 Manager 공구 꾸러미 와 Node 공구 꾸러미 이다.
Manager 공구 꾸러미 는 주로 다음 과 같은 몇 가지 도 구 를 포함한다.
masterha_check_ssh MHA 의 SSH 설정 상황 검사 masterhacheck_repl MySQL 복사 상태 확인 masterhamanger 시동 MHAmasterhacheck_status 현재 MHA 운행 상태 masterha 검출master_모니터 마스터 가 다운 되 었 는 지 확인 masterhamaster_switch 고장 이전(자동 또는 수 동)masterhaconf_host 설정 한 server 정 보 를 추가 하거나 삭제 합 니 다.
Node 패키지:이 도구 들 은 보통 MHA Manager 의 스 크 립 트 에 의 해 작 동 되 며 인위적인 조작 이 필요 없습니다.
save_binary_logs master 의 바 이 너 리 로그 저장 및 복사 applydiff_relay_logs 차이 점 을 식별 하 는 중계 로그 이벤트 및 차이 점 을 다른 slavefilter 에 적용 합 니 다.mysqlbinlog 불필요 한 ROLLBACK 이벤트 제거(MHA 는 이 도 구 를 사용 하지 않 습 니 다)purgerelay_logs 중계 로그 지우 기(SQL 스 레 드 를 막 지 않 음)
알림:메 인 라 이브 러 리 하드웨어 손상 지연 으로 인 한 데이터 손실 을 최대한 줄 이기 위해 MHA 를 설정 하 는 동시에 MySQL 5.5 의 반 동기 복사 로 설정 하 는 것 을 권장 합 니 다.
사용자 정의 확장:
secondary_check_script:여러 네트워크 를 통 해 master 의 가용성 master 를 검색 합 니 다.ip_ailover_script:응용 프로그램 업데이트 에 사용 되 는 masteripshutdownscript:master 노드 report 강제 닫 기script:보고서 보 내기 initconf_load_script:초기 설정 파라미터 master 불 러 오기ip_online_change_script:master 노드 ip 주소 업데이트
다운로드 주소:https://code.google.com/archive/p/mysql-master-ha/downloads
3.MHA 의 실현
환경:비밀 키 인증 기반,참고:https://www.cnblogs.com/L-dongf/p/9058265.html,시간 동기 화,실행:ntpdate cn.pool.ntp.org
1)관리자 노드
[root@manager ~]# yum install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm -y # mha
[root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.7:
[root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.8:
[root@manager ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm 192.168.0.9:
[root@manager ~]# mkdir /etc/mha/
[root@manager ~]# vim /etc/mha/cluster1.cnf
[server default]
user=mhauser
password=mhapass
manager_workdir=/data/mastermha/cluster1/
manager_log=/data/mastermha/cluster1/manager.log
remote_workdir=/data/mastermha/cluster1/
ssh_user=root
repl_user=repluser
repl_password=replpass
ping_interval=1 #
[server1]
hostname=192.168.0.7
candidate_master=1 #
[server2]
hostname=192.168.0.8
candidate_master=1 #
[server3]
hostname=192.168.0.9
[root@manager ~]# masterha_check_ssh --conf=/etc/mha/cluster1.cnf # ssh
All SSH connection tests passed successfully.
[root@manager ~]# masterha_check_repl --conf=/etc/mha/cluster1.cnf # MySQL
MySQL Replication Health is OK.
[root@manager ~]# yum install screen -y
[root@manager ~]# screen -S mha #mha ,
[root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf #
2)마스터 노드
[root@master ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y # node
[root@master ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin
binlog_format=row
skip_name_resolve
[root@master ~]# systemctl start mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass'; # ,
MariaDB [(none)]> SHOW MASTER LOGS;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 401 |
+--------------------+-----------+
MariaDB [(none)]> GRANT ALL ON *.* TO mhauser@'192.168.0.%' IDENTIFIED BY 'mhapass'; # mha ,
3)슬 레이 브 노드
[root@slave ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y
[root@slave ~]# vim /etc/my.cnf
[mysqld]
read_only=1
log_bin
binlog_format=row
server_id=2
relay_log_purge=0
skip_name_resolve=1
[root@slave ~]# systemctl start mariadb
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO repluser@'192.168.0.%' IDENTIFIED BY 'replpass';
MariaDB [(none)]> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.7', # 0.7
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='replpass',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mariadb-bin.000001',
-> MASTER_LOG_POS=401,
-> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;
4)슬 레이 브 2 노드
[root@slave2 ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y
[root@slave2 ~]# vim /etc/my.cnf
[mysqld]
server_id=3
read_only=1
relay_log_purge=0
skip_name_resolve=1
[root@slave2 ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.7',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='replpass',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mariadb-bin.000001',
-> MASTER_LOG_POS=401,
-> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;
4)테스트master 의 서비스 정지:[root@master ~]# systemctl stop mariadb
slave 2 에서 실행:MariaDB[(none)]>SHOW SLAVE STATUS\G 명령,MasterServer_Id: 2
설명:전환 성공
4.MHA 모니터링 재 접속
master ,
[root@master ~]# systemctl start mariadb
MariaDB [(none)]> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.8', # 0.8
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='replpass',
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE='mariadb-bin.000001',
-> MASTER_LOG_POS=482,
-> MASTER_CONNECT_RETRY=10;
MariaDB [(none)]> START SLAVE;
:
[root@manager ~]# screen -S mha
[root@manager ~]# masterha_manager --conf=/etc/mha/cluster1.cnf #
2.갤러리 클 러 스 터Galera Cluster:Galera 플러그 인 을 통합 한 MySQL 클 러 스 터 는 새로운 것 으로 데이터 가 공유 되 지 않 고 고도 로 지루 한 사용 가능 한 방안 입 니 다.현재 Galera Cluster 는 두 가지 버 전이 있 는데 그것 이 바로 Percona Xtradb Cluster 와 MariaDB Cluster 입 니 다.Galera 자체 가 여러 가지 특징 을 가지 고 있 습 니 다.즉,multi-master 의 클 러 스 터 구 조 를 사용 하여 안정 적 이면 서도 데이터 일치 성,완전 성과 고성능 방면 에서 뛰어난 활약 을 보 이 는 고가 용 해결 방안
세 개의 노드 는 하나의 군집 을 구성 했다.일반적인 주종 구조 와 달리 이들 은 모두 메 인 노드 로 할 수 있다.세 개의 노드 는 대등한 것 으로 multi-master 구조 라 고 부른다.클 라 이언 트 가 데 이 터 를 쓰 거나 읽 으 려 고 할 때 어느 인 스 턴 스 를 연결 하 든 똑 같 고 읽 은 수 거 는 같다.특정한 노드 를 기록 한 후에클 러 스 터 자체 가 새로운 데 이 터 를 다른 노드 에 동기 화 할 것 이다.이런 구 조 는 어떠한 데이터 도 공유 하지 않 고 지루 한 구조 이다.
특성:
공식 문서 참조:
http://galeracluster.com/documentation-webpages/galera-documentation.pdf
http://galeracluster.com/documentation-webpages/index.html
https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/
최소 세 대의 노드 가 필요 합 니 다.mariadb-server 패 키 지 를 설치 할 수 없고 특정한 패 키 지 를 설치 해 야 합 니 다.
Galera Cluster 의 실현
청 화 개원 미 러 소스:https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/
# vim /etc/yum.repos.d/mariadb_galera_server.repo
[mariadb]
name=mariadb_galera_server.repo
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/
gpgcheck=0
# yum install MariaDB-Galera-server -y
1)mysql-1
[root@mysql-1 ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9" # IP
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name='my_wsrep_cluster'
wsrep_node_name='node1'
wsrep_node_address='192.168.0.7'
2)mysql-2
[root@mysql-2 ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name='my_wsrep_cluster'
wsrep_node_name='node2'
wsrep_node_address='192.168.0.8'
3)mysql-3
[root@mysql-3 ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.0.7,192.168.0.8,192.168.0.9"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name='my_wsrep_cluster'
wsrep_node_name='node3'
wsrep_node_address='192.168.0.9'
4)시동
[root@mysql-1 ~]# /etc/init.d/mysql start --wsrep-new-cluster #
[root@mysql-2 ~]# /etc/init.d/mysql start #
[root@mysql-3 ~]# /etc/init.d/mysql start
5)테스트모든 노드 에서 데이터 베 이 스 를 조작 하고 다른 노드 는 동기 화 작업 을 합 니 다.같은 기록 을 동시에 조작 하면 한 노드 만 성공 합 니 다.
6)작업 상태 확인
MariaDB [(none)]> SHOW VARIABLES LIKE 'wsrep_%'\G
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_%'\G
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 | #
+--------------------+-------+
여기에 MySQL 시리즈 의 14 MySQL 의 높 은 사용 가능 한 실현 에 관 한 글 을 소개 합 니 다.더 많은 MySQL 의 높 은 사용 가능 한 실현 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.