MySql数据库双机集群

MySql数据库双机集群
MySql数据库双机集群

MySql数据库双机集群

1、目的

为了实现MySQL两台主机之间的双机热备,并且在任意一台数据节点机器出现故障时,不需要人工干涉,整个集群仍然可以提供服务。

下面介绍下mysql的集群基本概念:

MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个Cluster中运行多个MySQL 服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。

一、MySQL Cluster概述

MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。

所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。

通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的 Cluster 数据管理。

二、MySQL Cluster 基本概念

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

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

目前,MySQL Cluster的 Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中, Cluster的每个部分被视为1个节点。

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

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

SQL节点:这是用来访问 Cluster数据的节点。对于MySQL Cluster,

客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL 节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“https://www.360docs.net/doc/836833924.html,f”后使用“mysqld”启动。

注释:在很多情况下,术语“节点”用于指计算机,但在讨论MySQL Cluster时,它表示的是进程。在单台计算机上可以有任意数目的节点,为此,我们采用术语“ Cluster主机”。

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

此外,可以有任意数目的 Cluster客户端进程或应用程序。它们分为两种类型:

标准MySQL客户端:对于MySQL Cluster,它们与标准的(非 Cluster 类)MySQL没有区别。换句话讲,能够从用PHP、Perl、C、C++、Java、Python、Ruby等编写的现有MySQL应用程序访问MySQL Cluster。

管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点、启动和停止消息跟踪(仅调试版本)、显示节点版本和状态、启动和停止备份等的命令。

2、环境

第一主机系统:Red Hat Enterprise Linux 5.3

Host:mail

IP:192.168.1.248

以下简称248

第二主机系统:Red Hat Enterprise Linux 5.4

Host:mysqltest

IP:192.168.1.239

以下简称239

Mysql Cluster版本:mysql-6.0.4-alpha.tar.gz 该版本不是最新的。

参考文档为:https://www.360docs.net/doc/836833924.html,/hustcat/articles/1585600.html

安装系统时将系统自带的mysql数据库不要安装,由于公司服务器资源有限,原本最少需要3台服务器的集群为了测试使用两台,如果在真实的环境中,最好的每个节点一台服务器,最少也要3台服务器,不然在出现问题后可能无法发挥集群的高性能和高冗余的特点。

3、工具

除了上面说的系统和数据库,连接工具使用SSH或PUTTY皆可。

4、具体操作

4.1、在248和239上安装mysql数据库

将下载好的mysql-6.0.4-alpha.tar.gz通过ssh工具分别传到248和239的/opt下,然后使用下面的命令将其移动到/tmp/package下,这是为了方便以后的操作,具体命令如下:

然后创建mysql用户组和mysql用户,命令如下:

然后进入/tmp/package文件夹对其进行解压,命令如下:

然后将tar.gz包删除,命令如下:

然后将解压出来的文件夹重命名为mysql,命令如下:

然后进入mysql文件夹,执行配置和预编译,命令和参数如下:

然后等一会,当再次出现可输入命令状态时,说明已经编译完成,最后编译和安装mysql,具体命令如下:

这个命令的执行时间会稍微长一点。当再次出现可输入命令状态时,说明mysql数据库已经安装完成。

最后,为了方便操作,将各个常用命令创建快捷方式,然后安装数据库数据,命令如下:

其中第二条命令是错误的,不需要执行,其他依次执行即可。然后执行数据库数据初始命令,命令如下:

执行后,在出现的信息中有两个OK字样,说明初始化数据成功,字样如下:

到这里就完成了在248和239上的mysql数据库的安装。上面的步骤都需要在两台机器执行。

4.2、在248和239上配置各个节点

配置管理节点配置文件,首先需要创建配置文件,命令如下:

创建配置文件所在的文件夹

创建并编辑配置文件

这时会直接新建一个config.ini文件,并进入编辑状态,需要按“i”键才能进入修改状态,该配置文件的内容如下:

其中,248和239都做管理节点,数据节点和sql节点。如果按照上面的参考文件的内容复制粘贴配置文件之后需要将那里面的汉字说明删除,然后按“esc”键,退出修改状态,最后按“shift”+“;”,然后输入“wq”,回车,就保存并退出了。

然后配置通用的https://www.360docs.net/doc/836833924.html,f文件,mysqld及ndbd,ndb_mgmd均使用此配置文件。具体命令和内容如下:

按照上面同样的方法修改,保存和退出,如果是从参考文档中复制的内容,注意修改IP。

完成上面的内容后,mysql的双机集群就基本配置完成了,下面运行和测试下。

4.3、启动管理节点和初始化集群

由于上面配置的管理节点是两个,实际只需要一个就可以,当然,如果想要在每台节点机器上都能管理整个集群,那就可以像上面那样配置,在那个机器都可以管理。

启动管理节点的命令如下:

这是在239上执行的,因为上面的配置中,239的管理节点的ID为2,所以要对应上,执行后,会出现上面的错误,需要修改config.ini文件,

