Rumah pangkalan data tutorial mysql MySQL - Cluster MySQL 集群

MySQL - Cluster MySQL 集群

May 28, 2020 am 11:48 AM
mysql

MySQL - Cluster MySQL 集群

MySQL Cluster MySQL集群

基本概念:

“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。 

MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在 Cluster 级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于 Cluster本身内的其他数据。 

管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。

数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令“ndbd”启动的。

SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld -ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。

管理服务器(MGM节点)负责管理 Cluster配置文件和 Cluster日志。 Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后,将这类信息写入 Cluster日志。

集群配置概述:

安装版本:mysql cluster 7.3.2

操作系统 :centos6.3(X64)

软件名称 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)

管理节点IP:192.168.0.202

数据节点-SQL节点IP:192.168.0.203

数据节点-SQL节点IP:192.168.0.204

安装依赖包:yum install -y glibc perl libaio-devel

x32位系统要安装兼容库组:yum groupinstall “Compatibility libraries”

一、管理节点安装配置

1、安装mysql-cluster

groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql-cluster
chown  -R root.mysql  /usr/local/mysql/
chown  -R mysql.mysql  /usr/local/mysql/data/
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &   #初始化数据库
cp  -rf  /usr/local/mysql/bin/ndb_mgm *  /usr/local/bin/  #复制ndb节点管理命令到本地,方便使用

2、修改mysql主配置文件

vi  /etc/my .cnf
[MYSQLD]
  user = mysql
  socket =  /tmp/mysql .sock
  basedir =  /usr/local/mysql  #安装目录
  datadir =  /usr/local/mysql/data  #数据库存放目录
  character-sets-server=UTF8
  ndbcluster  #运行NDB存储引擎
  ndb-connectstring=192.168.0.202
  lower_case_table_names=1  #表名是否区分大小写1为不区分,不然linux下表名是区分大小写的
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #Mysql Cluster管理节点IP

3、创建mysql集群配置文件

mkdir  /var/lib/mysql-cluster
vi  /var/lib/mysql-cluster/config .ini
[ndbd default]
NoOfReplicas=2  #定义在Cluster环境中相同数据的份数,最大为4
DataMemory=256M  #分配的数据内存大小,根据本机服务器内存适量来分配
IndexMemory=256M  #设定用于存放索引(非主键)数据的内存段大小
#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
[ndb_mgmd]
nodeid=1
hostname =192.168.0.202
datadir= /var/lib/mysql-cluster/
[ndbd]
nodeid=2
hostname =192.168.0.203
datadir= /usr/local/mysql/data
[ndbd]
nodeid=3
hostname =192.168.0.204
datadir= /usr/local/mysql/data
[mysqld]
nodeid=4
hostname =192.168.0.203
[mysqld]
nodeid=5
hostname =192.168.0.204

保存退出!

chown  mysql.mysql  /var/lib/mysql-cluster/config .ini

二、两台数据节点和SQL节点配置相同

1、安装mysql-cluster

tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
chown  -R root.mysql  /usr/local/mysql
chown  -R mysql.mysql  /usr/local/mysql/data
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &  #初始化数据库
cp  /usr/local/mysql/support-files/mysql .server  /etc/init .d /mysqld
cp  /usr/local/mysql/support-files/medium .cnf  /etc/my .cnf
chmod  +x /etc/init .d /mysqld

2、修改mysql配置文件

vi  /etc/my .cnf
[MYSQLD]
user=mysql
character_set_server=utf8
ndbcluster
ndb-connectstring=192.168.0.202
default-storage-engine=ndbcluster  #设置默认是NDB存储引擎
datadir= /usr/local/mysql/data
basedir= /usr/local/mysql
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #mysql cluster 管理节点IP

三、测试(先关闭三台服务器的防火墙(IPTABLES)与 Selinux)

1、启动管理节点

ndb_mgmd -f  /var/lib/mysql-cluster/config .ini --initial
netstat  -tuplna |  grep  1186  #默认连接端口1186,启动成功
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369 /ndb_mgmd
#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时。

如果启动出现报错:把config.ini里设置的nodeid都给删除即可!

2、启动两台数据节点和SQL节点

数据节点:/usr/local/mysql/bin/ndbd --initial

SQL节点:bin/mysqld_safe --user=mysql & 或 service mysqld start

3、查看集群状态

ndb_mgm -e show #显示管理节点和数据节点则配置成功

4、创建一个数据库验证是否同步

mysql -u root -p

Mysql>create database  test ;

Mysql>use  test ;

