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镜像名称。mysql1
和mysql2
分别表示两个MySQL容器的名称。MYSQL_REPLICATION_MODE
参数设置容器的复制模式,master
表示主节点,slave
表示从节点。MYSQL_REPLICATION_USER
和MYSQL_REPLICATION_PASSWORD
为复制用户的用户名和密码。MYSQL_MASTER_HOST
和MYSQL_MASTER_PORT
为主节点的地址和端口。MYSQL_MASTER_USER
和MYSQL_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_table
rrreee
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 manadocker-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!