修改的命令如下:

然后删除配置文件中的最后一行[separator],239和248都需要删除此行,然后再重新执行下面的命令:

这次执行后,会出现以上警告信息,意思是不应该将数据节点和sql节点使用同一台机器,如果是真是环境确实不应该这么做,但只是测试,不用管他。下面进行初始化集群,命令如下:

这是在239上执行的,同时需要在248上也执行这个命令,当然参数ndb_nodeid就不能是4了,应该是3,不知道为什么的可以回头看下上面的配置内容,初始化集群就是数据节点的初始化。最后一个参数—initial只有在第一次启动数据节点时使用,以后再启动数据节点时,不要再加这个参数。完成后查看下当前的集群状态,可以在任意一台机器上执行下面的命令:

看到的结果如上,看到除了id=2的管理节点没有连接成功,其他的都连接上了,ndb_mgmd是管理节点的标识。上面说了,管理节点启动一个就行。

经过上面的步骤,整个集群就运行起来了,下面来测试下。

4.3、测试集群

在文档的最开始介绍mysql集群的时候说过,mysql集群有高性能,高可用和高冗余的特点,高性能还不知道怎么测,下面就测试下可用和冗余性吧。在测试之前首先得启动239和248的mysql服务,命令如下:

在239上执行上面的命令,这时会有问题,因为239上的mysql在集群中显示已经连接成功了,说明已经启动了,但使用连接命令连接mysql时会出现一下错误:

这说明没有找到mysql.sock文件,这是因为在配置https://www.360docs.net/doc/836833924.html,f文件之前,安装mysql 之后,mysql就已经启动了,mysql.sock和机器名.pid文件都已经生成在默认的目录下了,所以会出现这样的错误,这时需要查找出已经启动的mysql的pid,然后用kill命令将其杀死,在用上面的启动mysql命令启动即可,先要将mysql 集群停止下。具体操作如下:

该命令用于停止集群。

上面命令用于显示mysql相关的进程信息。

在列表中,第二列的数字为各个进程的进程号,也就是pid,使用kill命令将其挨个杀死,命令如下:

3395为进程号,执行多次kill,最后使用显示mysql相关信息只剩下下面的一条为止:

然后再启动集群,顺序为,管理节点,数据节点和sql节点,命令如下:

239上执行上面的命令。

239上执行上面的命令。

248上执行上面的命令。

239上执行上面的命令。

248上执行上面的命令。

然后看各自的mysqld.log日志,有如下字样说明启动成功:

现在再次查看集群的状态:

OK,没问题,继续进行测试,连接mysql,在239上执行:

出现mysql的命令提示符,说明连接成功。创建数据库和表,命令如下:

然后向dog表中插入一条数据。命令如下:

然后查看248中的mysql里是不是有同样的数据库,表和数据,命令如下:

其中,cd backup是错误的,不必执行,从上图中可以看到,数据已经同步到248中了,如果有兴趣的可以测试其他的操作,这里由于时间问题,不再演示其他操作。通过测试大家会发现,不论在哪台机器上进行增删改操作,都会自动同步到另一台机器上,此称为mysql cluster的高冗余。这里mysql数据库和information_schema数据库不会同步。如果是多台sql节点,那数据可以说很安全了。

下面测试可用性,将非管理节点的服务器网线拔掉,然后在另一台机器上添加数据,最后再把网线插上,然后查看数据,看是否自动同步。如果同步说明有可用性。

在整个集群中,最主要的是数据节点,只有数据节点在宕机时,其他的都可用,才能保证整个集群的可用。Sql节点的测试在这里简单说下,停掉任意一个sql 节点,用另一个节点进行增删改查操作,可以正常操作的话说明测试成功。

怎样解决mysql 集群问题集

怎样解决mysql 集群问题集 MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,专职优化、域名注册、网站空间、虚拟主机、mysql数据库、服务器托管、vps主机、服务器租用的中国信息港来为你做详细介绍! 错误1、[MgmtSrvr] WARNING -- 1011 Unable to connect with connect string: nodeid=0,localhost:1186 处理:一般这个情况是系统ping 127.0.0.1不通,可能是网卡问题,但是ping 在eth0和eth1上配置的IP地址却通,所以处理方法是在/etc/hosts文件中添加: 192.168.1.5 localhost 即可。192.168.1.5根据自己配置的IP地址进行修改。 错误2、在修改了数据节点目录后,数据节点遇到如下错误:[ndbd] ERROR -- Couldn't start as daemon, error: 'Failed to lock pidfile '/opt/mysql_cluster/ndb_data/ndb_11.pid', errno: 37' 处理:由于数据节点的目录是挂载在nas存储上面,由于防火墙问题导致nas 挂载异常,以致出现以上错误,关闭防火墙,重新挂载nas存储即可。 错误3、在修改了数据节点目录后,mysql节点遇到如下警告:[Warning] NDB : Tables not available after 15 seconds. Consider increasing --ndb-wait-setup value,导致管理节点识别不到mysql节点 处理:经检查,是配置文件https://www.360docs.net/doc/836833924.html,f里ndb-connectstring参数的配置有误,改成正确的管理节点IP地址即可。 Warning: World-writable config file '/etc/https://www.360docs.net/doc/836833924.html,f' is ignored Unable to connect with connect string: nodeid=0,localhost:1186 Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed. 2011-06-08 23:31:35 [ndbd] ERROR -- Could not connect to management server, error: '' 中国信息港,专业提供域名虚拟主机空间申请等服务,ICANN授权域名注册商,全国十强虚拟主机提供商,电信、联通、双线、海外等多种线路上百种虚拟主机空间任选,云主机,虚拟主机,vps主机,香港虚拟主机,虚拟主机申请,空间申请,服务器托管,服务器租用,云享主机,ShopEx空间,phpwind空间,discuz空间,php空间。

