검색

3.2.6. MySQL 복제 사용

download PDF
참고

데이터베이스 이미지에 대한 클러스터링을 활성화하기 위한 구성은 예제로 제공되며 프로덕션용이 아닙니다.

Red Hat은 MySQL 마스터 슬레이브 복제(클러스터링)에 대한 개념 증명 템플릿을 제공합니다. GitHub에서 예제 템플릿 을 가져올 수 있습니다.

예제 템플릿을 현재 프로젝트의 템플릿 라이브러리에 업로드하려면 다음을 수행합니다.

$ oc create -f \
    https://raw.githubusercontent.com/sclorg/mysql-container/master/examples/replica/mysql_replica.json

다음 섹션에서는 예제 템플릿에 정의된 개체를 자세히 설명하고 마스터 슬레이브 복제를 구현하는 MySQL 서버 클러스터를 시작하기 위해 함께 작동하는 방법을 설명합니다. MySQL에 권장되는 복제 전략입니다.

3.2.6.1. MySQL 마스터의 배포 구성 생성

MySQL 복제를 설정하기 위해 배포 구성 은 예제 템플릿에 정의되어 복제 컨트롤러를 정의합니다. MySQL 마스터-슬레이브 복제의 경우 두 개의 배포 구성이 필요합니다. 하나의 배포 구성은 MySQL 마스터 서버 및 MySQL 슬레이브 서버를 정의합니다.

MySQL 서버가 마스터 역할을 하도록 지시하려면 배포 구성의 컨테이너 정의의 command 필드가 run-mysqld-master 로 설정되어야 합니다. 이 스크립트는 MySQL 이미지의 대체 진입점 역할을 하며 복제에서 마스터로 실행되도록 MySQL 서버를 구성합니다.

MySQL 복제에는 마스터와 슬레이브 간에 데이터를 릴레이하는 특수 사용자가 필요합니다. 이 목적으로 템플릿에 다음 환경 변수가 정의됩니다.

변수 이름설명기본값

MYSQL_MASTER_USER

복제 사용자의 사용자 이름

master

MYSQL_MASTER_PASSWORD

replication 사용자의 암호

생성됨

예 3.1. 예제 템플릿의 MySQL 마스터 배포 구성 오브젝트 정의

kind: "DeploymentConfig"
apiVersion: "v1"
metadata:
  name: "mysql-master"
spec:
  strategy:
    type: "Recreate"
  triggers:
    - type: "ConfigChange"
  replicas: 1
  selector:
    name: "mysql-master"
  template:
    metadata:
      labels:
        name: "mysql-master"
    spec:
      volumes:
        - name: "mysql-master-data"
          persistentVolumeClaim:
            claimName: "mysql-master"
      containers:
        - name: "server"
          image: "openshift/mysql-56-centos7"
          command:
            - "run-mysqld-master"
          ports:
            - containerPort: 3306
              protocol: "TCP"
          env:
            - name: "MYSQL_MASTER_USER"
              value: "${MYSQL_MASTER_USER}"
            - name: "MYSQL_MASTER_PASSWORD"
              value: "${MYSQL_MASTER_PASSWORD}"
            - name: "MYSQL_USER"
              value: "${MYSQL_USER}"
            - name: "MYSQL_PASSWORD"
              value: "${MYSQL_PASSWORD}"
            - name: "MYSQL_DATABASE"
              value: "${MYSQL_DATABASE}"
            - name: "MYSQL_ROOT_PASSWORD"
              value: "${MYSQL_ROOT_PASSWORD}"
          volumeMounts:
            - name: "mysql-master-data"
              mountPath: "/var/lib/mysql/data"
          resources: {}
          terminationMessagePath: "/dev/termination-log"
          imagePullPolicy: "IfNotPresent"
          securityContext:
            capabilities: {}
            privileged: false
      restartPolicy: "Always"
      dnsPolicy: "ClusterFirst"

이 배포 구성에서 모든 데이터가 MySQL 마스터 서버에 대해 지속되도록 영구 볼륨을 요청했기 때문에 클러스터 관리자에게 스토리지를 클레임할 수 있는 영구 볼륨을 생성하도록 요청해야 합니다.

배포 구성이 생성되고 MySQL 마스터 서버를 사용하는 포드가 started되면 sysfs _DATABASE 에서 정의한 데이터베이스를 생성하고 이 데이터베이스를 슬레이브로 복제하도록 서버를 구성합니다.

제공된 예제에서는 MySQL 마스터 서버의 복제본을 하나만 정의합니다. 이로 인해 OpenShift Container Platform에서 서버 인스턴스가 하나만 시작됩니다. 다중 인스턴스(multi-master)는 지원되지 않으므로 이 복제 컨트롤러를 확장할 수 없습니다.

MySQL 마스터 에서 생성한 데이터베이스를 복제하기 위해 템플릿에 배포 구성이 정의됩니다. 이 배포 구성은 run-mysqld-slave 로 설정된 command 필드를 사용하여 MySQL 이미지를 시작하는 복제 컨트롤러를 생성합니다. 이 대체 진입점은 데이터베이스 초기화를 건너뛰고 예제 템플릿에도 정의되어 있는 mysql-master 서비스에 연결하도록 MySQL 서버를 구성합니다.

예 3.2. 예제 템플릿의 MySQL Slave 배포 구성 오브젝트 정의

kind: "DeploymentConfig"
apiVersion: "v1"
metadata:
  name: "mysql-slave"
spec:
  strategy:
    type: "Recreate"
  triggers:
    - type: "ConfigChange"
  replicas: 1
  selector:
    name: "mysql-slave"
  template:
    metadata:
      labels:
        name: "mysql-slave"
    spec:
      containers:
        - name: "server"
          image: "openshift/mysql-56-centos7"
          command:
            - "run-mysqld-slave"
          ports:
            - containerPort: 3306
              protocol: "TCP"
          env:
            - name: "MYSQL_MASTER_USER"
              value: "${MYSQL_MASTER_USER}"
            - name: "MYSQL_MASTER_PASSWORD"
              value: "${MYSQL_MASTER_PASSWORD}"
            - name: "MYSQL_DATABASE"
              value: "${MYSQL_DATABASE}"
          resources: {}
          terminationMessagePath: "/dev/termination-log"
          imagePullPolicy: "IfNotPresent"
          securityContext:
            capabilities: {}
            privileged: false
      restartPolicy: "Always"
      dnsPolicy: "ClusterFirst"

이 예제 배포 구성은 초기 복제본 수가 1 로 설정된 복제 컨트롤러를 시작합니다. 이 복제 컨트롤러는 계정의 리소스 용량까지 두 방향 모두에서 확장 할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.