2-18-搭建mysql集群实现高可用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了2-18-搭建mysql集群实现高可用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含12753字,纯文字阅读大概需要19分钟。
内容图文
MySQL Cluster是MySQL适合于分布式计算环境的高实用、高冗余版本。Cluster的汉语是“集群”的意思。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。
MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
1.1 mysql 集群架构
图45.1 mysql的一种常见集群 SQL节点: 给上层应用层提供sql访问。 管理节点(MGM): 管理整个集群。 启动,关闭集群。 通过ndb_mgmd命令启动集群 存储/数据节点:保存cluster中的数据。 数据节点,可以提供副本。实现数据冗余。 NDB引擎:是一种 “内存中”的存储引擎 , 它具有可用性高和数据一致性好的特点。 拓展:NDB引擎介绍: NDB引擎 MySQL Cluster使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制,如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G。NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。 缺陷 · 基于内存,数据库的规模受集群总内存的大小限制 · 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证。 · 多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢 2.2 优点 · 多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。 · 扩展性很好,增加节点即可实现数据库集群的扩展。 · 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。
Mysql cluster的下载地址:https://dev.mysql.com/downloads/cluster/
将MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar 上传到xuegod63,
- yum -y remove mysql
- rpm -qa | grep mysql
- rpm -e --nodepsmysql-libs-5.1.71-1.el6.x86_64
- rm -rf /var/lib/mysql/*
- rm -rf /etc/my.cnf
- rm -rf /etc/init.d/mysqld
- rm -rf /etc/profile
2.mysql cluster版本安装准备 将MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar放到某个目录下(譬如/package) 下面,并且执行如下命令解压:
- tar -xvfMySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar
MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm MySQL-Cluster-devel-gpl-7.3.4-1.el6.x86_64.rpm MySQL-Cluster-embedded-gpl-7.3.4-1.el6.x86_64.rpm MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm MySQL-Cluster-shared-compat-gpl-7.3.4-1.el6.x86_64.rpm MySQL-Cluster-shared-gpl-7.3.4-1.el6.x86_64.rpm MySQL-Cluster-test-gpl-7.3.4-1.el6.x86_64.rpm3.每一台主机都要安装mysql集群软件包(server\client)批量安装
- yum -y installMySQL-Cluster-server-gpl-7.4.11-1.el6.x86_64.rpm
- rpm -ivhMySQL-Cluster-client-gpl-7.4.11-1.el6.x86_64.rpm
4.创建文件夹 (分如下3个类来创建对应的文件夹) 管理节点创建:
- mkdir /var/lib/mysql-cluster /var/run/mysqld/ 进程pid文件目录
数据节点存放数据:
- mkdir /var/run/mysqld
- mkdir /var/run/mysqld 进程pid文件目录
管理节点授权
- chown mysql.mysql -R /var/lib/mysql-cluster /var/run/mysqld/
- chown mysql.mysql -R /var/lib/mysql /var/run/mysqld/
- chown mysql.mysql -R /var/lib/mysql /var/run/mysqld/
--------------------------------------------------------------------------------------------------------- A RANDOMPASSWORD HAS BEEN SET FOR THE MySQL root USER ! You will findthat password in ‘/root/.mysql_secret‘. You mustchange that password on your first connect, no otherstatement but ‘SET PASSWORD‘ will be accepted. See the manualfor the semantics of the ‘password expired‘ flag. Also, theaccount for the anonymous user has been removed. In addition,you can run: /usr/bin/mysql_secure_installation which willalso give you the option of removing the test database. This isstrongly recommended for production servers. -----------------------------------------------------------------
- [root@xuegod64 ~]# cat/root/.mysql_secret
- # The random password setfor the root user at Wed Apr 1 21:10:532015 (local time): NSblG9hMkThTgFHY
- [root@xuegod63 ~]# whichndb_mgm
- /usr/bin/ndb_mgm
- [root@xuegod63 ~]# rpm -qf/usr/bin/ndb_mgm
- MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64
- [root@xuegod63 ~]# whichndb_mgmd
- /usr/sbin/ndb_mgmd
- [root@xuegod63 ~]# rpm -qf/usr/sbin/ndb_mgmd
- MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64
- [root@xuegod63 ~]# id mysql
- uid=495(mysql)gid=489(mysql) groups=489(mysql)
2 搭建mysql集群 经过复杂的初始配置,我们终于要搭建集群了。我们按配置,启动,测试的顺序来整理这一部分。 .2.1 各个机器上的配置 我们先将需求配置到各台机器上 1.xuegod63创建管理结点上配置文件
- [root@xuegod63 ~]vim /var/lib/mysql-cluster/config.ini #写入以下内容
- [ndbddefault]
- NoOfReplicas=2 #数据写入数量。2表示两份
- DataMemory=200M #配置数据存储可使用的内存
- IndexMemory=100M #索引给100M
- [ndb_mgmd]
- id=1
- datadir=/var/lib/mysql-cluster #管理结点的日志
- HostName=192.168.1.63 #管理结点的IP地址。本机IP
- ######data node options: #存储结点
- [ndbd]
- HostName=192.168.1.64
- DataDir=/var/lib/mysql #mysql数据存储路径
- id=2
- [ndbd]
- HostName=192.168.1.65
- DataDir=/var/lib/mysql #mysql数据存储路径
- id=3
- # SQLnode options: #关于SQL结点
- [mysqld]
- HostName=192.168.1.66
- id=4
- [mysqld]
- HostName=192.168.1.67
- id=5
- [root@xuegod64 /]# vim /etc/my.cnf #xuegod65配置一样
- [mysqld]
- datadir=/var/lib/mysql #mysql数据存储路径
- ndbcluster #启动ndb引擎
- ndb-connectstring=192.168.1.63 # 管理节点IP地址
- [mysqld_safe]
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- [mysql_cluster]
- ndb-connectstring=192.168.1.63 #管理节点IP地址
- [root@xuegod66~]#vim /etc/my.cnf #xuegod67配置一样
- [mysqld]
- ndbcluster #启动ndb引擎
- ndb-connectstring=192.168.1.63 # 管理节点IP地址
- [mysqld_safe]
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- [mysql_cluster]
- ndb-connectstring=192.168.1.63 #管理节点IP地址
- 说明:数据节点和SQL结点配置文件区别 ,就多一行
- 数据结点有:datadir=/var/lib/mysql #mysql数据存储路径。
- ndb_mgmd -f/var/lib/mysql-cluster/config.ini # mysql cluster 后台运行进程
- [root@xuegod63 ~]#netstat -antup | grep 1186
- tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 7057/ndb_mgmd
- tcp 0 0 127.0.0.1:1186 127.0.0.1:60324 ESTABLISHED 7057/ndb_mgmd
- tcp 0 0127.0.0.1:60324 127.0.0.1:1186 ESTABLISHED 7057/ndb_mgmd
- [root@xuegod64 ~]# ndbd--initial
- 2015-04-01 21:57:58 [ndbd]INFO -- Angel connected to‘192.168.1.63: 1186‘
- 2015-04-01 21:57:58 [ndbd]INFO -- Angel allocated nodeid: 2
- [root@xuegod65 ~]# ndbd --initial
- 2014-12-02 22:24:31 [ndbd]INFO -- Angel connected to‘192.168.1.63: 1186‘
- 2014-12-02 22:24:31 [ndbd]INFO -- Angel allocated nodeid: 3
- [root@xuegod66 ~]#mysqld_safe--defaults-file=/etc/my.cnf &
- [root@xuegod67 ~]#mysqld_safe--defaults-file=/etc/my.cnf &
- [root@xuegod63 ~]#ndb_mgm
- ndb_mgm> show
- [root@xuegod67 /]# cat/root/.mysql_secret
- # The random password setfor the root user at Tue Dec 2 21:25:592014 (local time): rWG1av6XjzT4ghfd
- [root@xuegod67 /]# mysql-uroot -prWG1av6XjzT4ghfd
- mysql> show databases;
- ERROR 1820 (HY000): You mustSET PASSWORD before executing this statement
- mysql> setpassword=password(‘123456‘);
- Query OK, 0 rows affected(0.72 sec)
- mysql> exit;
- Bye
- [root@xuegod67 /]# mysql-uroot -p123456 #测试登陆
- mysql>grant all privilegeson *.* to cluster@”%” identified by “123456” #授权
- mysql>flush privileges;
- [root@xuegod67 ~]# cat/root/.mysql_secret
- # The random password setfor the root user at Tue Dec 2 21:31:112014 (local time): 2nOsamIw5wkBNhDm
- [root@xuegod66~]# mysql-uroot -p2nOsamIw5wkBNhDm
- mysql> setpassword=password(‘123456‘);
- Query OK, 0 rows affected(0.42 sec)
- mysql> exit;
- Bye
- [root@xuegod66 ~]# mysql-uroot -p123456
- mysql> show databases;
- mysql>grant allprivileges on *.* to cluster@”%” identified by “123456” #授权
- mysql>flush privileges;
- mysql -ucluster -p123456 -h192.168.1.67
- mysql> create database db;
- mysql> use db;
- mysql> create tabletest(id int) engine=ndb;
- mysql> insert into testvalues(1000);
- mysql> select * from test;
- mysql -ucluster -p123456 -h192.168.1.66
- mysql> use db;
- mysql> select * fromtest;
- 停掉一个sql节点测试
- [root@xuegod67 ~]#mysqladmin -uroot -p123456 shutdown
- ndb_mgm> show 查看状态
- [root@xuegod63 /] # ndb_mgm
- -- NDB Cluster -- ManagementClient --
- ndb_mgm> shutdown
- Node 2: Cluster shutdowninitiated
- Node 3: Cluster shutdowninitiated
- 3 NDB Cluster node(s) haveshutdown.
- Disconnecting to allowmanagement server to shutdown.
- Node 2: Node shutdowncompleted.
- ndb_mgm> exit
- ps -axu | grep ndbd #查看不到,说明数据节点已经被关
- xuegod66和xuegod67上,手动关闭SQL结点服务
- [root@xuegod66 ~]#mysqladmin -uroot -p123456 shutdown
- [root@xuegod67 ~]#mysqladmin -uroot -p123456 shutdown
- [root@xuegod66 ~]# ps -axu |grep mysql
- [root@xuegod66 ~]# kill -97617
- [root@xuegod66 ~]# kill -97743
- [root@xuegod67~]# ps -axu |grep mysql #xuegod67同样kill掉
2.5 总结 再次启动,msyql集群启动:
- [root@xuegod63 /]# ndb_mgmd-f /var/lib/mysql-cluster/config.ini
- [root@xuegod64 /]#ndbd
- [root@xuegod65 /]#ndbd
- [root@xuegod66 /]#mysqld_safe --defaults-file=/etc/my.cnf &
- [root@xuegod67 /]#mysqld_safe --defaults-file=/etc/my.cnf &
- [root@xuegod63 ~]# ndb_mgm
- -- NDB Cluster -- Management Client --
- ndb_mgm> show
- Connected to Management Server at: localhost:1186
- Cluster Configuration
- ---------------------
- [ndbd(NDB)] 2node(s)
- id=2 @192.168.1.64 (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)
- id=3 @192.168.1.65 (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)
- [ndb_mgmd(MGM)] 1node(s)
- id=1 @192.168.1.63 (mysql-5.6.29 ndb-7.4.11)
- [mysqld(API)] 2node(s)
- id=4 @192.168.1.66 (mysql-5.6.29 ndb-7.4.11)
- id=5 @192.168.1.67 (mysql-5.6.29 ndb-7.4.11)
- ndb_mgm>
2-18-搭建mysql集群实现高可用
标签:style manual 数据 flush 多个 tac stop 调整 etc
本文系统来源:http://www.cnblogs.com/zhanghe9527/p/6933499.html
内容总结
以上是互联网集市为您收集整理的2-18-搭建mysql集群实现高可用全部内容,希望文章能够帮你解决2-18-搭建mysql集群实现高可用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。