MySQL优化自学手册

/* * ------------------------------------------------------------------- * |-标题:MySQL优化自学手册 * |-整理: 杨白玉 * |-时间: 2015年9月25日 * ------------------------------------------------------------------- */ mysql优化 前提:数据库性能的优劣直接影响到程序的性能,所以数据库的设计与参数配置至关重要。 数据库优化的方式: 1、数据库设计 2、sql语句的优化 3、数据库参数的配置(扩展数据库的缓存或者数据库的空间) 4、恰当的硬件资源(钱的问题,有钱就能满足)

第一章数据库的设计 一、数据库的设计: 数据库的设计指的就是表的设计。设计要符合三范式(规范的模式),有时我们也需要适当的逆范式; 二、什么是三范式? 第一范式:1NF是对属性(可理解为字段)的原子性约束,要求属性具有原子性,不可再分。第二范式:2NF是对记录的唯一性约束,要求记录有唯一的标识,即实体的唯一性; 第三范式:3NF是对字段冗余的约束,即任何字段不能由其他字段派生出来,要求字段没有冗余,这是可以做到的。 然而,没有冗余的数据库未必是好的数据库,有时候为了提高运行的效率,我们也会使用适当的逆范式,方法就是:增加字段。 一般来说,1NF在关系型数据库中是自动满足的; 2NF通常通过主键自增的唯一性来约束。而且,记录本身也很少会完全一样; 3NF主要是在主从表中,不会出现相同的字段与字段值;

第二章 SQL语句的优化 一、SQL语句优化的步骤: 1、通过show status 命令了解各种sql的执行频率; 2、定位执行效率较低的SQL语句,主要集中在查询语句 3、通过explain分析低效率的sql语句的执行情况 4、确定问题并采取相应的优化措施 二、sql语句有几类? ddl(数据定义语句)[create alter drop] dml(数据操作语句)[insert delete update] select dtl(数据事物语句)[commit rollback savepoint] dcl(数据控制语句)[grant revoke] show status命令 该命令可以显示mysql数据库当前的状态,我们主要重点关注“Com”开头的指令。 1、显示数据库开启本次会话后到目前的信息: show status like “Com%”; <=> show session status like “Com%”; 2、显示数据库从启动到目前的信息: Show global status like “Com%”;

MySQL Cluster单机搭建集群环境

运行环境: centos6.1 Mysql版本: MySQL-cluster-gpl-7.2.6-linux2.6-x86_6 下载地 址:https://www.360docs.net/doc/836833924.html,/Downloads/MySQL-Cluster-7.2/mysql-cluster-gpl-7.2.6-linux2. 6-x86_64.tar.gz 对于这第一个MySQL数据库的集群,它由1个单一的MySQL服务引擎(mysqlds)、两个数据节点(ndbd)和一个单一的管理节点(ndb_mgmd)共同组成,所有的节点都运行在同一台主机上。 为配置文件和数据文件创建必要的存储文件夹,分别要建立如下几个文件夹: ① /home/mysql/my_cluster ② /home/mysql/my_cluster/ndb_data ③ /home/mysql/my_cluster/mysqld_data ④ /home/mysql/my_cluster/mysqld_data/mysql ⑤ /home/mysql/my_cluster/mysqld_data/ndbinfo ⑥ /home/mysql/my_cluster/conf 具体安装步骤: 1. 添用加户与组mysql [plain]view plaincopy 1.shell> groupadd mysql 2.shell> useradd -r -d /home/mysql -g mysql mysql [plain]view plain copy 1.shell> groupadd mysql 2.shell> useradd -r -d /home/mysql -g mysql mysql 2. 切换到mysql用户权限下 [plain]view plaincopy 1.shell> su - mysql [plain]view plain copy 1.shell> su - mysql

MYSQL安装和维护手册

Mysql安装和维护手册

