>  기사  >  운영 및 유지보수  >  Linux에서 고가용성 MySQL 컨테이너 클러스터를 구축하는 방법은 무엇입니까?

Linux에서 고가용성 MySQL 컨테이너 클러스터를 구축하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-08-01 10:13:15783검색

Linux에서 고가용성 MySQL 컨테이너 클러스터를 구축하는 방법은 무엇입니까?

클라우드 컴퓨팅과 컨테이너 기술의 등장으로 점점 더 많은 기업이 컨테이너를 사용하여 애플리케이션을 구축하기 시작했습니다. 가장 일반적으로 사용되는 관계형 데이터베이스 중 하나인 MySQL은 컨테이너화를 통해 고가용성을 달성할 수도 있습니다. 이 기사에서는 Linux에서 고가용성 MySQL 컨테이너 클러스터를 구축하는 방법을 소개하고 관련 코드 예제를 제공합니다.

1단계: 환경 준비

먼저 MySQL 컨테이너 클러스터를 구축하려면 Linux 호스트가 필요합니다. Docker 및 Docker Compose가 이 호스트에 설치되어 있는지 확인하세요. 설치되지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo apt-get install docker-compose

2단계: Docker 이미지 생성

다음으로 컨테이너를 실행할 MySQL 이미지를 생성해야 합니다. 이미지 구축 프로세스는 Dockerfile을 통해 정의할 수 있습니다. Dockerfile이라는 파일을 생성하고 그 안에 다음 콘텐츠를 추가합니다. Dockerfile的文件,并在其中添加以下内容:

FROM mysql:8.0

ENV MYSQL_ROOT_PASSWORD your_password
ENV MYSQL_DATABASE your_database

COPY your_script.sql /docker-entrypoint-initdb.d/

在上述代码中,your_password为MySQL的root用户密码,your_database为要创建的数据库名称,your_script.sql为要执行的初始化脚本文件。可以根据实际情况修改这些参数。

保存并退出文件后,使用以下命令来构建镜像:

$ sudo docker build -t your_image_name .

其中,your_image_name是你给镜像起的名称。

步骤三:创建Docker Compose文件

在搭建MySQL容器集群之前,需要创建一个docker-compose.yml文件来定义集群中的容器。创建一个名为docker-compose.yml的文件,并在其中添加以下内容:

version: '3'

services:
  mysql1:
    image: your_image_name
    restart: always
    ports:
      - 3306:3306
    volumes:
      - ./mysql1:/var/lib/mysql
    environment:
      - MYSQL_REPLICATION_MODE=master
      - MYSQL_REPLICATION_USER=repl_user
      - MYSQL_REPLICATION_PASSWORD=repl_password

  mysql2:
    image: your_image_name
    restart: always
    volumes:
      - ./mysql2:/var/lib/mysql
    environment:
      - MYSQL_REPLICATION_MODE=slave
      - MYSQL_MASTER_HOST=mysql1
      - MYSQL_MASTER_PORT=3306
      - MYSQL_MASTER_USER=repl_user
      - MYSQL_MASTER_PASSWORD=repl_password

在上述代码中,your_image_name是之前构建的MySQL镜像名称。mysql1mysql2分别表示两个MySQL容器的名称。MYSQL_REPLICATION_MODE参数设置容器的复制模式,master表示主节点,slave表示从节点。MYSQL_REPLICATION_USERMYSQL_REPLICATION_PASSWORD为复制用户的用户名和密码。MYSQL_MASTER_HOSTMYSQL_MASTER_PORT为主节点的地址和端口。MYSQL_MASTER_USERMYSQL_MASTER_PASSWORD为连接主节点的用户名和密码。

步骤四:启动容器集群

保存并退出文件后,使用以下命令来启动容器集群:

$ sudo docker-compose up -d

通过-d参数可使容器在后台运行。

步骤五:验证容器状态

使用以下命令可以查看容器的状态:

$ sudo docker-compose ps

可以看到容器的状态是running,表示容器运行正常。

步骤六:测试容器集群

