一、部分理论
sql节点:要求建表时使用ndbcluster存储引擎,存放表结构,数据保存在内存中。访问Cluster数据的节点,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。
         通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动
数据节点:保存Cluster的数据,数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点,没有必要设定过多的副本,
          在NDB中数据会尽量的保存在内存中。数据节点使用命令“ndbd”(单线程)或"ndbmtd"(多线程)启动的,NDB存储引擎是一个内存式存储引擎
管理节点:管理MySQL Cluster内的其他节点,如提供配置数据,并停止节点,运行备份等。由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类节点。MGM节点是用命令“ndb_mgmd”启动的

由于同步复制一共需要4次消息传递,故mysql cluster的数据更新速度比单机mysql要慢。
mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。

二、mysql 8.0.22单节点安装
[root@master ~]# tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz -C /opt/
[root@master ~]# cd /opt/
[root@master opt]# mv mysql-8.0.22-linux-glibc2.12-x86_64 mysql
[root@master opt]# mkdir mysql/data
[root@master opt]# mkdir mysql/mysql-files
[root@master opt]# chown mysql:mysql mysql -R
[root@master opt]# chmod 750 mysql/mysql-files

[root@master opt]# cd mysql/
[root@master mysql]# ./bin/mysqld --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data/ --initialize   #--defaults-file=etc/my.cnf
2021-03-05T07:05:17.996474Z 0 [System] [MY-013169] [Server] /opt/mysql/bin/mysqld (mysqld 8.0.22) initializing of server in progress as process 8672
2021-03-05T07:05:18.026331Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-03-05T07:05:19.078814Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-03-05T07:05:19.976142Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &BqH*6TwoMma

[root@master mysql]# vi /etc/my.cnf
[mysqld]
basedir=/opt/mysql/
datadir=/opt/mysql/data
socket=/opt/mysql/data/mysql.sock
#Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0 #MySQL数据库及表(仅MyISAM)支持符号链接(symbolic link),即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录。要支持符号链接,需要在配置中设置symbolic-links=1(较新的版本为默认开启)
character-set-server=utf8mb4
port=3306
default_authentication_plugin=mysql_native_password  #使用以前老版本的加密模式,如果不使用,很多如mycat,hive等链接过来都会包密码错误

slow_query_log=1  #开启慢sql查询日志
slow_query_log_file=/opt/mysql/data/mysql-slow.log #开启慢sql查询日志文件
long_query_time=3  #定义慢sql时间,单位秒

log_bin_trust_function_creators=1 
log-bin=mysql-bin #主从复制要开启二进制文件
server-id=1  #主从复制要指定一个id
binlog-ignore-db=mysql #不要同步mysql库 #也可以配置 binlog-do-db=dbname 要配置同步的库名称
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_>当前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema

binlog-format=MIXED  #默认是STATEMENT #设置二进制文件格式;如果是STATEMENT时并不安全,事务隔离级别为 READ-COMMITTED的InnoDB引擎,配置hive时会报错

#[mysqld_safe]
#log-error=/opt/mysql/logs3306/mysql_error.log  #自动在datadir生成 机器名.err
#pid-file=/opt/mysql/logs3306/mysql_pid.pid  #自动在datadir生成 机器名.pif

[root@master mysql]# bin/mysqld_safe --user=mysql &
[root@master mysql]# mysql -S /opt/mysql/data/mysql.sock -p  或者使用 mysql -u root -p -h 127.0.0.1 登录,开启参数socket=/opt/mysql/data/mysql.sock后本地只能使用此模式登录
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.22

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'yehaver';
Query OK, 0 rows affected (0.01 sec)

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host = '%' WHERE user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'yehaver';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

增加开机自启动
[root@master mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@master mysql]# systemctl daemon-reload
[root@master mysql]# systemctl status mysql
● mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
[root@master mysql]# systemctl enable mysql
然后重启生效

其它学习
1.在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式
https://www.cnblogs.com/lijiaman/p/12587630.html
2.在一台Linux服务器上安装多个MySQL实例(二)--使用单独的MySQL配置文件
https://www.cnblogs.com/lijiaman/p/12588095.html

三、mysql-cluster集群安装
机器名    服务器                角色            说明
S2      192.168.100.103    管理节点(MGM)    系统 centos 7 64位
MASTER    192.168.100.101    数据节点(NDB)    系统 centos 7 64位
S1        192.168.100.102    数据节点(NDB)    系统 centos 7 64位
MASTER    192.168.100.101    SQL节点            系统 centos 7 64位
S1        192.168.100.102    SQL节点            系统 centos 7 64位

将软件上传到服务器并解压
[root@master ~]# tar -xzvf  mysql-cluster-gpl-7.6.16-el7-x86_64.tar.gz

#将解压的文件重命名为mysql,并放到/usr/local/目录下
[root@master ~]# mv mysql-cluster-gpl-7.6.16-el7-x86_64 /usr/local/mysql

[root@master ~]# scp -r /usr/local/mysql root@192.168.100.102:/usr/local/mysql
[root@master ~]# scp -r /usr/local/mysql root@192.168.100.103:/usr/local/mysql