目录 1.在Linux下安装Mysql (3) 1.1RPM安装MySQL (3) 1.2源码安装mysql (4) 1.3Mysql管理 (6) 3.Mysql的配置管理 (8) 4.Mysql复制管理 (12) 4.1现有分布式数据库架构 (12) 4.2主从异步同步配置操作实例 (12) 4.3半同步复制 (14) 5.Mysql多实例配置 (15)

1.在Linux下安装Mysql 1.1RPM安装MySQL 建议在Linux中使用RPM包来安装MySQL。MySQL RPM目前已经嵌入到SuSE Linux 7.3系统中,但是应当能在大多数支持rpm和使用glibc的Linux版本中工作。 MySQL AB不提供与具体平台相关的RPM;具体平台相关的RPM和通用RPM之间的区别是具体平台相关RPM为目标平台而构建,为动态连接。而通用RPM与Linux线程之间是静态连接。 注释:通常由其它供应商提供MySQL的RPM分发版。其特征和功能与MySQL AB所构建的不同,该手册中的指令不一定适合安装其它供应商提供的MySQL的RPM分发版。此时应咨询供应商的说明。 在大多数情况,你只需要安装MySQL-server和MySQL-client软件包来安装MySQL。在标准安装中不需要其它的包。 如果安装MySQL软件包时出现从属错误(例如,“error:removing these packages would break dependencies:libmysqlclient.so.10is needed by..”),你还应当安装包MySQL-shared-compat,其中包括两个向后兼容的共享库(MySQL4.0为libmysqlclient.so.12,MySQL3.23为libmysqlclient.so.10)。 可以使用以下RPM包: ·MySQL-server-VERSION.glibc23.i386.rpm MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。注释:在MySQL4.0.10之前,服务器RPM文件被称为MySQL-VERSION.i386.rpm。也就是说,名称中不含有-server。 ·MySQL-client-VERSION.glibc23.i386.rpm 标准MySQL客户端程序。你可能总是要安装该软件包。 ·MySQL-devel-VERSION.glibc23.i386.rpm 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要。 ·MySQL-shared-VERSION.glibc23.i386.rpm 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。 ·MySQL-shared-compat-VERSION.glibc23.i386.rpm 该软件包包括MySQL3.23和MySQL4.0的共享库。如果你安装了应用程序动态连接MySQL3.23,但是你想要升级到MySQL4.0而不想打破库的从属关系,则安装该软件包而不要安装MySQL-shared。从MySQL4.0.13起包含该安装软件包。 ·MySQL-embedded-VERSION.glibc23.i386.rpm 嵌入式MySQL服务器库(从MySQL4.0起)。 ·MySQL-VERSION.glibc23.i386.rpm 包含以前所有软件包的源码。可用来在其它架构上重建RPM(例如,Alpha或SPARC)。要想看到RPM软件包内的所有文件(例如,MySQL-server RPM),运行: shell>rpm-qpl MySQL-server-VERSION.i386.rpm 要想执行标准最小安装,运行: shell>rpm-i MySQL-server-VERSION.i386.rpm shell>rpm-i MySQL-client-VERSION.i386.rpm 要想只安装客户端软件包,运行:

mysql集群部署文档

3台机器搭建集群环境 1. 集群配置如下 (3台机器) 管理节点:192.168.6.134 数据节点1:192.168.6.135 数据节点2:192.168.6.136 sql节点1:192.168.6.135 sql节点2:192.168.6.136 我使用3台机器进行配置,其中两台机器上的数据节点与sql节点在一起 2. 管理节点安装(192.168.6.134) 安装 1.shell> groupadd mysql 2.shell> useradd mysql -g mysql 3.shell> mv mysql-cluster-gpl-7.2.6-linux2.6-x86_6 4.tar.gz /usr/local/ 4.shell> cd /usr/local/ 5.shell> tar zxvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz /usr/local/ 6.shell> mv mysql-cluster-gpl- 7.2.6-linux2.6-x86_64 mysql 7.shell> chown -R mysql:mysql mysql 8.shell> cd mysql 9.shell> scripts/mysql_install_db --user=mysql 配置管理节点 1.shell> mkdir /var/lib/mysql-cluster 2.shell> cd /var/lib/mysql-cluster vi config.ini 添加以下内容 1.[ndbd default] 2.NoOfReplicas=2 3.DataMemory=80M 4.IndexMemory=18M 5.[ndb_mgmd]

mysql集群架构说明与配置实例-详细过程

Mysql集群架构文档 MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个Cluster 中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。(注意,要想获得MySQL Cluster 的功能,必须安装mysql-server 和mysql-max RPM)。 目前能够运行MySQL Cluster 的操作系统有Linux、Mac OS X和Solaris(一些用户通报成功地在FreeBSD上运行了MySQL Cluster ,但MySQL AB公司尚未正式支持该特性)。 一、MySQL Cluster概述 MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。 MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于Cluster 中这些组件的关系,请参见下图:

