博客
关于我
Mysql集群
阅读量:318 次
发布时间:2019-03-04

本文共 6905 字,大约阅读时间需要 23 分钟。

Mysql集群

1.安装MySQL

1.1 说明

为了更好模拟真实环境,这里基于虚拟机上CentOS7系统操作,虚拟机和CentOS7安装此处不再赘述,百度搜索超多。

1.2 安装MySQL

步骤:

  1. 下载MySQL安装包

    官网下载:

  2. 通过secureCRT工具连接Linux系统

  3. 上传mysql的安装包

    alt+p

    sftp> put C:\Users\11712\Downloads\mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

  4. 解压MySQL安装包

    mkdir mysql

    tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar -C mysql/

  5. 安装客户端

    cd mysql/

    rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm --force --nodeps

  6. 安装服务端

    rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm --force --nodeps

  7. 修改mysql默认字符集

    vim /etc/my.cnf

    添加如下内容:

    [mysqld]

    character-set-server=utf8

    collation-server=utf8_general_ci

    –在文件最下方添加

    [client]

    default-character-set=utf8

  8. 启动mysql服务

    service mysqld start

  9. 登录mysql

    mysql -u root -p 敲回车,输入密码

    初始密码查看:cat /var/log/mysqld.log

    在root@localhost:后面的就是初始密码

  10. 修改mysql登录密码

    set global validate_password_policy=0;

    set global validate_password_length=1;

    set password=password(‘密码’);

  11. 授权远程连接权限

    //授权

    grant all privileges on *.* to ‘root’ @’%’ identified by ‘123456’;

    //刷新

    flush privileges;

  12. 关闭Linux系统防火墙

    systemctl stop firewalld

  13. 重启mysql服务

    service mysqld restart

  14. 使用SQLYog工具连接MySQL

2.MyCat

2.1 简介

2013 年阿里的 Cobar 在社区使用过程中发现存在一些比较严重的问题,及其使用限制,经过 Mycat 发 人第一次改良,第一代改良版——Mycat 诞生。 Mycat 开源以后,一些 Cobar 的用户参与了 Mycat 的 开发,最终 Mycat 发展成为一个由众多软件公司的实力派架构师和资深开发人员维护的社区型开源软件。 2014 年 Mycat 首次在上海的《中华架构师》大会上对外宣讲,更多的人参与进来,随后越来越多的项目采用了 Mycat。

Mycat 是基于开源 cobar 演变而来,我们对 cobar 的代码进行了彻底的重构,使用 NIO 重构了网络模块,并且 优化了 Buffer 内核,增强了聚合,Join 等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。1.4 版 本以后 完全的脱离基本 cobar 内核,结合 Mycat 集群管理、自动扩容、智能优化,成为高性能的中间件。我们 致力于开发高性能数据库中间而努力。永不收费,永不闭源,持续推动开源社区的发展。

mycat官网:[]

2.2 MyCat作用

随着互联网的发展,数据量也不断增长,从GB到TB到PB。对数据的各种操作也越来越困难,一台数据库服务器已经无法满足海量数据的存储需求,所以由多台数据库服务器构成的数据库集群成为了必然的方式。不过,还要保证数据的一致性,查询效率等,同时又要解决多台服务器之间的通信、负载均衡等问题。

mycat是一款出色的数据库集群软件,不仅支持MySQL,常用关系型数据库也都支持

其实就是一个数据库中间件产品,支持MySQL集群。提供高可用性数据分片集群

我们可以像使用MySQL一样使用mycat。对于开发人员来说几乎感觉不到MyCat的存在

2.3 安装MyCat

步骤:

  1. 下载安装包

    下载地址:

  2. 通过CRT工具上传到Linux

    put C:\Users\11712\Downloads\Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

  3. 解压并查看

    tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz mycat/

    cd mycat

    ls

  4. 为mycat目录授权

    chmod -R 777 mycat

  5. 配置环境变量

    编辑文件:vim /etc/profile

    添加内容:

    export JAVA_HOME=/root/jdk/jdk1.8.0_291(jdk环境变量配置)

    export PATH=$JAVA_HOME/bin:$PATH(jdk环境变量配置)

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib(jdk环境变量配置)

    export MYCAT_HOME=/root/mycat

    加载文件:source /etc/profile

  6. 启动mycat

    进入目录:cd /root/mycat/bin

    执行启动:./mycat start

  7. 查看端口监听

    netstat -ant | grep 8066

  8. sqlyog连接mycat

    默认用户名:root

    默认密码:123456

    默认端口:8066

3.集群

3.1 环境准备

服务器准备:

集群模型:(Linux)MyCat-Mysql主服务器 (Linux)MySQL从服务器

克隆虚拟机:(如果是NAT还需修改MAC地址,此处使用桥接模式无需修改,使用ifconfig查看IP,用于远程连接)

修改MySQL配置文件uuid:

  • 编辑配置文件: vim /var/lib/mysql/auto.cnf
  • 将server-uuid更改一个数字即可

启动相关服务:

  • 关闭两台服务器的防火墙:systemctl stop firewalld(可以使用systemctl status firewalld查看是否关闭)
  • 启动两台服务器的MySQL:service mysqld restart
  • 启动两台服务器的MyCat:
    • cd /root/mycat/bin
    • ./mycat restart
  • 查看两台服务器监听端口:
    • netstat -ant | grep 3306
    • netstat -ant | grep 8066
  • 测试连接

