MySQL集群Cluster

MySQL集群Cluster实际操作 1 环境配置 master 服务器 192 168 133 75mysql5 7slave1 服务器 192 168 133 50 mysql5 7slave2 服务器 192 168 133 100 mysql5 7Amoeba 服务器 192 168 133 136jdk1 6 Amoeba 客户端服务器 192 168 133 99 mysql2 初始环境准备 systemctlsto 搭建时间同步 3

一、MySQL主从复制

1、服务性能扩展方式

2、MySQL的扩展

2.1、读写分离

2.2、复制

每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制

  • 数据分布
  • 负载均衡读操作
  • 备份
  • 高可用和故障切换
  • MySQL升级测试

2.3、主从复制与读写分离

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。

3、主从复制原理 重要

3.1、主从复制相关线程

3.2、 跟复制功能相关的文件:

3.3、MySQL 主从复制延迟

  1. master服务器高并发,形成大量事务
  2. 网络延迟
  3. 主从硬件设备导致
    cpu主频、内存io、硬盘io

  4. 本来就不是同步复制、而是异步复制
    从库优化Mysql参数。比如增大innodb_buffer_pool_size,让更多操作在Mysql内存中完成,减少磁盘操作。
    从库使用高性能主机。包括cpu强悍、内存加大。避免使用虚拟云主机,使用物理主机,这样提升了i/o面性。
    从库使用SSD磁盘
    网络优化,避免跨机房实现同步








二、实际操作

1.环境配置

2.初始环境准备

systemctl stop firewalld setenforce 0 

3.搭建时间同步:

3.1 主服务器设置

[root@master ~]# yum install ntp -y [root@master ~]# vim /etc/ntp.conf 

在这里插入图片描述
改成
在这里插入图片描述




[root@master ~]# service ntpd start Redirecting to /bin/systemctl start ntpd.service 

3.2 从服务器设置

[root@localhost mysql]# yum install ntpdate -y [root@localhost mysql]# service ntpd start Redirecting to /bin/systemctl start ntpd.service [root@localhost mysql]# /usr/sbin/ntpdate 192.168.133.75 4 Dec 22:27:16 ntpdate[60067]: the NTP socket is in use, exiting [root@localhost mysql]# crontab -e no crontab for root - using an empty one crontab: installing new crontab 

在这里插入图片描述

[root@localhost mysql]# systemctl start crond 

4.配置主从

4.1 主服务配置

[root@master ~]# vim /etc/my.cnf 

在这里插入图片描述

[root@master ~]# systemctl restart mysqld.service  [root@master ~]# mysql -uroot -pzy44123 (root@localhost) [(none)]> grant replication slave on *.* to 'zy'@'192.168.133.%' identified by ''; Query OK, 0 rows affected, 1 warning (0.00 sec) (root@localhost) [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) (root@localhost) [hellodb]> show master status; 

在这里插入图片描述

4.2从服务器配置

[root@localhost mysql]# vim /etc/my.cnf 

在这里插入图片描述
id号按主从顺序依次类推

[root@localhost mysql]# systemctl restart mysqld.service [root@localhost mysql]# mysql -uroot -p 
(root@localhost) [(none)]> help change master to 
(root@localhost) [(none)]> change master to master_host='192.168.133.75',master_user='zy',master_password='',master_log_file='mysqlbk-binter_lo.000002',master_log_pos=10882; Query OK, 0 rows affected, 2 warnings (0.01 sec) (root@localhost) [(none)]> start slave; 开启从服务功能 Query OK, 0 rows affected (0.00 sec) (root@localhost) [(none)]> show slave status\G 

在这里插入图片描述
验证
查看主服务器上现有数据库
在这里插入图片描述
新建一个数据库








(root@localhost) [hellodb]> create database class; Query OK, 1 row affected (0.00 sec) 

5、搭建Amoeba 实现读写分离

5.1、安装 Java 环境

因为 Amoeba 基于是 jdk1.5 开发的,所以官方推荐使用 jdk1.5 或 1.6 版本,高版本不建议使用。

[root@localhost ~]# systemctl stop firewalld.service  [root@localhost ~]# setenforce 0 [root@localhost ~]# cd /opt 
[root@localhost opt]# cp jdk-6u14-linux-x64.bin /usr/local/ [root@localhost opt]# chmod +x /usr/local/jdk-6u14-linux-x64.bin [root@localhost opt]# cd /usr/local/ [root@localhost local]# ./jdk-6u14-linux-x64.bin 
[root@localhost local]# mv jdk1.6.0_14/ jdk1.6 [root@localhost local]# vim /etc/profile export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin 
[root@localhost local]# source /etc/profile 

