>  기사  >  운영 및 유지보수  >  Linux에서 고가용성 데이터베이스 클러스터를 구성하는 방법

Linux에서 고가용성 데이터베이스 클러스터를 구성하는 방법

WBOY
WBOY원래의
2023-07-05 08:10:461015검색

Linux에서 고가용성 데이터베이스 클러스터를 구성하는 방법

현대 인터넷 애플리케이션에서 데이터베이스는 매우 중요한 역할을 합니다. 데이터 신뢰성과 고가용성을 보장하기 위해 많은 회사에서는 고가용성 데이터베이스 클러스터를 구성합니다. 이 기사에서는 Linux에서 고가용성 데이터베이스 클러스터를 구성하여 데이터베이스에 장애가 발생하면 신속하게 대기 데이터베이스로 전환하여 애플리케이션의 지속적인 작동을 보장하는 방법을 소개합니다.

MySQL을 샘플 데이터베이스로 사용하여 Linux에서 고가용성 MySQL 데이터베이스 클러스터를 구성하는 방법을 보여 드리겠습니다.

  1. MySQL 설치

먼저 Linux에 MySQL을 설치해야 합니다. 다음 명령을 사용할 수 있습니다.

sudo apt-get install mysql-server
  1. 마스터-슬레이브 복제 구성

고가용성 데이터베이스 클러스터에서 마스터-슬레이브 복제는 일반적으로 데이터 동기화를 달성하는 데 사용됩니다. 이 모드에서는 하나의 데이터베이스 서버가 데이터 쓰기 및 업데이트를 담당하는 마스터 서버 역할을 하고, 다른 데이터베이스 서버는 마스터 서버의 데이터를 실시간으로 읽고 동기화하는 슬레이브 서버 역할을 합니다.

먼저 메인 서버에서 구성해야 합니다. MySQL 구성 파일 my.cnf를 편집하고 다음 구성을 찾아 수정합니다. my.cnf,找到并修改以下配置:

server-id=1
log_bin=mysql-bin
binlog_format=row

然后,重启MySQL服务。

接下来,在从服务器上进行配置。同样,需要编辑MySQL的配置文件my.cnf,找到并修改以下配置:

server-id=2
relay-log=mysql-relay-bin
log_slave_updates=1
read_only=1

然后,重启MySQL服务。

  1. 设置主从同步

现在,主从服务器已经成功配置好了,接下来需要设置主从同步。在主服务器上,使用以下命令创建一个用于同步的用户:

CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

然后,执行以下命令获取主服务器的二进制日志文件和位置:

SHOW MASTER STATUS;

得到的结果类似于:

+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.0001| 107       | test         |                  |
+---------------+----------+--------------+------------------+

接下来,在从服务器上执行以下命令开始进行主从同步:

CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='replication', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.0001', MASTER_LOG_POS=107;
START SLAVE;

在从服务器上执行以下命令查看主从同步状态:

SHOW SLAVE STATUSG

如果显示Slave_IO_RunningSlave_SQL_Running都为Yes,表示主从同步已成功设置。

  1. 配置主从切换

当主服务器出现故障时,需要手动切换到备用数据库。为了方便切换,可以使用Keepalived和HAProxy来实现自动切换。

首先,需要安装Keepalived和HAProxy。可以使用以下命令:

sudo apt-get install keepalived haproxy

然后,编辑Keepalived的配置文件/etc/keepalived/keepalived.conf,修改以下配置:

vrrp_script chk_mysql {
    script "killall -0 mysqld"
    interval 2
    weight -2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass your_password
    }
    track_script {
        chk_mysql
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
}

保存并关闭文件。

接下来,编辑HAProxy的配置文件/etc/haproxy/haproxy.cfg

listen mysql-cluster
    bind 192.168.1.100:3306
    mode tcp
    option mysql-check user haproxy_check
    balance roundrobin
    server mysql1 192.168.1.101:3306 check
    server mysql2 192.168.1.102:3306 check backup

그런 다음 MySQL 서비스를 다시 시작합니다.

다음으로 슬레이브 서버를 구성합니다. 마찬가지로 MySQL 구성 파일 my.cnf를 편집하고 다음 구성을 찾아 수정해야 합니다.

sudo service keepalived restart
sudo service haproxy restart

그런 다음 MySQL 서비스를 다시 시작합니다.

    마스터-슬레이브 동기화 설정

    🎜마스터-슬레이브 서버가 성공적으로 구성되었으므로 이제 마스터-슬레이브 동기화를 설정해야 합니다. 마스터 서버에서 다음 명령을 사용하여 동기화할 사용자를 생성합니다. 🎜rrreee🎜 그런 다음 다음 명령을 실행하여 바이너리 로그 파일과 마스터 서버의 위치를 ​​가져옵니다. 🎜rrreee🎜얻는 결과는 다음과 유사합니다. 🎜 rrreee🎜 다음으로 서버에서 다음 명령을 실행하여 마스터-슬레이브 동기화를 시작합니다. 🎜rrreee🎜슬레이브 서버에서 다음 명령을 실행하여 마스터-슬레이브 동기화 상태를 확인합니다. 🎜rrreee🎜Slave_IO_RunningSlave_SQL_Running이 표시됩니다. 둘 다 Yes이며 마스터-슬레이브 동기화가 성공적으로 설정되었음을 나타냅니다. 🎜
      🎜마스터-슬레이브 전환 구성🎜🎜🎜메인 서버에 장애가 발생하면 수동으로 대기 데이터베이스로 전환해야 합니다. 전환을 용이하게 하기 위해 Keepalived 및 HAProxy를 사용하여 자동 전환을 구현할 수 있습니다. 🎜🎜먼저 Keepalived와 HAProxy를 설치해야 합니다. 다음 명령을 사용할 수 있습니다: 🎜rrreee🎜 그런 다음 Keepalived 구성 파일 /etc/keepalived/keepalived.conf를 편집하고 다음 구성을 수정합니다. 🎜rrreee🎜파일을 저장하고 닫습니다. 🎜🎜다음으로 HAProxy 구성 파일 /etc/haproxy/haproxy.cfg를 편집하고 다음 구성을 추가합니다. 🎜rrreee🎜파일을 저장하고 닫습니다. 🎜🎜마지막으로 Keepalived 및 HAProxy 서비스를 다시 시작합니다. 🎜rrreee🎜 이제 기본 서버에 장애가 발생하면 Keepalived는 가상 IP 주소를 대기 데이터베이스로 전환하고 트래픽을 HAProxy로 전달합니다. 🎜🎜위 단계를 통해 Linux에서 고가용성 데이터베이스 클러스터를 성공적으로 구성했습니다. 데이터베이스 장애 시 시스템은 자동으로 대기 데이터베이스로 전환되어 데이터 신뢰성과 고가용성을 보장합니다. 이 기사가 고가용성 데이터베이스 클러스터를 구성하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 Linux에서 고가용성 데이터베이스 클러스터를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.