[root@s2 ~]#  systemctl stop firewalld
[root@s2 ~]#  systemctl disable firewalld

#将文件ndb_mgm和ndb_mgmd拷贝到/usr/local/bin/目录下
[root@s2 ~]# cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/

#创建数据库集群配置文件的目录
[root@s2 ~]# mkdir /usr/local/mysql/mysql-cluster
 
#创建并编辑配置文件
[root@s2 ~]# vi /usr/local/mysql/mysql-cluster/config.ini
[ndbd default]  
#表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。
NoOfReplicas=2  
#副本数量,数据节点数必须是副本数的整数倍。
DataMemory=200M

[ndb_mgmd]  
#表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。
NodeId=1
hostname=192.168.100.103
datadir=/var/lib/mysql-cluster/

[ndbd]
#表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。
NodeId=2
hostname=192.168.100.101
datadir=/usr/local/mysql/data/
[ndbd]
NodeId=3
hostname=192.168.100.102
datadir=/usr/local/mysql/data/

[mysqld]
#表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。
NodeId=4
hostname=192.168.100.101
[mysqld]
NodeId=5
hostname=192.168.100.102

# ndb_mgmd是mysql cluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。
#如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中。
#初始化管理节点
[root@s2 ~]#  /usr/local/bin/ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini --initial

#验证初始化管理节点是否启动成功
[root@s2 mysql]# /usr/local/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2 (not connected, accepting connect from 192.168.100.101)
id=3 (not connected, accepting connect from 192.168.100.102)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.100.103  (mysql-5.7.32 ndb-7.6.16)

[mysqld(API)]   2 node(s)
id=4 (not connected, accepting connect from 192.168.100.101)
id=5 (not connected, accepting connect from 192.168.100.102)

二、安装数据节点和sql节点
vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
ndbcluster
ndb-connectstring=192.168.100.103
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306

#[mysqld_safe]
#log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]
ndb-connectstring=192.168.100.103:1186

#初始化mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
#启动mysql
/usr/local/mysql/support-files/mysql.server start
#登录并设置新密码
mysql -uroot -p
set password=password('yehaver');

#安装后第一次启动数据节点时要加上--initial参数。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。
/usr/local/mysql/bin/ndbd --initial
下次启动直接
/usr/local/mysql/bin/ndbd