5.2、安装amoeba

[root@localhost local]# mkdir /usr/local/amoeba [root@localhost local]# cd /opt [root@localhost opt]# tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba [root@localhost opt]# chmod -R 755 /usr/local/amoeba/ [root@localhost opt]# /usr/local/amoeba/bin/amoeba 

在这里插入图片描述

5.3、配置 Amoeba读写分离,两个 Slave 读负载均衡

#先在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问

grant all on *.* to test@'192.168.133.%' identified by ''; flush privileges; 

5.4、修改amoeba配置

[root@localhost opt]# cd /usr/local/amoeba/conf/ [root@localhost conf]# cp amoeba.xml amoeba.xml.bak [root@localhost conf]# vim amoeba.xml 

在这里插入图片描述
改成
在这里插入图片描述
在这里插入图片描述
改成
在这里插入图片描述










[root@localhost conf]# vim dbServers.xm 

在这里插入图片描述
注释
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上下2行删除,添加密码
在这里插入图片描述
在这里插入图片描述
改name=master 并改成主服务器地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述




























[root@localhost conf]#amoeba start & #开启服务 

在这里插入图片描述
可通过查询端口或者服务看是否配置成功
在这里插入图片描述
在这里插入图片描述
这时开启客户机
客户机上装有mysql
并且关闭防火墙












[root@localhost mysql]# mysql -uamoeba -p -h 192.168.133.136 -P8066 用户名 密码 Amoeba服务器地址 端口号 

在这里插入图片描述

5.5、测试读写分离

先关闭从服务器上的从的功能

(root@localhost) [(none)]> stop slave; Query OK, 0 rows affected (0.00 sec) 

5.6、测试写的能力

(root@localhost) [class]> set global general_log=1; Query OK, 0 rows affected (0.00 sec) 

三、中间件mycat

1、应用场景

2、优势

3、模拟架构

3.1、环境配置

3.2、主mysql服务器配置

[root@localhost ~]#vim /etc/my.cnf 

检查是否有以下命令,如没有请添加

server-id = 1 log-bin=master-bin binlog_format=MIXED log-slave-updates=true 

进入数据库

grant replication slave on *.* to 'zy'@'192.168.133.%' identified by ''; flush privileges; show master status; 

在这里插入图片描述

3.3 mysql从服务器配置

[root@localhost ~]#vim /etc/my.cnf 

检查是否有以下命令,没有请添加

server-id = 2 relay-log=relay-log-bin relay-log-index=slave-relay-bin.index 
[root@localhost ~]# systemctl restart mysqld.service  [root@localhost ~]#mysql -uroot -p 
(root@localhost) [(none)]> change master to master_host='192.168.133.75',master_user='zy',master_password='',master_log_file='mysqlbk-bin.000002',master_log_pos=599; Query OK, 0 rows affected, 2 warnings (0.01 sec) (root@localhost) [(none)]> start slave; Query OK, 0 rows affected (0.00 sec) (root@localhost) [(none)]> show slave status\G 

在这里插入图片描述

3.4、安装mycat服务器主机

[root@localhost ~]# systemctl stop firewalld.service  [root@localhost ~]# setenforce 0 [root@localhost ~]# yum install java -y [root@localhost ~]# mkdir /apps [root@localhost ~]# wget http://dl.mycat.org.cn/1.6.7.6/759/Mycat-server-1.6.7.6-release-759-linux.tar.gz 可能有更高版本,不过这个版本可以做成功 [root@localhost ~]# tar zxvf Mycat-server-1.6.7.6-release-759-linux.tar.gz -C /apps/ [root@localhost ~]# echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh [root@localhost ~]# source /etc/profile.d/mycat.sh [root@localhost ~]# mycat start Starting Mycat-server... 
[root@localhost ~]# ll /apps/mycat/logs/ [root@localhost ~]# tail -f /apps/mycat/logs/wrapper.log  

在这里插入图片描述
在这里插入图片描述

3.5、第一次在客户机上测试

[root@localhost mysql]# mysql -uroot -p -h 192.168.133.25 -P8066 这里密码初始为 需要加端口 

3.6、修改 mycat 配置文件

[root@localhost ~]# vim /apps/mycat/conf/server.xml 

在这里插入图片描述

在这里插入图片描述
50行左右修改删除
在这里插入图片描述
在这里插入图片描述
110行这里因为试验我们暂时不改,实际环境中还是要改的












在这里插入图片描述

[root@localhost conf]# vim schema.xml  