所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“N DB存储服务器”。 通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的Cluster 数据管理。 二.安装环境 1.Linux操作系统版本:CentonOS 4.7 2.Mysql数据库版本:mysql-max-5.0.24-linux-i686.tar.gz 共三台机器安装了CentonOS4.7版本,首先保证把系统中没有一个包带有mysql的,有的话

组建MySQL集群的几种方案,优劣与讨论

组建MySQL集群的几种方案 LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个) DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?) MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?) MySQL Cluster (社区版不支持INNODB引擎?商用案例不足?稳定性欠佳?或者还有其他问题?又或者听说现在发展不错?) MySQL + MHA (如果配上异步复制,似乎是不错的选择,又和问题?) MySQL + MMM (似乎反映有很多问题,未实践过,谁能给个说法) 淘宝的Cola(似乎现在停止开发了?)?变形虫Amoeba(事务支持?) 或者,其他方案? 回答1: 不管哪种方案都是有其场景限制或说规模限制,以及优缺点的。 1. 首先反对大家做读写分离,关于这方面的原因解释太多次数(增加技术复杂度、可能导致读到落后的数据等),只说一点:99.8%的业务场景没有必要做读写分离,只要做好数据库设计优化和配置合适正确的主机即可。 2.Keepalived+MySQL --确实有脑裂的问题,还无法做到准确判断mysqld是否HANG 的情况; 3.DRBD+Heartbeat+MySQL --同样有脑裂的问题,还无法做到准确判断mysqld是否HANG的情况,且DRDB是不需要的,增加反而会出问题; 3.MySQL Proxy -- 不错的项目,可惜官方半途夭折了,不建议用,无法高可用,是一个写分离; 4.MySQL Cluster -- 社区版本不支持NDB是错误的言论,商用案例确实不多,主要是跟其业务场景要求有关系、这几年发展有点乱不过现在已经上正规了、对网络要求高; 5.MySQL + MHA -- 可以解决脑裂的问题,需要的IP多,小集群是可以的,但是管理大的就麻烦,其次MySQL + MMM 的话且坑很多,有MHA就没必要采用MMM 建议: 1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或Keepalive 或heartbeat

MySQL_Cluster集群配置方案

在为某证券公司设计其OA架构时,初期客户是30万用户在线;然而在项目实施中,客户又提出50万用户同时在线的需求,而且都有写的需求;这样初始的设计master-master-slave,读写分离满足不了客户的要求,所以我们打算采用Mysql Cluster方案;MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个Cluster中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。 一、MySQL Cluster概述 MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。 MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。 所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。 通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的 Cluster 数据管理。 二、MySQL Cluster 基本概念 “NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。 MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在 Cluster 级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于 Cluster本身内的其他数据。 目前,MySQL Cluster的 Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中, Cluster的每个部分被视为1个节点。 管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令 “ndb_mgmd”启动的。 数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就

mysql的ndb集群

##################################################################### ### mysql的ndb集群是一个热备与负载均衡的mysql的数据库集群,安全性可达到99.99%,是有mysql节点,数据库节点,管理节点组成。如下图 mysql节点A-----------mysql节点B | \ / | | 管理节点 | | / \ | 数据节点A------------数据节点B ##################################################################### ### ############设备软件需求:############## 5台服务器,RHEL5.2操作系统,mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz 192.168.0.13 管理节点 192.168.0.61 mysql节点A 192.168.0.62 mysql节点B 192.168.0.63 数据节点A 192.168.0.64 数据节点B 配置方案: ########1.节点软件安装:#############

将mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz分别在mysql节点A、B,数据节点A、B上安装。 # useraddmysql # tar zxvf mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz # mv mysql-cluster-gpl-7.1.4b-linux-i686-glibc23 /usr/loacl/mysql # chown -R mysql.mysql /usr/local/mysql ########2.配置mysql节点:(在192.168.0.61上)########### # vim /etc/https://www.360docs.net/doc/836833924.html,f [mysqld] # mysql服务进程参数 ndbcluster ndb-connectstring=192.168.0.13 [mysql_cluster] # 集群服务进程指向管理节点 ndb-connectstring=192.168.0.13 # scp /etc/https://www.360docs.net/doc/836833924.html,f 192.168.0.62:/etc/https://www.360docs.net/doc/836833924.html,f 两个sql节点的配置完全相同,可以copy. #########3.配置数据节点:(在192.168.0.63上)############# # vim /etc/https://www.360docs.net/doc/836833924.html,f [mysqld] Datadir=/usr/local/mysql/data #数据在本地的存储位置 ndbcluster ndb-connectstring=192.168.0.13

MYSQL集群搭建指引文档