Mysql>create table abc ( id  int) engine=ndbcluster; #指定数据库表的引擎为NDB,否则同步失败

Mysql>Insert into abc ()values (1);

Mysql> select  * from abc;

#此时看两个数据是否数据一致,如果一致说明集群已经成功!

注意事项:

1.在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。

2.NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。

3.Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。

四、管理和维护命令

关闭mysql集群:ndb_mgm -e shutdown

重启mysql集群:ndb_mgmd -f /var/lib/mysql-cluster/config.ini

重启数据节点:/usr/local/mysql/bin/ndbd

启动SQL节点:/usr/local/mysql/bin/mysqld_safe --user=mysql & 或 service mysqld restart

查看mysql状态:ndb_mgm -e show

启动顺序:

管理节点 -> 数据节点 -> SQL节点

关闭顺序:

SQL节点 -> 数据节点 -> 管理节点

推荐教程:《MySQL教程

Atas ialah kandungan terperinci MySQL - Cluster MySQL 集群. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Strategi untuk Pengoptimuman Prestasi Pertanyaan MySQL Strategi untuk Pengoptimuman Prestasi Pertanyaan MySQL Jul 13, 2025 am 01:45 AM

Pengoptimuman prestasi pertanyaan MySQL perlu bermula dari titik teras, termasuk penggunaan indeks rasional, pengoptimuman penyata SQL, reka bentuk struktur meja dan strategi pembahagian, dan penggunaan alat cache dan pemantauan. 1. Gunakan indeks dengan munasabah: Buat indeks pada medan pertanyaan yang biasa digunakan, elakkan pengimbasan jadual penuh, perhatikan urutan indeks gabungan, jangan tambah indeks dalam medan terpilih yang rendah, dan elakkan indeks berlebihan. 2. Mengoptimumkan pertanyaan SQL: Elakkan pilih*, jangan gunakan fungsi di mana, mengurangkan bersarang subquery, dan mengoptimumkan kaedah pertanyaan paging. 3. Reka Bentuk dan Pembahagian Struktur Jadual: Pilih paradigma atau anti-paradigma mengikut senario membaca dan menulis, pilih jenis medan yang sesuai, data bersih secara teratur, dan pertimbangkan jadual mendatar untuk membahagikan jadual atau partition mengikut masa. 4. Menggunakan cache dan pemantauan: Gunakan cache redis untuk mengurangkan tekanan pangkalan data dan membolehkan pertanyaan perlahan

Cara Menggunakan PHP untuk membangunkan Platform Komuniti Q & A Penjelasan terperinci mengenai model pengewangan komuniti interaktif PHP Cara Menggunakan PHP untuk membangunkan Platform Komuniti Q & A Penjelasan terperinci mengenai model pengewangan komuniti interaktif PHP Jul 23, 2025 pm 07:21 PM

1. 2. Prestasi tinggi memerlukan pergantungan pada cache (redis), pengoptimuman pangkalan data, CDN dan giliran tak segerak; 3. Keselamatan mesti dilakukan dengan penapisan input, perlindungan CSRF, HTTPS, penyulitan kata laluan dan kawalan kebenaran; 4. Pengiklanan pilihan wang, langganan ahli, ganjaran, komisen, pembayaran pengetahuan dan model lain, terasnya adalah untuk memadankan nada komuniti dan keperluan pengguna.

Contoh Ekspresi Jadual Biasa MySQL (CTE) Contoh Ekspresi Jadual Biasa MySQL (CTE) Jul 14, 2025 am 02:28 AM

CTE adalah hasil sementara yang ditetapkan dalam MySQL yang digunakan untuk memudahkan pertanyaan kompleks. Ia boleh dirujuk beberapa kali dalam pertanyaan semasa, meningkatkan kebolehbacaan dan penyelenggaraan kod. Sebagai contoh, apabila mencari pesanan terkini untuk setiap pengguna dalam jadual pesanan, anda boleh terlebih dahulu mendapatkan tarikh pesanan terkini untuk setiap pengguna melalui CTE, dan kemudian mengaitkannya dengan jadual asal untuk mendapatkan rekod lengkap. Berbanding dengan subqueries, struktur CTE lebih jelas dan logik lebih mudah untuk debug. Petua penggunaan termasuk alias eksplisit, menggabungkan pelbagai CTE, dan memproses data pokok dengan CTE rekursif. Menguasai CTE boleh menjadikan SQL lebih elegan dan cekap.