删除所有内容重新写如下内容

<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema> <dataNode name="dn1" dataHost="localhost1" database="hellodb" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="host1" url="192.168.133.75:3306" user="root" password=""> <readHost host="host2" url="192.168.133.50:3306" user="root" password=""/> </writeHost> </dataHost> </mycat:schema> 
[root@localhost ~]# mycat restart 重启mycat Stopping Mycat-server... Mycat-server was not running. Starting Mycat-server... 

在这里插入图片描述

[root@localhost conf]# cat /apps/mycat/logs/wrapper.log 查看日志 

在这里插入图片描述

3.7、主服务器上建立一个用户

(root@localhost) [(none)]> GRANT ALL ON *.* TO 'root'@'192.168.133.%' IDENTIFIED BY '' ; Query OK, 0 rows affected, 1 warning (0.00 sec) 

3.8、客户端测试

[root@localhost ~]# mysql -uroot -p -h 192.168.133.25 这时可以不加端口直接进入数据库了 (root@192.168.133.25) [(none)]> show databases; +----------+ | DATABASE | +----------+ | TESTDB | +----------+ 1 row in set (0.00 sec) (root@192.168.133.25) [(none)]> use TESTDB; Database changed (root@192.168.133.25) [TESTDB]> SHOW TABLES; 打开表显示的就是hellodb数据库里的表 

在这里插入图片描述

(root@localhost) [mysql]> select @@server_id; 

在这里插入图片描述

(root@localhost) [hellodb]> set global general_log=1; 主服务器打开日志 Query OK, 0 rows affected (0.00 sec) (root@localhost) [mysql]> set global general_log=1; 从服务器打开日志 Query OK, 0 rows affected (0.00 sec) 

主从服务器都输入监控数据库的命令

[root@localhost ~]# tail -f /usr/local/mysql/data/mysql_general.log  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207342.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:02
下一篇 2026年3月19日 下午2:02


相关推荐

  • ForkJoin 线程池[通俗易懂]

    ForkJoin 线程池[通俗易懂]一、分而治之严格来讲,分而治之不算一种模式,而是一种思想。它可以将一个大任务拆解为若干个小任务并行执行,提高系统吞吐量。主要讲两个场景,Master-Worker模式,ForkJoin线程池。ForkJoin线程池是jdk7之后引入的一个并行执行任务的框架,其核心思想也是将任务分割为子任务,有可能子任务还是很大,还需要进一步拆解,最终得到足够小的任务。将分割出来的子任务放入双端队列中,然后几个启动线程从双端队列中获取任务执行。子任务执行的结果放到一个队列里,另起线程从队列中获取数据,合并结果。

    2026年1月29日
    4
  • pycharm配置镜像源

    pycharm配置镜像源一 背景由于 python 再下载包时 下载时容易出现超时 等各种问题 原因 由于 Python 库的服务器都在国外 国内下载是速度普遍会很慢 所以需要配置一个镜像源来加快下载速度二 解决方案方案一配置国内镜像源清华 https pypi tuna tsinghua edu cn simple 阿里云 http mirrors aliyun com pypi simple 中国科技大学 https pypi mirrors ustc edu cn simple 华中

    2026年3月27日
    0
  • db4o的使用

    db4o的使用from:http://www.ibm.com/developerworks/cn/java/j-lo-db4o2/index.html前言在 db4o之旅 系列文章的第一部分:初识db4o 中,作者介绍了db4o的历史和现状,应用领域,以及和ORM等的比较。在这篇文章中,作者将会介绍db4o的安装、启动以及三种不同的查询方式:QBE(QuerybyEx

    2022年7月21日
    22
  • java全排列递归算法_java排列组合代码实现

    java全排列递归算法_java排列组合代码实现一、排列1、计算公式如下:2、使用方法,例如在1,2,3,4,5中取3个数排列:3、全排列当m=n时,结果为全排列。例如1,2,3,4的全排列如下:4、代码实现求无重复数组的全排列 /** *循环递归获取给定数组元素(无重复)的全排列 * *@paramoriList原始数组 *@paramoriLen原始数组size *@paramarrayCombResult数组排列结果集,可传null或空Set *@parampreList记录排列参数

    2022年8月31日
    4
  • Activity工作流引擎学习笔记(二)

    Activity工作流引擎学习笔记(二)核心APIProcessEngine说明:1) 在Activiti中最核心的类,其他的类都是由他而来。2) 产生方式:在前面看到了两种创建ProcessEngine(流程引擎)的方式,而这里要简化很多,调用ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。3) 可以产生R

    2022年7月11日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号