在PCSERVER上安装MARIADB。 一、先检查主机的环境 如果主机已经安装了MYSQL的早期版本,并且有MYSQL实例正在主机上运行,要先行清理早期的版本,具体步骤如下: 1、优雅地停掉当前正在运行的MYSQL服务。 2、卸载MYSQL早期版本及其组件 rpm -qa|grep -i mysql #查看已经安装的mysql相关包 rpm -ev package_name #package_name包名比如:mysql-server-5.0.51b-1.el5 二、用YUM安装MARIADB 具体步骤如下: 1、cd /etc/yum.repos.d 2、vi MariaDB.repo然后粘上官网上的内容(用CENTOS操作系统举例) Here is your custom MariaDB YUM repository entry for CentOS. Copy and paste it into a file under /etc/yum.repos.d/ (we suggest naming the file MariaDB.repo or something similar). See "Installing MariaDB with yum" for detailed information. 3、执行yum -y install MariaDB-client MariaDB-server MariaDB-devel 4、如果发现用YUM装时,代理服务器的网速下载太慢了导致超时然后报错退出,解决方案如下: A自己用个人电脑到官网下载列表中的RPM文件,

MYSQL 详细图文使用手册

MYSQL 详细图文使用手册目录 一、前言 二、MYSQL安装 1.下载 2.安装 三、MYSQL 搭建 1.设置环境变量 2.设置开启外网权限 3.连接数据库 4.更改数据储存位置 四、MYSQL创建数据库 1.MySQL Workbench 8.0 CE界面介绍 2.创建数据库 3.创建数据表 4.插入数据 5.查询数据 6.删除数据 7.修改数据 五、使用python导入导出数据

一、前言 1.什么是MySQL? MySQL 是一种数据库。数据库定义了存储信息的结构。以表的方式存储信息,设置有

索引可以快速定位到需要的内容,避免查找数据时要遍历整个库,耗费资源速度也慢。 2.MYSQL对比EXCEL 相同点: 都是用来处理数据的工具,而且特别擅长处理一维二维表形式的数据。 不同点: a.Excel的多个sheet之间不能设计复杂的数据关系,而数据库的的表之间可以有复杂的 关系,这也是数据库的最大特点,关系型数据库的名字由此而来; b.Excel不能共享,如EXCEL在其他人需要使用时需要单独发送文件,并且修改不能同 步,数据库能可以轻松共享,数据随时共享且同步; c.能力方面,Excel可以实现的数据处理功能数据库都可以做到,同时又具备很多Excel 没有的功能,如SQL查询、数据聚合、数据索引等等; d.EXCEL是电子表格,其特点是所见即所得,可视性强,操作简单,不需编程就能制作 相对复杂的表格,数据库较为概念化,可视性不强,需要学习SQL语句; e.EXCEL 最大储存100万行数据(2017版本以上),过万级数据计算会出现卡顿,MYSQL 数据库单表能储存64PB(1PB=1024TB),每秒能处理百万级数据。 类似关系: MYSQL上的数据库(schema)相当于EXCEL的工作簿(workbook)文件;

Mysql双主架构安装手册

Mysql5.7.21+双主架构安装 XX年XX月XX日

修订历史记录 (A-添加,M-修改,D-删除)

