第19章++MySQL+Cluster
- 格式:ppt
- 大小:270.50 KB
- 文档页数:49
mysql cluster 原理小伙伴,今天咱们来唠唠MySQL Cluster这个超有趣的东西的原理呀。
MySQL Cluster呢,就像是一个超级团队,大家齐心协力来处理数据这个大任务。
它是一种分布式的数据库解决方案哦。
想象一下,你有好多好多的数据,就像有一堆宝贝要存放起来,要是都放在一个小盒子里,很容易就满了,而且万一这个小盒子出问题了,那宝贝可就危险啦。
MySQL Cluster就不一样啦,它把这些数据分散到好多地方去存放。
在MySQL Cluster里,有数据节点。
这些数据节点就像是一个个小仓库,每个小仓库都负责存放一部分数据。
它们可不会互相抢活儿干,而是各自安安静静地守着自己的那一份数据。
比如说,你有关于用户信息的数据,一部分可能就放在这个数据节点里,另一部分可能在另外一个数据节点里。
这样做的好处可多啦。
要是一个数据节点突然生病了,就像人会感冒一样,其他的数据节点还能正常工作呢,数据不会一下子就找不到了。
还有管理节点呀,这个管理节点就像是这个超级团队的大管家。
它知道每个数据节点都在干啥,数据都放在哪里。
它就负责指挥这些数据节点,让整个系统有条不紊地运行。
如果有新的数据要放进来,管理节点就会想办法找个合适的数据节点来接收这个新数据。
要是某个数据节点太满了,它也会安排一下,看看能不能把一些数据挪到其他不那么满的数据节点去。
这个管理节点可聪明啦,就像一个很有经验的老管家一样。
那客户端呢?客户端就像是来这个大仓库取东西或者放东西的客人。
当客户端想要找某个数据的时候,它就会跟管理节点说:“大管家,我要找这个数据呢。
”然后管理节点就会告诉客户端:“你去那个数据节点找吧。
”客户端就乖乖地跑到对应的数据节点去拿数据啦。
MySQL Cluster还有一个很厉害的地方就是它的冗余性。
啥叫冗余性呢?就是同样的数据,可能会在好几个地方都有备份。
这就像是你把重要的东西,不仅放在家里的柜子里,还在朋友家也放了一份一样。
mysql 集群的方法MySQL 集群是为了提高数据库的可用性、性能和数据一致性而采用的一种技术。
以下是几种常见的 MySQL 集群方法:1.主从复制 (Master-Slave Replication):o一个主服务器(Master)负责写操作,并将数据变更复制到一个或多个从服务器(Slave)。
o从服务器处理读请求,确保数据保持同步。
o主要用途是读写分离、备份和故障恢复。
2.MySQL Group Replication:o这是 MySQL 5.7 之后引入的一个插件,允许 MySQL 实例形成一个互操作的组,并自动处理故障转移。
o它提供了数据冗余、自动故障转移和读写负载均衡。
3.MySQL Cluster:o基于 NDB(或 NDB Cluster)存储引擎,允许多个节点协同工作。
o提供高可用性、自动分片和并行处理。
o对于非常大的数据集和高并发的场景特别有用。
4.Galera Cluster for MySQL:o通过同步复制实现真正的多主复制。
o保证了数据一致性,提供了自动故障恢复和高可用性。
o Percona XtraDB Cluster 和 MariaDB Cluster 都使用了这种技术。
5.Proxy Solutions:o使用如 ProxySQL、HAProxy 或 MaxScale 等代理,可以基于路由规则将请求转发到不同的 MySQL 实例。
o可以实现负载均衡、读写分离、故障转移等功能。
6.分片 (Sharding):o将数据分布到多个数据库或服务器上,以实现水平扩展。
o使用如MySQL Sharding这样的中间件或工具,可以将请求路由到正确的分片。
7.使用云服务:o如 Amazon RDS 的 Multi-AZ (一个主数据库和一个或多个副数据库) 和 Read Replicas。
o这些解决方案通常提供了高可用性和自动故障转移。
8.其他第三方解决方案:如 Patroni、Codership、Vitess 等,都是为了解决特定问题的解决方案。
利用Percona-XtraDB-Cluster-server 搭建mysql 主主集群配置yum源指向192.168.1.35下的源[perconcluster]name=perconclusterbaseurl=http://192.168.1.35/Percona-XtraDB-Clusterenabled=1gpgcheck=0yum remove mysql-libsyum install Percona-XtraDB-Cluster-server-55#集群中的节点都需要修改[root@mysql1 yum.repos.d]# cat /etc/f[mysqld]datadir=/var/lib/mysqluser=mysql# Path to Galera librarywsrep_provider=/usr/lib64/libgalera_smm.so# Cluster connection URL contains the IPs of node#1, node#2 and node#3wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73# In order for Galera to work correctly binlog format should be ROWbinlog_format=ROW# MyISAM storage engine has only experimental supportdefault_storage_engine=InnoDB# This is a recommended tuning variable for performanceinnodb_locks_unsafe_for_binlog=1# This changes how InnoDB autoincrement locks are managed and is a requirement for Galerainnodb_autoinc_lock_mode=2# Node #1 address(此处填写相应服务器的ip地址)wsrep_node_address=192.168.70.71# SST methodwsrep_sst_method=xtrabackup# Cluster namewsrep_cluster_name=my_centos_cluster# Authentication for SST methodwsrep_sst_auth="sstuser:s3cret"### first node ####/etc/init.d/mysql start --wsrep-cluster-address="gcomm://"mysql> show status like 'wsrep%';+----------------------------+--------------------------------------+| Variable_name | Value |+----------------------------+--------------------------------------+| wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec |...| wsrep_local_state | 4 || wsrep_local_state_comment | Synced |...| wsrep_cluster_size | 1 || wsrep_cluster_status | Primary || wsrep_connected | ON |...| wsrep_ready | ON |+----------------------------+--------------------------------------+mysql@percona1> UPDATE er SET password=PASSWORD("Passw0rd") where user=’root’;mysql@percona1> FLUSH PRIVILEGES;mysql@percona1> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';mysql@percona1> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';mysql@percona1> FLUSH PRIVILEGES;mysql> grant process on *.* to 'clustercheckuser'@'localhost' identified by'clustercheckpassword!';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)####第二个节点######/etc/init.d/mysql startmysql> show status like 'wsrep%';+----------------------------+--------------------------------------+| Variable_name | Value | +----------------------------+--------------------------------------+| wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec | ...| wsrep_local_state | 4 || wsrep_local_state_comment | Synced | ...| wsrep_cluster_size | 2 || wsrep_cluster_status | Primary || wsrep_connected | ON | ...| wsrep_ready | ON | +----------------------------+--------------------------------------+40 rows in set (0.01 sec)。
1.据说从mysql 5.1 以后mysql安装包里就不包含mysql cluster ,而是单独作为一个产品发布,目前mysql网站上最新的版本是mysql cluster 7.2.7。
下载地址:/downloads/cluster/#downloads2.建立有5个节点的MySQL CLuster体系( OS : REDHAT 6.1 )管理节点(MGM) 192.168.251.141SQL节点1(SQL1) 192.168.251.141SQL节点2(SQL2) 192.168.251.141数据节点1(NDBD1) 192.168.251.141数据节点2(NDBD2) 192.168.251.1413.首先去下载文件mysql-cluster-gpl-7.2.7-linux2.6-x86_64.tar.gz4.解压文件到/mysqlData/ 并重命名为mysql-cluster[root@dbcp-db01 mysqlData]# pwd/mysqlData[root@dbcp-db01 mysqlData]# lsmysql-cluster-gpl-7.2.7-linux2.6-x86_64.tar.gz mysql-cluster5.建立软连ln -s /mysqlData/mysql-cluster/ /usr/local/mysql6.在/etc/profile 加入export PATH=$PATH:/usr/local/mysql/binecho “export PATH=$PATH:/usr/local/mysql/bin” >> /etc/profilesource /etc/profile7.配置管理节点[root@dbcp-db01 config]# vi /data/config/mysqlcluster.ini[NDBD DEFAULT]NoOfReplicas=1[TCP DEFAULT]portnumber=3388#[NDB_MGMD]NodeId = 1hostname=192.168.251.141#datadir=/mysqlData/clustermgmd-data/#[NDBD]NodeId = 2hostname=192.168.251.141datadir=/mysqlData/clusterndb1-data/#[NDBD]NodeId = 3hostname=192.168.251.141datadir=/mysqlData/clustern db2-data/#[MYSQLD]NodeId = 4hostname=192.168.251.141#[MYSQLD]NodeId = 5hostname=192.168.251.141[MYSQLD]8.配置存储节点和SQL节点(配置两个cnf 配置不同的参数路径)[root@dbcp-db01 config]# vi /data/config/f[mysqld]ndbclusterbasedir=/mysqlData/mysql-clusterdatadir=/mysqlData/clusterndb1-data/socket=/data/socket/my-n1.sockpid-file=/data/socket/n1.pidlog-error = /mysqlLog/n1_err.logslow_query_log_file = /mysqlLog/n1_slow.logport = 3399ndb-connectstring=192.168.251.141[mysql_cluster]ndb-connectstring=192.168.251.141[root@dbcp-db01 config]# vi /data/config/f[mysqld]ndbclusterbasedir=/mysqlData/mysql-clusterdatadir=/mysqlData/clusterndb2-data/socket=/data/socket/my-n2.sockpid-file=/data/socket/n2.pidlog-error = /mysqlLog/n2_err.logslow_query_log_file = /mysqlLog/n2_slow.logport = 3398ndb-connectstring=192.168.251.141[mysql_cluster]ndb-connectstring=192.168.251.1419.建立mysql用户组和mysql用户groupadd mysqluseradd -g mysql mysql10.创建配置文件中所用到的目录mkdir -p /mysqlData/clusterndb2-data/mkdir -p /mysqlData/clusterndb1-data/mkdir -p /data/socket/mkdir -p /mysqlLog/mkdir -p /mysqlData/clustermgmd-data/11.更改相关目录的权限chown -R mysql.mysql /mysqlData/chown -R mysql.mysql /mysqlLog/12.初始化SQL节点[root@dbcp-db01 ~]# cd /usr/local/mysql/scripts/[root@dbcp-db01 scripts]# ./mysql_install_db --defaults-file=/data/config/f --datadir=/mysqlData/clusterndb1-data/ --user=mysql --basedir=/mysqlData/mysql-cluster/ &[1] 24447[root@dbcp-db01 scripts]# Installing MySQL system tables...OKFilling help tables...OKTo start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !To do so, start the server, then issue the following commands:/mysqlData/mysql-cluster//bin/mysqladmin -u root password 'new-password'/mysqlData/mysql-cluster//bin/mysqladmin -u root -h dbcp-db01 password 'new-password'Alternatively you can run:/mysqlData/mysql-cluster//bin/mysql_secure_installationwhich will also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:cd /mysqlData/mysql-cluster/ ; /mysqlData/mysql-cluster//bin/mysqld_safe &You can test the MySQL daemon with mysql-test-run.plcd /mysqlData/mysql-cluster//mysql-test ; perl mysql-test-run.plPlease report any problems with the /mysqlData/mysql-cluster//scripts/mysqlbug script![root@dbcp-db01 ~]# cd /usr/local/mysql/scripts/[root@dbcp-db01 scripts]# ./mysql_install_db --defaults-file=/data/config/f --datadir=/mysqlData/clusterndb1-data/ --user=mysql --basedir=/mysqlData/mysql-cluster/ &[1] 24508[root@dbcp-db01 scripts]# Installing MySQL system tables...OKFilling help tables...OK.......13.启动mysql-cluster,启动顺序为管理节点->存储节点->SQL节点A. 启动管理节点[root@dbcp-db01 ~]# ndb_mgmd -f /data/config/mysqlcluster.iniMySQL Cluster Management Server mysql-5.5.25 ndb-7.2.7[root@dbcp-db01 ~]#B. 启动存储节点[root@dbcp-db01 scripts]# /usr/local/mysql/bin/ndbd --defaults-file=/data/config/f --initial2012-08-10 11:25:13 [ndbd] INFO -- Angel connected to '192.168.251.141:1186'2012-08-10 11:25:13 [ndbd] INFO -- Angel allocated nodeid: 2[root@dbcp-db01 scripts]# /usr/local/mysql/bin/ndbd --defaults-file=/data/config/f --initial2012-08-10 11:25:25 [ndbd] INFO -- Angel connected to '192.168.251.141:1186'2012-08-10 11:25:25 [ndbd] INFO -- Angel allocated nodeid: 3[root@dbcp-db01 scripts]#C. 启动SQL节点[root@dbcp-db01 scripts]# mysqld_safe --defaults-file=/data/config/f --user=mysql &[1] 24649[root@dbcp-db01 scripts]# 120810 11:26:41 mysqld_safe Logging to '/mysqlLog/n1_err.log'.120810 11:26:41 mysqld_safe Starting mysqld daemon with databases from /mysqlData/clusterndb1-data/[root@dbcp-db01 scripts]# ps aux | grep mysqldroot 24649 0.1 0.0 106012 1316 pts/1 S 11:26 0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/data/config/f --user=mysqlmysql 24732 1.2 2.2 953944 46772 pts/1 Sl 11:26 0:00 /usr/libexec/mysqld --defaults-file=/data/config/f --basedir=/mysqlData/mysql-cluster--datadir=/mysqlData/clusterndb1-data/ --user=mysql --log-error=/mysqlLog/n1_err.log --pid-file=/data/socket/n1.pid --socket=/data/socket/my-n1.sock --port=3399root 24760 0.0 0.0 103152 796 pts/1 S+ 11:27 0:00 grep mysqld[root@dbcp-db01 scripts]# mysqld_safe --defaults-file=/data/config/f --user=mysql &[2] 24761[root@dbcp-db01 scripts]# 120810 11:27:18 mysqld_safe Logging to '/mysqlLog/n2_err.log'.120810 11:27:18 mysqld_safe Starting mysqld daemon with databases from /mysqlData/clusterndb2-data/[root@dbcp-db01 scripts]# ps aux | grep mysqldroot 24649 0.0 0.0 106012 1316 pts/1 S 11:26 0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/data/config/f --user=mysqlmysql 24732 0.8 2.2 953944 47184 pts/1 Sl 11:26 0:00 /usr/libexec/mysqld --defaults-file=/data/config/f --basedir=/mysqlData/mysql-cluster--datadir=/mysqlData/clusterndb1-data/ --user=mysql --log-error=/mysqlLog/n1_err.log --pid-file=/data/socket/n1.pid --socket=/data/socket/my-n1.sock --port=3399root 24761 0.2 0.0 106012 1320 pts/1 S 11:27 0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/data/config/f --user=mysqlmysql 24844 2.6 2.2 953944 46932 pts/1 Sl 11:27 0:00 /usr/libexec/mysqld --defaults-file=/data/config/f --basedir=/mysqlData/mysql-cluster--datadir=/mysqlData/clusterndb2-data/ --user=mysql --log-error=/mysqlLog/n2_err.log --pid-file=/data/socket/n2.pid --socket=/data/socket/my-n2.sock --port=3398root 24873 0.0 0.0 103152 796 pts/1 S+ 11:27 0:00 grep mysqld[root@dbcp-db01 scripts]#14.所有节点都启动了用ndb_mgm 查看[root@dbcp-db01 ~]# ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: localhost:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 @192.168.251.141 (mysql-5.5.25 ndb-7.2.7, Nodegroup: 0, Master)id=3 @192.168.251.141 (mysql-5.5.25 ndb-7.2.7, Nodegroup: 1)[ndb_mgmd(MGM)] 1 node(s)id=1 @192.168.251.141 (mysql-5.5.25 ndb-7.2.7)[mysqld(API)] 2 node(s)id=4 @192.168.251.141 (mysql-5.5.25 ndb-7.2.7)id=5 @192.168.251.141 (mysql-5.5.25 ndb-7.2.7)ndb_mgm>15.在SQL节点端口3399上创建数据库,表,插入数据[root@dbcp-db01 config]# mysql -uroot -p -S /data/socket/my-n1.sockEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.5.25a-ndb-7.2.7-gpl MySQL Cluster Community Server (GPL)Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.This software comes with ABSOLUTELY NO WARRANTY. This is free software,and you are welcome to modify and redistribute it under the GPL v2 licenseType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database cluster_one;Query OK, 1 row affected (0.12 sec)mysql> use cluster_oneDatabase changedmysql> create table c_tb_a (id int ,tname varchar(10)) engine = ndbcluster default charset utf8;Query OK, 0 rows affected (0.25 sec)mysql> insert into c_tb_a values (1,'qqqqqq');Query OK, 1 row affected (0.01 sec)mysql> insert into c_tb_a values (2,'dddddd');Query OK, 1 row affected (0.00 sec)mysql>16.在SQL节点端口3398 上查询数据[root@dbcp-db01 config]# mysql -uroot -p -S /data/socket/my-n2.sockEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.5.25a-ndb-7.2.7-gpl MySQL Cluster Community Server (GPL)Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.This software comes with ABSOLUTELY NO WARRANTY. This is free software,and you are welcome to modify and redistribute it under the GPL v2 licenseType 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || cluster_one || mysql || ndb_3_fs || ndbinfo || performance_schema || test |+--------------------+7 rows in set (0.04 sec)mysql> use cluster_oneReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+-----------------------+| Tables_in_cluster_one |+-----------------------+| c_tb_a |+-----------------------+1 row in set (0.00 sec)mysql> select * from c_tb_a;+------+--------+| id | tname |+------+--------+| 1 | qqqqqq || 2 | dddddd |+------+--------+2 rows in set (0.00 sec)mysql>以上就是在一台计算机上安装配置mysql cluster 的过程,其实跟在多台机器上配置差不多,只是在配置cnf的时候要用不同的路径,要注意的是在初始化的时候把--defaults-file --datadir --basedir 几个参数加上。
Mysql_cluster7.1.24安装配置实录三台服务器:Mgmd管理节点NDB2和NDB3为数据存储节点同时也兼任数据库节点(MySqld)下载软件:到官网下载Mysql_cluster最新版本/get/Downloads/该实录使用的是Mysql_cluster7.1.24版(源编译安装包):Mysql-cluster-glp-7.1.24.tar.gz准备工作:1、建立mysql-cluster文件目录(稍候编译安装时需要指定的目录)[root@Mgmd Desktop]# mkdir /usr/local/mysql-cluster2、新建mysql用户和mysql用户组[root@Mgmd ~]# groupadd mysql[root@Mgmd ~]# useradd -g mysql mysqlMgmd管理节点安装步骤:1、解压Mysql-cluster-glp-7.1.24.tar.gz安装包[root@Mgmd Desktop]# tar zxvf mysql-cluster-gpl-7.1.24.tar.gz2、进入解压后的目录“mysql-cluster-gpl-7.1.24”[root@Mgmd Desktop]# cd mysql-cluster-gpl-7.1.243、设置编译安装选项[root@Mgmd mysql-cluster-gpl-7.1.24]# ./configure\>--prefix=/usr/local/mysql_cluster --with-plugins=all4、开始编译及安装[root@Mgmd mysql-cluster-gpl-7.1.24]#make&&make install5、新建data和sock目录[root@Mgmd mysql-cluster]# mkdir /usr/local/mysql-cluster/data [root@Mgmd mysql-cluster]# mkdir /usr/local/mysql-cluster/sock6、设置data和sock目录属主都为mysql,其他目录属主为root,所有目录属组都为mysql[root@Mgmd mysql_cluster]#chown -R mysql data[root@Mgmd mysql_cluster]# chown -R mysql sock[root@Mgmd mysql_cluster]# chgrp -R mysql .设置后如下图:7、在mysql-cluster/bin目录中添加链接文件ndb_mgmd[root@Mgmd mysql-cluster]# ln –s /usr/local/mysql-cluster/libexec\>ndb_mgmd /usr/local/mysql-cluster/bin8、复制/mysql-cluster/bin目录下的ndb_mgm和ndb_mgmd两个文件到/usr/local/bin目录下[root@Mgmd bin]# cp -fr ./ndb_mgm* /usr/local/bin/9、创建config.ini配置文件[root@Mgmd mysql_cluster]# vim config.ini10、启动cluster管理节点[root@Mgmd mysql_cluster]# cd /usr/local/mysql_cluster/bin [root@Mgmd bin]# ./ndb_mgmd -f /usr/local/mysql_cluster/config.ini MySQL Cluster Management Server mysql-5.1.63 ndb-7.1.24[root@Mgmd bin]# ndb_mgmndb_mgm> showndb_mgm> showCluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 (not connected, accepting connect from 192.168.3.183)id=3 (not connected, accepting connect from 192.168.3.184)[ndb_mgmd(MGM)] 1 node(s)id=1 @192.168.3.188 (mysql-5.1.63 ndb-7.1.24)[mysqld(API)] 2 node(s)id=4 (not connected, accepting connect from 192.168.3.183)id=5 (not connected, accepting connect from 192.168.3.184)ndb_mgm>NDB管理节点192.168.3.184安装步骤:1、建立mysql-cluster文件目录(稍候编译安装时需要指定的目录)[root@Mgmd Desktop]# mkdir /usr/local/mysql2、新建mysql用户和mysql用户组[root@Mgmd ~]# groupadd mysql[root@Mgmd ~]# useradd -g mysql mysql1、解压Mysql-cluster-glp-7.1.24.tar.gz安装包[root@Mgmd Desktop]# tar zxvf mysql-cluster-gpl-7.1.24.tar.gz2、进入解压后的目录“mysql-cluster-gpl-7.1.24”[root@Mgmd Desktop]# cd mysql-cluster-gpl-7.1.243、设置编译安装选项[root@Mgmd mysql-cluster-gpl-7.1.24]# ./configure\>--prefix=/usr/local/mysql --with-plugins=all4、开始编译及安装[root@Mgmd mysql-cluster-gpl-7.1.24]#make&&make install5、新建data和sock目录[root@Mgmd mysql-cluster]# mkdir /usr/local/mysql /data[root@Mgmd mysql-cluster]# mkdir /usr/local/mysql /sock[root@Mgmd mysql-cluster]# touch /usr/local/mysql /sock/mysql.sock 6、设置data和sock目录属主都为mysql,其他目录属主为root,所有目录属组都为mysql[root@Mgmd mysql_cluster]#chown -R mysql data[root@Mgmd mysql_cluster]# chown -R mysql sock[root@Mgmd mysql_cluster]# chgrp -R mysql .7、在mysql/bin目录中添加链接文件ndb[root@Mgmd mysql-cluster]# ln –s /usr/local/mysql/libexec/ndbd /usr/local/mysql/bin8、将ndb执行文件复制到init.d目录[root@Mgmd ~]# cp /usr/local/mysql/libexec/ndbd /etc/rc.d/ndbd9、在192.168.3.184上配置数据库节点(Mysqld),即192.168.3.184服务器是NDBd节点同时也是Mysqld节点承担两个角色(如果服务器足够不建议这样做),之前已编译安装好mysql,因此只需配置f文件即可(如果是在另一服务器上安装配置mysqld节点,只需重复1~6步骤即可)配置f文件[root@Mgmd ~]# vim /etc/f10、创建开机启动文项[root@Mgmd ~]# cp /mysql-cluster-gpl-7.1.24/support-files/\mysql.server /etc/rc.d/init.d/mysqld11、为mysqld文件添加”x”执行权限[root@Mgmd ~]# chmod 755 /etc/rc.d/init.d/mysqld12、初始化数据库[root@NDBd bin]#./mysql_install_db --user=mysql\--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data\--socket=/usr/local/mysql/sock/mysql.sock13、群集启动顺序Mgm d→Ndbd→MysqldMgmd:[root@NDBd bin]# ./ndbd_mgmd –f /usr/local/mysql_cluster/\ config.iniNdbd:[root@NDBd bin]# ./ndbd –initial Mysqld:[root@NDBd bin]# service mysqld start。
MySQL集群部署与配置指南引言MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种应用程序中。
在处理大规模数据和高并发访问时,单个MySQL服务器可能无法满足需求。
为了提高性能和可用性,使用MySQL集群来部署和配置数据库是一个不错的选择。
本文将详细介绍MySQL集群部署和配置的指南,帮助读者了解集群的概念,并提供一些实用的技巧。
1. 集群概述1.1 什么是MySQL集群MySQL集群是指由多个MySQL服务器组成的集合,通过共享数据和负载均衡来提供高性能和高可用性。
集群中的每个节点都存储相同的数据,并且可以处理来自客户端的查询请求。
如果其中一个节点发生故障,其他节点将继续提供服务,确保数据的有效性和可访问性。
1.2 集群的优势MySQL集群具有以下优势:- 高可用性:即使其中一个节点发生故障,其他节点也可以继续提供服务,避免了单点故障的风险。
- 负载均衡:通过将查询请求分发到不同的节点上,集群可以平衡负载,提高整个系统的性能。
- 扩展性:可以根据需求增加或减少集群节点,以应对不断增长的数据和用户访问量。
- 数据冗余:通过复制数据到多个节点,可以提供数据的冗余备份,避免数据丢失的风险。
2. 部署MySQL集群2.1 硬件要求部署MySQL集群需要考虑以下硬件要求:- 多台服务器:每个节点都需要一个独立的服务器来承载MySQL服务。
- 网络连接:节点之间需要可靠的网络连接,以便进行数据同步和通信。
2.2 软件要求部署MySQL集群还需要满足以下软件要求:- MySQL数据库:每个节点都需要安装并配置MySQL数据库。
- 集群管理软件:可以使用各种集群管理软件,如MySQL Cluster、Galera Cluster或Percona XtraDB Cluster等。
2.3 数据同步配置为了保持每个节点上的数据一致性,需要配置数据同步机制。
可以使用MySQL的复制功能来实现数据同步。
具体步骤如下:- 在一个节点上设置为主节点(master),并启用二进制日志功能。
mysql的集群模式galera-cluster部署详解⽬录⼀: galera-cluster 的介绍⼆: galera-cluster 的运⾏原理三: mariadb的galera-cluster 部署⼀: galera-cluster 的介绍官⽅给出的特性如下:真正的多主集群,Active-Active架构;同步复制,没有复制延迟;多线程复制;没有主从切换操作,⽆需使⽤虚IP;热备份,单个节点故障期间不会影响数据库业务;⽀持节点⾃动加⼊,⽆需⼿动拷贝数据;⽀持InnoDB存储引擎;对应⽤程序透明,原⽣MySQL接⼝;⽆需做读写分离;部署使⽤简单。
⼆: galera-cluster 的运⾏原理主要关注点是数据⼀致性。
事务既可以应⽤于每个节点,也可以不全部应⽤。
所以,只要它们配置正确,数据库保持同步。
Galera复制插件不同于传统的MySQL复制,可以解决多个问题,包括多主写⼊冲突,复制滞后和主从不同步。
三: mariadb的galera-cluster 部署3.1: 系统软件环境介绍系统: CentOS7.5x64192.168.20.33 192.168.20.34 192.168.20.35 软件: mariadb-galera-cluster.zip3.2: 配置时间同步服务器flyfish的主机已经配置好了chronyd 时间服务器时间服务器为: 192.168.20.3如果不会可以参考flyfish的其关于安装⼤数据集群CDH 的时间服务器的配置在此不再提供如何安装配置3.3 安装mariadb-galear-cluster所⽤集群节点都执⾏:yum remove -y mariadb-libsyum install -y unzip boost-devel lsof perl-DBI perl-Data-Dumperrpm -ivh rpm -ivh MariaDB-10.0.37-centos73-x86_64-*rpm -ivh MariaDB-Galera-10.0.37-centos73-x86_64-*3.4 节点配置⽂件节点⼀: cd /etc/f.dvim server.conf----[mysqld]## * Galera-related settings#[galera]# Mandatory settingswsrep_provider= /usr/lib64/galera/libgalera_smm.sowsrep_cluster_address="gcomm://192.168.20.33,192.168.20.34,192.168.20.35" wsrep_cluster_name = 'mycluster'wsrep_node_name = ''wsrep_node-address = '192.168.20.33'binlog_format=rowdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2bind-address=0.0.0.0## Optional setting#wsrep_slave_threads=1----节点⼆:cd /etc/f.d/vim server.conf----[mysqld]## * Galera-related settings#[galera]# Mandatory settingswsrep_provider= /usr/lib64/galera/libgalera_smm.sowsrep_cluster_address="gcomm://192.168.20.33,192.168.20.34,192.168.20.35" wsrep_cluster_name = 'mycluster'wsrep_node_name = ''wsrep_node-address = '192.168.20.34'binlog_format=rowdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2bind-address=0.0.0.0## Optional setting#wsrep_slave_threads=1#innodb_flush_log_at_trx_commit=0---节点三: cd /etc/f.d/vim server.conf----[mysqld]## * Galera-related settings#[galera]# Mandatory settingswsrep_provider= /usr/lib64/galera/libgalera_smm.sowsrep_cluster_address="gcomm://192.168.20.33,192.168.20.34,192.168.20.35" wsrep_cluster_name = 'mycluster'wsrep_node_name = ''wsrep_node-address = '192.168.20.35'binlog_format=rowdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2bind-address=0.0.0.0## Optional setting#wsrep_slave_threads=1#innodb_flush_log_at_trx_commit=0----3.4 启动集群在集群的任意⼀个节点上执⾏service mysql start --wsrep-new-cluster此处以节点三为例:节点⼀和节点⼆执⾏:service mysql start3.5:创建数据库实例节点⼀:mysql -uroot create database nCalInfo在节点⼆,三上⾯查看mysql -uroot show databases以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
MySQL Cluster简介1. MySQL Cluster 是什么?答:MySQL Cluster 是一个实时、高度可扩展且符合ACID 要求的事务型数据库,既可以实现99.999%的可用性,又具备开源产品低TCO 的优势。
MySQL Cluster 采用一种分布式的多主机架构,无单点故障。
它可在商业硬件上横向扩展,并且可同时支持读取和写入密集型负载,支持通过SQL 和NoSQL 接口访问。
MySQL Cluster 采用实时设计,可提供可预测的毫秒级响应,每秒可处理数百万次操作。
该集群支持内存中和基于磁盘的数据、自动数据分区(分片)以及负载平衡,无需停机即可在处于运行状态的集群中添加节点,因此可实现线性的数据库可伸缩性,能够处理在应用压力无法预测时、基于Web 的负载。
2. MySQL Cluster 运营商级版本是什么?答: MySQL Cluster 运营商级版本(CGE) 包括用于管理和审计MySQL Cluster 数据库以及监视其安全性的工具,同时还提供Oracle 标准支持服务。
用户可通过订购或者商业许可及服务来获取MySQL Cluster CGE。
3. MySQL Cluster 的最新版本?答:最新GA 版是MySQL Cluster 7.3。
MySQL Cluster 中集成和捆绑了MySQL 5.6。
4MySQL Cluster 对硬件或软件是否有特殊需求?答:没有,MySQL Cluster 被设计为在商用硬件上运行。
使用Infiniband 网络互联等专门硬件可实现更高水平的性能,尤其是针对具有许多节点的大型集群。
5. MySQL Cluster 的系统需求?答:操作系统:请参见最新的受支持平台列表»CPU:Intel/AMD x86、UltraSPARC内存:至少1GB RAM硬盘:3GB网络:至少1 个节点(千兆以太网— TCP/IP)6.MySQL Cluster 的理想应用场景?答:理想应用包括:∙大容量OLTP∙实时分析∙支持欺诈检测的电子商务和金融交易∙移动和小额支付∙会话管理和缓存∙串流派送、分析和推荐∙内容管理和交付∙大型多人在线游戏∙通信和位置服务∙使用者/用户资料管理和授权7. MySQL Cluster 有哪些典型性能指标?答:可用性99.999%(每年停机时间小于5 分钟)∙性能o响应时间:不到5 毫秒(通过SQL 进行同步复制和访问)。