现在,可以测试MySQL容器集群是否正常工作。首先,连接到MySQL容器的主节点,并创建一个测试数据库:

$ sudo docker exec -it mysql1 mysql -uroot -p
Enter password: your_password
mysql> CREATE DATABASE test;
mysql> EXIT;

然后,连接到从节点,并验证是否能够读取到主节点上的数据:

$ sudo docker exec -it mysql2 mysql -uroot -p
Enter password: your_password
mysql> USE test;
mysql> SELECT * FROM your_table;
mysql> EXIT;

其中,your_tablerrreee

위 코드에서 your_password는 MySQL의 루트 사용자 비밀번호인 your_database / code>는 생성할 데이터베이스 이름이고, <code>your_script.sql은 실행할 초기화 스크립트 파일이다. 이러한 매개변수는 실제 조건에 따라 수정될 수 있습니다.

파일을 저장하고 종료한 후 다음 명령을 사용하여 이미지를 빌드합니다.

rrreee

여기서 your_image_name은 이미지에 지정한 이름입니다. 🎜🎜3단계: Docker Compose 파일 생성🎜🎜MySQL 컨테이너 클러스터를 구축하기 전에 docker-compose.yml 파일을 생성하여 클러스터의 컨테이너를 정의해야 합니다. docker-compose.yml이라는 파일을 만들고 그 안에 다음 콘텐츠를 추가합니다. 🎜rrreee🎜위 코드에서 your_image_name은 이전에 빌드한 MySQL 이미지의 이름입니다. mysql1mysql2는 각각 두 개의 MySQL 컨테이너 이름을 나타냅니다. MYSQL_REPLICATION_MODE 매개변수는 컨테이너의 복제 모드를 설정하고, master는 마스터 노드를, slave는 슬레이브 노드를 나타냅니다. MYSQL_REPLICATION_USERMYSQL_REPLICATION_PASSWORD는 복제 사용자의 사용자 이름과 비밀번호입니다. MYSQL_MASTER_HOSTMYSQL_MASTER_PORT는 마스터 노드의 주소와 포트입니다. MYSQL_MASTER_USERMYSQL_MASTER_PASSWORD는 마스터 노드에 연결하기 위한 사용자 이름과 비밀번호입니다. 🎜🎜4단계: 컨테이너 클러스터 시작 🎜🎜파일을 저장하고 종료한 후 다음 명령을 사용하여 컨테이너 클러스터를 시작합니다. 🎜rrreee🎜-d 매개변수를 사용하여 컨테이너를 실행할 수 있습니다. 백그라운드에서. 🎜🎜5단계: 컨테이너 상태 확인 🎜🎜다음 명령을 사용하여 컨테이너 상태를 확인하세요. 🎜rrreee🎜컨테이너 상태가 running인 것을 확인할 수 있습니다. 이는 컨테이너가 실행 중임을 의미합니다. 보통. 🎜🎜6단계: 컨테이너 클러스터 테스트🎜🎜이제 MySQL 컨테이너 클러스터가 제대로 작동하는지 테스트할 수 있습니다. 먼저 MySQL 컨테이너의 마스터 노드에 연결하여 테스트 데이터베이스를 생성합니다: 🎜rrreee🎜 그런 다음 슬레이브 노드에 연결하여 마스터 노드의 데이터를 읽을 수 있는지 확인합니다: 🎜rrreee🎜 그 중 your_table code>는 기본 노드에 생성한 테이블의 이름입니다. 🎜🎜위 단계를 통해 가용성이 높은 MySQL 컨테이너 클러스터가 성공적으로 구축되었습니다. 마스터 노드의 데이터를 여러 슬레이브 노드에 복제함으로써 데이터 이중화 및 고가용성을 달성할 수 있습니다. 마스터 노드에 장애가 발생하면 슬레이브 노드에서 새로운 마스터 노드가 선출되어 계속해서 서비스를 제공할 수 있습니다. 🎜🎜이 기사가 Linux에서 가용성이 높은 MySQL 컨테이너 클러스터를 구축하는 데 도움이 되기를 바랍니다. 나는 당신의 성공을 기원합니다! 🎜

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

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