目录 1概述 (4) 1.1简介 (4) 1.2术语和缩写词 (7) 2使用场景 (7) 3安装 (8) 3.1系统要求 (8) 3.2JDK环境以及其他依赖包 (8) 3.3前期准备(https://https://www.360docs.net/doc/836833924.html,/downloads/mysql/) (8) 3.4安装包名称 (9) 3.5部署步骤(以下使用InnoDB存储引擎) (9) 3.6验证方案 (18) 4常用操作 (18) 5原理以及实现方式 (18)

1概述 1.1简介 1.1.1什么是MySQL MySQL是一种关系型数据管理系统;关系模型及二维关系,二维关系主要是表,表是由行(row)、列(column)组成,为了能够加速表中 的数据查询,给表创建索引(index) 1.1.2MySQL的存储引擎是什么? MySQL中的数据以各种不同的方法存储在内存或者文件中。这些方法中的每一种技术都使用不同的存储机制、索引方式、锁机制并且最终 提供不同的功能和能力。通过选择不同的技术,能够获得额外的效率提 升,从而改善整体应用功能;这些不同的技术结合相关的功能在MySQL 中被称作为存储引擎,一般也被称为表类型; MySQL中有的表简单,有的表复杂,有的表不需要来存储任何长期数据,有的表读取时非常快,但是插入数据特别慢;而在实际使用过程 中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数 据,数据的处理也会存在差异。那么对于MySQL来说,他提供了多种 类型的存储引擎。 1.1.3MySQL主流存储引擎MySIAM、InnoDB区别 a:存储结构 MySIAM:数据在磁盘上存储成3个文件。文件的名字以表的名

Mysql-cluster安装配置

Mysql-cluster 7.2.5的安装配置 OS:Ubuntu Data1 10.0.0.102 数据节点,SQL节点 Data2 10.0.0.103 数据节点,SQL节点 Ndb 10.0.0.104 管理节点 1、下载解压到/usr/local/mysql tar -zxvf mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz mv mysql-cluster-gpl-7.2.5-linux2.6-x86_64 /usr/local/mysql 2、创建mysql用户 useradd mysql chown -R mysql:mysql /usr/local/mysql/ 3、安装支持库 sudo apt-get install libaio1 4、修改/etc/profile以方便使用 PATH=$PATH:/usr/local/mysql/bin export PATH 5、安装mysql cd /usr/local/mysql/scripts ./mysql_install_db–basedir=/usr/local/mysql/–datadir=/usr/local/mysql/data/ --user=mysql 6、配置管理节点ndb 拷贝/usr/local/mysql/bin/ndb_mgm,ndb_mgmd两个文件到/usr/local/bin cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin mkdir /var/lib/mysql-cluster vim /var/lib/mysql-cluster/config.ini [ndbd default] NoOfReplicas=1 #每个数据节点的镜像数量 DataMemory=100M #每个数据节点中给数据分配的内存 IndexMemory=10M #每个数据节点中给索引分配的内存 [ndb_mgmd] #配置管理节点 NodeId=1 hostname=10.0.0.104 datadir=/var/lib/mysql-cluster/ #管理节点数据(日志)目录 [ndbd] #配置数据节点 NodeId=2 hostname=10.0.0.102 datadir=/usr/local/mysql/data #数据节点目录(数据存储位置)

mysql使用教程指南

有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接mysql、修改密码、增加用户等方面来学习一些mysql的常用命令。 一、连接mysql。 格式: mysql -h主机地址 -u用户名-p用户密码 1、例1:连接到本机上的mysql。 首先在打开DOS窗口,然后进入目录mysql in,再键入命令mysql -uroot -p,回 车后提示你输密码,如果刚安装好mysql,超级用户root是没有密码的,故直接回 车即可进入到mysql中了,mysql的提示符是:mysql> 2、例2:连接到远程主机上的mysql。假设远程主机的IP为:110.110.110.110,用户 名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出mysql命令:exit(回车) 二、修改密码。 格式:mysqladmin -u用户名 -p旧密码 password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令 mysqladmin -uroot password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 另一种方法: shell>mysql -u root -p mysql>SET PASSWORD FOR root=PASSWORD("root"); 三、增加新用户。(注意:和上面不同,下面的因为是mysql环境中的命令,所以后面都带 一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命 令: grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; 但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了, 解决办法见例2。 例2、增加一个用户test2密码为abc,让其只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即mysql数据 库所在的那台主机),这样用户即使用知道test2的密码,也无法从internet上直 接访问数据库,只能通过mysql主机上的web页来访问了。 grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; 如果你不想test2有密码,可以再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* to test2@localhost identified by ""; 有关数据库方面的操作。注意:你必须首先登录到mysql中,以下操作都是在mysql的提示符下进行的,而且每个命令以分号结束。 一、操作技巧 1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回 车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束 标志就OK。

Mariadb-galera集群配置

MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。 MariaDB Galera Cluster 介绍 MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。 主要功能: ●同步复制 ●真正的multi-master,即所有节点可以同时读写数据库 ●自动的节点成员控制,失效节点自动被清除 ●新节点加入数据自动复制 ●真正的并行复制,行级 ●用户可以直接连接集群,使用感受上与MySQL完全一致 优势: ●因为是多主,所以不存在Slavelag(延迟) ●不存在丢失事务的情况 ●同时具有读和写的扩展能力 ●更小的客户端延迟 ●节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不 同的 技术: Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图: 当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将 write-set 纪录的内容发送给其他节点。 write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。

MySQL双机热备+集群服务

MYSQL双机热备+LVS负载均衡集群实现 四台服务器均采用Asianux-3sp3 Linux操作系统!~ 1.MYSQL双机热备配置(主主模式) (1)配置mysql01服务器IP地址为172.16.1.101 (2)配置mysql02服务器IP地址为172.16.1.102 (3)在两台mysql服务器上安装MYSQL服务. (4)使用service mysqld start 启动mysql服务 (5)使用mysqladmin –u 账号password 密码来创建管理账号 (6)使用mysql –u 账号–p 回车输入密码登入MySQL

(7)在mysql>状态下使用grant all on *.* to 账号@对端mysql2服务器的ip地址identified by ‘密码’;创建双机热备所使用的mysql账号 (8)使用exit命令退出mysql (9)使用命令vi /etc/https://www.360docs.net/doc/836833924.html,f 编辑/etc/https://www.360docs.net/doc/836833924.html,f 在文件最上方添加如下信息: server-id=1 mysql的id 两台mysql服务器一个为1一个为2 log-bin=mysqlback 指定日志的名字 master-host=172.16.1.102 对端mysql的ip地址 master-user=hnspi 对端mysql设置的用于同步的账号,见(6) master-password 对端账号的密码 master-port=3306 指定数据库使用的端口号 保存退出 (10)使用命令service mysqld restart重启mysql服务 (11)使用mysql –u 管理账号–p 回车输入密码登入mysql (12)Mysql>状态下输入slave start ;启动slave(同步数据库)功能

mysql数据库集群解决方案

MYSQL数据库集群 解 决 方 案

目录 1、环境准备 (1) 2、具体的实验步骤 (4) 2.1、修改群集中各节点的网络参数 (4) 2.2、同步群集中各节点的时间 (6) 2.3、在各个节点上面产生密钥实现无密码的通讯 (7) 2.4、在各个节点上面配置好yum客户端 (8) 2.5、将下载好的rpm包上传到linux上的各个节点 (11) 2.6、在各节点上面安装所有的rpm包 (15) 2.7、在各节点上增加一个drbd设备(sdb1) (16) 2.8、配置drbd (19) 2.9、mysql的安装和配置 (26) 2.10、corosync+pacemaker的安装和配置 (32) 2.11、对各个节点进行相应的配置 (33) 2.12、配置群集的工作属性 (40) 2.13、定义集群服务及资源(node1) (41)

1、环境准备 实验环境:redhat enterprise 5.4 内核版本号:2.6.18-164.el5 1:Yum 服务器的构建 2:各个节点之间的时间的一致性(hwclock –s 或者搭建ntp服务器) 3:被定义为群集的资源都不可以在本地主机上进行启动,他们要被crm来进行管理。 4:由于dbrd,corosync,pacemaker等各群集的服务都需要通过主机名来进行解析,所以我们的主机的名字一定要能够被正确的解析。(hosts文件)

5:本实验要用到的软件包。 //*************由于drbd内核模块代码只在linux内核2.6.3.33以后的版本中才有,所以我们要同时安装内核模块和管理工具 *********// drbd83-8.3.8-1.el5.centos.i386.rpm drbd的管理包 kmod-drbd83-8.3.8-1.el5.centos.i686.rpm drbd的内核模块 //*************由于drbd内核模块代码只在linux内核2.6.3.33以后的版本中才有,所以我们要同时安装内核模块和管理工具 *********// cluster-glue-1.0.6-1.6.el5.i386.rpm 为了在群集中增加对更多节点的支持 cluster-glue-libs-1.0.6-1.6.el5.i386.rpm corosync-1.2.7-1.1.el5.i386.rpm corosync的主配置文件corosynclib-1.2.7-1.1.el5.i386.rpm corosync的库文件heartbeat-3.0.3-2.3.el5.i386.rpm 我们的heartbeat在这里是做四层的资源代理用的 heartbeat-libs-3.0.3-2.3.el5.i386.rpm heartbeat的库文件ldirectord-1.0.1-1.el5.i386.rpm 在高可用性群集中实验对后面realserver的探测 libesmtp-1.0.4-5.el5.i386.rpm openais-1.1.3-1.6.el5.i386.rpm做丰富pacemake的内容使用openaislib-1.1.3-1.6.el5.i386.rpm openais 的库文件

mysql集群

1、下载完成MariaDB-Galera-server galera MariaDB-client安装包 配置yum源 vim /etc/yum.repos.d/mariadb.repo [mariadb] name = MariaDB enable=1 priority=3 baseurl = https://www.360docs.net/doc/836833924.html,/5.5.33a/centos6-amd64/ gpgkey=https://https://www.360docs.net/doc/836833924.html,/RPM-GPG-KEY-MariaDB gpgcheck=1 安装yum -y install MariaDB-Galera-server galera MariaDB-client 2、编辑每台机器的hosts文件,添加如下内容 [root@client137 ~]# vim /etc/hosts 2.192.168.1.137 https://www.360docs.net/doc/836833924.html, client137 3.192.168.1.138 https://www.360docs.net/doc/836833924.html, client138 4.192.168.1.139 https://www.360docs.net/doc/836833924.html, client139 # 启动测试一下 6.[root@client137 ~]# /etc/init.d/mysql start 7.Starting MySQL.... SUCCESS! 8.[root@client137 ~]# chkconfig mysql on 设置MariaDB的root密码,并做安全加固 01.[root@client137 ~]# /usr/bin/mysql_secure_installation 02.[root@client137 ~]# /usr/bin/mysql_secure_installation 03.# 登陆数据库,授权用于集群同步的用户和密码 04.[root@client137 ~]# mysql -uroot -pkongzhong 05.mysql> GRANT USAGE ON *.* to sst@'%' IDENTIFIED BY 'sstpass123'; 06.mysql> GRANT ALL PRIVILEGES on *.* to sst@'%'; 07.mysql> FLUSH PRIVILEGES; 08.mysql> quit 09.# 创建并配置https://www.360docs.net/doc/836833924.html,f文件 10.[root@client137 ~]# cp /usr/share/mysql/https://www.360docs.net/doc/836833924.html,f /etc/https://www.360docs.net/doc/836833924.html,f.d/ 11.[root@client137 ~]# vim /etc/https://www.360docs.net/doc/836833924.html,f.d/https://www.360docs.net/doc/836833924.html,f 12.# 只需要修改如下4行:

相关文档
最新文档