Memilih jenis data yang sesuai untuk lajur dalam jadual MySQL Memilih jenis data yang sesuai untuk lajur dalam jadual MySQL Jul 15, 2025 am 02:25 AM

Whensettingupmysqltables, memilihTheRightDatypesiscialforfiencyandscalability.1) pemahamanThedataeachcolumnwillstore-umbers, text, date, orflags-andchooseaccordingly.2)

Mysql Jadual sementara vs jadual memori Mysql Jadual sementara vs jadual memori Jul 13, 2025 am 02:23 AM

Jadual sementara adalah jadual dengan skop terhad, dan jadual memori adalah jadual dengan kaedah penyimpanan yang berbeza. Jadual sementara dapat dilihat dalam sesi semasa dan secara automatik dipadamkan selepas sambungan diputuskan. Pelbagai enjin penyimpanan boleh digunakan, yang sesuai untuk menjimatkan hasil pertengahan dan mengelakkan pengiraan berulang; 1. Jadual sementara menyokong pengindeksan, dan beberapa sesi boleh membuat jadual dengan nama yang sama tanpa menjejaskan satu sama lain; 2. Jadual memori menggunakan enjin memori, dan data disimpan dalam ingatan, dan permulaannya hilang, yang sesuai untuk set data kecil cache dengan akses frekuensi tinggi; 3. Jadual memori menyokong pengindeksan hash, dan tidak menyokong jenis gumpalan dan teks, jadi anda perlu memberi perhatian kepada penggunaan memori; 4. Kitaran hayat jadual sementara adalah terhad kepada sesi semasa, dan jadual memori dikongsi oleh semua sambungan. Apabila memilih, ia harus diputuskan berdasarkan sama ada data itu adalah peribadi, sama ada akses berkelajuan tinggi diperlukan dan sama ada ia boleh mentolerir kerugian.

Menyediakan replikasi separa sinkron di mysql Menyediakan replikasi separa sinkron di mysql Jul 15, 2025 am 02:35 AM

Langkah-langkah untuk menetapkan replikasi semi mysql adalah seperti berikut: 1. Sahkan versi menyokong dan memuatkan pemalam; 2. Hidupkan dan aktifkan mod separa sinkron; 3. Periksa status status dan operasi; 4. Perhatikan tetapan masa tamat, konfigurasi perpustakaan multi-hamba dan pemprosesan suis master-hamba. Adalah perlu untuk memastikan bahawa versi mysql 5.5 dan ke atas dipasang, rpl_semi_sync_master

Mengautomasikan penyebaran MySQL dengan infrastruktur sebagai kod Mengautomasikan penyebaran MySQL dengan infrastruktur sebagai kod Jul 20, 2025 am 01:49 AM

Untuk mencapai automasi penempatan MySQL, kunci adalah menggunakan Terraform untuk menentukan sumber, konfigurasi pengurusan ansible, Git untuk kawalan versi, dan mengukuhkan pengurusan keselamatan dan kebenaran. 1. Gunakan Terraform untuk menentukan contoh MySQL, seperti versi, jenis, kawalan akses dan atribut sumber lain AWSRDS; 2. Gunakan AnsiblePlayBook untuk merealisasikan konfigurasi terperinci seperti penciptaan pengguna pangkalan data, tetapan kebenaran, dan lain -lain; 3. Semua fail konfigurasi dimasukkan dalam pengurusan Git, pengesanan perubahan sokongan dan pembangunan kolaboratif; 4. Elakkan maklumat sensitif keras, gunakan Vault atau Ansiblevault untuk menguruskan kata laluan, dan tetapkan kawalan akses dan prinsip kebenaran minimum.

Mysql Nilai String Salah Untuk Lajur Mysql Nilai String Salah Untuk Lajur Jul 15, 2025 am 02:40 AM

Kesalahan MySQL "IncorrectstringValueForColumn" biasanya kerana set aksara medan tidak menyokong aksara empat-bait seperti emoji. 1. Sebab kesilapan: Set aksara UTF8 MySQL hanya menyokong aksara tiga-bait dan tidak dapat menyimpan emoji empat-bait; 2. Penyelesaian: Tukar pangkalan data, jadual, medan dan sambungan ke set aksara UTF8MB4; 3. Juga periksa sama ada fail konfigurasi, jadual sementara, pengekodan lapisan aplikasi dan pemandu pelanggan semua menyokong UTF8MB4; 4. Penyelesaian Alternatif: Jika anda tidak perlu menyokong aksara empat-bait, anda boleh menapis aksara khas seperti emoji pada lapisan aplikasi.

See all articles