3.2 主从复制

为了使用MyCat进行读写分离,我们要先配置MySQL数据库的主从复制

从服务器自动同步主服务器的数据,从而达到数据一致

进而,我们可以写操作时,只操作主服务器,而读操作,就可以操作从服务器了

主服务器配置文件修改:

  1. 在第一个服务器上,编辑MySQL配置文件

    //编辑mysql配置文件

    vim /etc/my.cnf

    //在[mysqld]下面添加

    //log-bin代表开启主从复制,server-id代表主从复制服务器的唯一标识

    log-bin=mysql-bin

    server-id=1

    innodb_flush_log_at_trx_commit=1

    sync_binlog=1

  2. 查看主服务器的配置

    //重启mysql

    service mysqld restart

    //登录mysql

    mysql -u root -p

    //查看主服务器的配置

    show master status;(mysql语句)

    需要记住File列和Position列的数据,后面配置从服务器需要使用

从服务器配置:

  1. 在第二个服务器上,编辑MySQL配置文件

    //编辑mysql配置文件

    vim /etc/my.cnf

    //在[mysqld]下面添加

    server-id=2

  2. 登录mysql

    //登录mysql

    mysql -u root -p

    //执行

    use mysql;

    drop table slave_master_info;

    drop table slave_relay_log_info;

    drop table slave_worker_info;

    drop table innodb_index_stats;

    drop table innodb_table_stats;

    source /usr/share/mysql/mysql_system_tables.sql;

  3. 重启mysql,重新登录,配置从节点

    //重启mysql

    service mysqld restart

    //登录mysql

    mysql -u root -p

    //执行

    change master to master_host=‘192.168.0.128’,master_port=3306,master_user=‘root’,master_password=123456,master_log_file=‘mysql-bin.000001’,master_log_pos=154;

    //开启从节点

    start slave;

    //查询结果

    show slave status\G;

    //Slave_IO_Running和Slave_SQL_Running都为YES才表示同步成功

  4. 测试:在主服务器创建数据库后,再到从服务器刷新查看是否同步

问题现象:ifconfig指令打印的信息没有IPv4,只有IPv6,同时/etc/sysconfig/network-scripts目录下的配置文件ifcfg-ens33消失了

解决方案:关闭所有虚拟机,点击工具栏 编辑 --> 虚拟网络配置 --> 还原默认设置 ,重启虚拟机就能恢复(不保证所有类似的问题都能解决)

3.3 读写分离

写操作只写入主服务器,由于有主从复制,从服务器中也会自动同步数据

读操作是读取从服务器中的数据

配置:

  • 修改主服务器server.xml:vim /root/mycat/conf/server.xml

    123456
    TESTDB
  • 修改主服务器schema.xml:vim /root/mycat/conf/schema.xml

    select user()
  • 重启mycat

    进入mycat路径:cd /root/mycat/bin

    重启mycat:./mycat restart

    查看端口监听:netstat -ant | grep 8066

操作过程中又出现了问题:

问题现象:ifconfig打印信息无IPv4信息,ifcfg-ens33配置文件也消失了,图形化界面右上角连接网络图标也消失了

解决方案:

  1. 由于和前面一个问题非常类似,就恢复默认设置,结果没用。
  2. 百度了一大推都是大同小异,说MAC地址问题,修改一下就行,然而测试并没什么用。例如:
  3. 还有说NetworkManager影响,使用指令关闭:systemctl stop NetworkManager,systemctl disable NetworkManager,试了一下还是没用。例如:
  4. 还不死心百度,终于根据这篇文章解决了,到这一步解决的:systemctl enable NetworkManager-wait-online.service。最后这篇大佬文章让我终于解决了这个问题,但是图形化界面右上角网络连接图标还是没有,但不影响远程连接。

3.4 分库分表

分库分表:将庞大的数据量拆分为不同的数据库和数据表进行存储。

水平拆分:

  • 根据表的数据逻辑关系,将同一表中的数据安照某种条件,拆分到多台数据库服务器上,也叫做横向拆分。
  • 例如:一张1000万的大表,按照一模一样的结构,拆分成4个250万的小表,分别保存到4个数据库中。

垂直拆分:

  • 根据业务的维度,将不同的表切分到不同的数据库上,也叫做纵向拆分。
  • 例如:所有的动物表都保存到动物库中,所有的水果表都保存到水果库中,同类型的表保存在同一个库中。

分库分表-水平拆分

  • 修改主服务器中配置文件server.xml:vim /root/mycat/conf/server.xml

  • 0
  • 修改主服务器中sequence_conf.properties:vim /root/mycat/conf/sequence_conf.properties

  • #deafult global sequenceGLOBAL.HESED=      # 可以自定义关键字GLOBAL.MINID=10001 # 最小值GLOBAL.MAXIN=20000 # 最大值
  • 修改主服务器中schema.xml:vim /root/mycat/conf/schema.xml

  • select user()
  • 修改主服务器中rule.xml:vim /root/mycat/conf/rule.xml

  • 3
  • 注意:mycat数据库中开始的表是虚拟表,需要手动创建。添加数据主键自增:insert into product(id,name) values(next value for mycatseq_global,‘华为’);

分库分表-水平拆分

  • 修改主服务器中schema.xml:vim /root/mycat/conf/schema.xml

  • select user()

转载地址:http://uarq.baihongyu.com/

你可能感兴趣的文章
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>