所有服务启动后运行情况
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.100.101  (mysql-5.7.32 ndb-7.6.16, Nodegroup: 0, *)
id=3    @192.168.100.102  (mysql-5.7.32 ndb-7.6.16, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.100.103  (mysql-5.7.32 ndb-7.6.16)

[mysqld(API)]   2 node(s)
id=4    @192.168.100.101  (mysql-5.7.32 ndb-7.6.16)
id=5    @192.168.100.102  (mysql-5.7.32 ndb-7.6.16)

三、启动和停止管理节点
启动顺序:管理节点—数据节点—sql节点(就是启动服务)
管理节点启动:/usr/local/bin/ndb_mgmd -f /usr/local/mysql/mysql-cluster/config.ini
数据节点启动: /usr/local/mysql/bin/ndbd
sql节点启动:/usr/local/mysql/support-files/mysql.server start

管理节点停止 + 数据节点停止: /usr/local/bin/ndb_mgm -e shutdown
sql节点停止:/usr/local/mysql/support-files/mysql.server stop

四、参考文档
集群安装与配置
https://www.cnblogs.com/pinghengxing/p/13682553.html
集群规划可参考
https://www.cnblogs.com/timePasser-leoli/p/12566256.html

Keepalived和Heartbeat功能相同,实现高可用,Heartbeat早期使用,现在都使用Keepalived
Keepalived:检测HAproxy集群中服务器的健康状况,以及实现HAproxy主备之间进行故障转移,用来防止单点故障的发生,
           Keepalived通过请求一个VIP来达到请求真实IP地址的功能,而VIP能够在一台机器发生故障时候,自动漂移到另外一台机器上,从来达到了高可用HA功能。
Heartbeat:可以将资源(ip以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用服务。参考文档:https://www.cnblogs.com/minseo/p/13322635.html

HAProxy、nginx、mysql router、lvs功能相近,实现负载均衡
HAProxy:7层调度。是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,zCloud使用HAproxy四层代理为ProxySQL提供高可用中间件代理。
        HAProxy 已不再更新,官网已经推荐使用 mysql router
nginx:7层调度。是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;
      nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。
LVS(ipvsadm):4层调度。Linux Virtual Server 的简称,通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。

Tomcat:服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
     对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。
     实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
     
mysql与mysql是否有db link导入导出数据?   有,首先再my.cnf开启 federated  必须是小写。然后再建表时加上ENGINE =FEDERATED CONNECTION='mysql://root:yehaver@192.168.100.101:3306/test/sys_myfirst'
mysql> CREATE TABLE `sys_myfirst` (
    ->   `id` varchar(36) NOT NULL,
    ->   `name` varchar(100) DEFAULT NULL,
    ->   `memo` varchar(255) DEFAULT NULL
    -> ) ENGINE=InnoDB AUTO_INCREMENT=9 ENGINE =FEDERATED CONNECTION='mysql://root:yehaver@192.168.100.101:3306/test/sys_myfirst';
Query OK, 0 rows affected (0.64 sec)

mysql> select * from sys_myfirst;
+----+-------+-------------------+
| id | name  | memo              |
+----+-------+-------------------+
| 1  | test1 | hello world!      |
| 3  | test3 | hello world hehe! |
| 2  | test2 | hello world haha! |
+----+-------+-------------------+
3 rows in set (0.11 sec)

mysql-cluster安装与配置相关推荐

  1. MySql Cluster 安装,Centos,双管理,多数据,多SQL节点

    2019独角兽企业重金招聘Python工程师标准>>> MySql Cluster 安装 安装步骤->安装步骤 查看错误->错误集锦 节点作用->节点作用 测试结果 ...

  2. (八) 数据库集群技术—Galera Cluster安装与配置

    学习预览: (一)mysql 运维基础篇(Linux云计算从入门到精通) (二)mysql 索引和视图(数据库运维基础补充) (三)mysql 触发器.存储过程和函数(数据库运维基础补充) (四)My ...

  3. 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一第 1 章  MySQL的安装与配置...

    第 1 章 MySQL的安装与配置 深入浅出MySQL:数据库开发.优化与管理维护(第2版) 近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应 ...

  4. mysql网络安装教程_详细教程--MySQL的安装与配置

    免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的 标准化语言,其特点为体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,在 Web 应 ...

  5. MySQL的安装与配置--windows下安装

    转自:https://www.cnblogs.com/winton-nfs/p/11524007.html 免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问 ...

  6. MySQL教程(三)—— MySQL的安装与配置

    1  安装MySQL 打开附件中的文件(分别对应电脑系统为32/64位). 点next. 三个选项,分别对应典型安装.自定义安装和完全安装,在此选择典型安装(初学者). 点install. 广告,忽略 ...

  7. mysql下载安装及配置_mysql的下载,安装和配置

    顺道向大家介绍一下mysql的安装和配置,mysql数据库应该说是现在整个互联网行业最流行的数据库了,简单易用 1.下载,大家可以去官网下载最新的mysql版本,地址:http://dev.mysql ...

  8. ubuntu 13.04 mysql_Ubuntu 13.04 MySQL Proxy安装与配置

    Ubuntu 13.04 MySQL Proxy安装与配置 安装环境 Ubuntu 13.04 Shell $ sudo apt-get install mysql-proxy 1 $sudoapt- ...

  9. MySQL的安装与配置——详细教程 这是原地址https://www.cnblogs.com/winton-nfs/p/11524007.html

    免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的 标准化语言,其特点为体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,在 Web 应 ...

  10. MySQL免安装版配置部署详细教程

    MySQL免安装版配置部署详细教程 这里写目录标题 MySQL免安装版配置部署详细教程 部署MySQL免安装版(windows版) 1.windows的mysql配置文件是my.ini,将此文件放到m ...

最新文章

  1. 如何定制视频业务- ramdisk 内存文件系统
  2. python程序设计教材浅显易懂_这些python自学技巧,你不会?
  3. Linux_基础指令
  4. 文巾解题 9 回文数
  5. Are We Ready for SDN? Implementation Challenges for Software-Defined Networks
  6. 您可能不知道的五个高级Java同步器
  7. 前端学习(2330):angular之二级路由
  8. 计算器软件C语言课程设计实验报告,c简单计算器实验报告_相关文章专题_写写帮文库...
  9. corba的兴衰_代码广播的兴衰
  10. Python实现中文文档的简体与繁体互相转换
  11. opencv函数medianBlur( );
  12. SwitchHost提示管理员身份运行,不能修改hosts文件
  13. mysql如何导出数据脚本_MySQL 导出数据
  14. 区块链安全分析:安全是重中之重,需要各方企业共同守护 | 新加坡Meetup
  15. Unity学习-Prinmatives原形
  16. 生成地球人申请表、逍遥游pdf
  17. 3 Directory traversal
  18. 内存池(memory pool)
  19. 为什么国产操作系统要基于linux,解说国产Linux操作系统为什么都模仿Windows桌面...
  20. 短语、直接短语、句柄、素短语

热门文章

  1. 教小师妹学多线程,看完我写的例子,脸红成那样!
  2. D3D9学习笔记之初始化Derect3D
  3. C# 将系统时间转换成农历时间
  4. Ubuntu18.04配置运行Kintinuous
  5. 网工必须要了解BGP外部网关路由选择协议
  6. Python 操作 Excel 表格
  7. 仿百度文库解决方案——利用FlexPaper显示Flash(SWF)
  8. 2022计算机类投稿心得(须知)
  9. cocos2d-x csb特效文件显示
  10. cocos2d 由导出文件.csb反推出cocosUI工程