Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk membina kluster kontena MySQL yang sangat tersedia di Linux?

Bagaimana untuk membina kluster kontena MySQL yang sangat tersedia di Linux?

WBOY
WBOYasal
2023-08-01 10:13:15916semak imbas

Bagaimana untuk membina kluster kontena MySQL yang sangat tersedia di Linux?

Dengan peningkatan pengkomputeran awan dan teknologi kontena, semakin banyak perusahaan mula menggunakan kontena untuk membina aplikasi. Sebagai salah satu pangkalan data hubungan yang paling biasa digunakan, MySQL juga boleh mencapai ketersediaan tinggi melalui kontena. Dalam artikel ini, kami akan memperkenalkan cara membina kluster kontena MySQL yang sangat tersedia di Linux dan memberikan contoh kod yang berkaitan.

Langkah 1: Sediakan persekitaran

Pertama, anda memerlukan hos Linux untuk membina gugusan kontena MySQL. Pastikan Docker dan Docker Compose dipasang pada hos ini. Jika ia tidak dipasang, anda boleh memasangnya dengan arahan berikut:

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

Langkah 2: Buat imej Docker

Seterusnya, anda perlu mencipta imej MySQL untuk menjalankan bekas. Proses pembinaan imej boleh ditakrifkan melalui Dockerfile. Buat fail bernama Dockerfile dan tambahkan kandungan berikut di dalamnya: 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

Dalam kod di atas, your_password ialah kata laluan pengguna root MySQL, your_database code> ialah nama pangkalan data yang akan dibuat dan your_script.sql ialah fail skrip permulaan yang akan dilaksanakan. Parameter ini boleh diubah suai mengikut keadaan sebenar.

Selepas menyimpan dan keluar dari fail, gunakan arahan berikut untuk membina imej:

rrreee

di mana nama_imej_anda ialah nama yang anda berikan kepada imej itu. 🎜🎜Langkah 3: Buat fail Docker Compose🎜🎜Sebelum membina gugusan bekas MySQL, anda perlu mencipta fail docker-compose.yml untuk mentakrifkan bekas dalam gugusan. Cipta fail bernama docker-compose.yml dan tambahkan kandungan berikut di dalamnya: 🎜rrreee🎜Dalam kod di atas, your_image_name ialah nama imej MySQL yang dibina sebelum ini. mysql1 dan mysql2 masing-masing mewakili nama dua bekas MySQL. Parameter MYSQL_REPLICATION_MODE menetapkan mod replikasi bekas, master mewakili nod induk dan slave mewakili nod hamba. MYSQL_REPLICATION_USER dan MYSQL_REPLICATION_PASSWORD ialah nama pengguna dan kata laluan pengguna replikasi. MYSQL_MASTER_HOST dan MYSQL_MASTER_PORT ialah alamat dan port nod induk. MYSQL_MASTER_USER dan MYSQL_MASTER_PASSWORD ialah nama pengguna dan kata laluan untuk menyambung ke nod induk. 🎜🎜Langkah 4: Mulakan kelompok kontena 🎜🎜Selepas menyimpan dan keluar dari fail, gunakan arahan berikut untuk memulakan kelompok kontena: 🎜rrreee🎜Parameter -d boleh digunakan untuk membuat kontena berjalan di latar belakang. 🎜🎜Langkah 5: Sahkan status bekas 🎜🎜Gunakan arahan berikut untuk menyemak status bekas: 🎜rrreee🎜Anda boleh melihat bahawa status bekas itu berjalan, yang bermaksud bekas sedang berjalan biasalah. 🎜🎜Langkah 6: Uji kluster kontena🎜🎜Kini, anda boleh menguji sama ada kluster kontena MySQL berfungsi dengan betul. Mula-mula, sambung ke nod induk bekas MySQL dan buat pangkalan data ujian: 🎜rrreee🎜 Kemudian, sambung ke nod hamba dan sahkan sama ada data pada nod induk boleh dibaca: 🎜rrreee🎜 Antaranya, your_table code> ialah nama jadual yang anda buat pada nod utama. 🎜🎜Melalui langkah di atas, kluster kontena MySQL yang sangat tersedia telah berjaya dibina. Dengan mereplikasi data nod induk pada berbilang nod hamba, redundansi data dan ketersediaan tinggi boleh dicapai. Jika nod induk gagal, nod induk baharu boleh dipilih daripada nod hamba dan terus menyediakan perkhidmatan. 🎜🎜Saya harap artikel ini dapat membantu anda membina kluster kontena MySQL yang sangat tersedia di Linux. Saya doakan anda berjaya! 🎜

Atas ialah kandungan terperinci Bagaimana untuk membina kluster kontena MySQL yang sangat tersedia di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn