zoukankan      html  css  js  c++  java
  • 分布式存储——MySQL

    分布式存储——MySQL

    常见的分布式存储有:MySQL、Oracle、HDFS

    一、centos7安装MySQL

    rpm的安装方式

    • 1、输入 yum -y remove mariadb-libs-1:5.5.44-2.el7.centos.x86_64 解决兼容问题

    • 2、下载三个包

      链接: https://pan.baidu.com/s/1xBqteubB6Q8rrb-kF-blBg  密码: 6q43
      
    • 3、移植到centos的/usr/local/路径下

    • 4、直接安装

      [root@node01 local]# rpm -ivh MySQL-server-5.5.58-1.el7.x86_64.rpm MySQL-client-5.5.58-1.el7.x86_64.rpm MySQL-devel-5.5.58-1.el7.x86_64.rpm
      
    • 5、启动服务

      [root@node01 local]# service mysql start
      
    • 6、设置开机自启动

      [root@node01 local]# chkconfig mysql on
      
    • 7、设置mysql密码

      [root@node01 local]# mysqladmin -uroot password admin
      
    • 8、登录

      [root@node01 local]# mysql -uroot -padmin
      

    二、mysql主从复制(冷备)

    1、普通文件的同步

    • NFS网络文件共享可同步存储数据
    • Windows的Samba
    • Linux定时任务
    • ftp数据同步
    • ssh + scp服务器远程同步

    查看此时的定时任务:

    [root@node01 local]# crontab -l
    no crontab for root
    

    每分钟同步文件:

    [root@node01 local]# crontab -e
    * * * * * cp /etc/profile /home/profile.bak
    
    *代表的顺序是:分 时 日 月 周
    2-6表示:2 3 4 5 6
    

    删除定时任务

    [root@node01 local]# crontab -l
    

    2、文件系统的同步

    • drbd(基于文件系统同步),几乎同步任何业务数据

    3、数据库的同步

    • MySQL主从复制(数据同步)
    • Oracle DataGuard(甲骨文推出的一种高可用性数据库方案)

    4、MySQL主从复制介绍

    直接关机、叉掉、复制虚拟机

    • MySQL支持单向、双向、链式级联、实时、异步复制,在复制过程中,一台服务器充当主服务器(master),一个或多个其他服务器充当从服务器(slave)
    • 复制可以是单向:M——>S,可以是双向:M<——>M

    5、主从复制的应用场景

    • 主从服务器互为备份,加强数据库架构的健壮性
    • 主从服务器读写分离,分担网站压力,从服务器只处理用户的查询请求
    • 将从服务器按照业务拆分,分担压力

    6、主从复制的原理

    • SQLyog也有mysql的日志信息

    • Master将改变记录到二进制日志(binary log)中

    • Slave将Master的二进制日志事件(binary log events)拷贝到它的中继日志(relay log)

    • Slave重做中继日志(relay log)中的事件,将Master上的改变反映到它自己的数据库中

    • 这些都是由从库在做,所以是异步的数据同步

    7、搭建MySQL主从复制

    必须检查防火墙是否已经关闭,若开启状态,先关闭

    [root@node01 local]# systemctl status firewalld.service
    

    第一台机器:

    • 1、复制mysql配置文件模板到/etc/my.cnf

      [root@node01 local]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
      
    • 2、重启mysql

      [root@node01 local]# service mysql restart
      
    • 3、可以查询到第一台机器,id是1

      mysql> show variables like "server_id";
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | server_id     | 1     |
      +---------------+-------+
      1 row in set (0.01 sec)
      

    第二台机器:

    • 1、复制mysql配置文件模板到/etc/my.cnf

      [root@node02 local]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
      
    • 2、修改server-id=2

      [root@node02 local]# vi /etc/my.conf
      server-id = 2
      
    • 3、重启mysql

      [root@node02 local]# service mysql restart
      
    • 4、可以查询到第二台机器,id是2

      mysql> show variables like "server_id";
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | server_id     | 2     |
      +---------------+-------+
      1 row in set (0.01 sec)
      

    第一台机器:

    • MySQL里查看主库的日志文件信息

      mysql> show master status;
      

    第二台机器:

    • slave节点mysql输入一下内容,IP库是主库IP,日志文件信息,要跟第一台信息对应,即把下面SQL语句复制粘贴执行

      change master to 
      master_host='192.168.190.130',
      master_user='root',
      master_password='admin',
      master_log_file='mysql-bin.000001',
      master_log_pos=107;
      
    • 启动从服务

      mysql> start slave;
      
    • 查看从服务信息

      mysql> show slave statusG
      

    第一台机器:

    • 执行授权,两边都授权刷新一下

      mysql> grant all privileges on *.* to 'root'@'%' identified by 'admin' with grant option;
      
    • 刷新设置

      mysql> flush privileges;
      
    • 测试:第一台机器建个库,第二台机器也存在

    8、主从复制存在的问题

    • 因为是异步同步,有可能丢失极小一部分数据

    9、centos7搭建MySQL双主互备(热备)

    双主互备就是要保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致,这样做的意义是既提高了数据库的容灾性,又可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量

    第二台机器:

    • 查看日志信息

      mysql> show master status;
      

    第一台机器:

    • 在master输入一下内容,IP是第二台机器

      change master to 
      master_host='192.168.190.130',
      master_user='root',
      master_password='admin',
      master_log_file='mysql-bin.000001',
      master_log_pos=419;
      
    • 启动从服务

      mysql> start slave;
      
    • 测试:第二台建个库,第一台也同步

  • 相关阅读:
    C# 操作Excel之旁门左道
    C#数据类型、控件、数据类型、ADO.NET等命名规范
    tab 切换函数
    ASP.NET常用JS脚本整理
    实现MSMQ消息加密的安全实践
    关于jQuery中的offset()和position()
    SQL中使用update inner join和delete inner join
    setTimeout和setInterval
    设计漂亮的样式表是一门艺术(译) (转)
    使用jQuery制作手风琴效果(转)
  • 原文地址:https://www.cnblogs.com/ghh520/p/13215823.html
Copyright © 2011-2022 走看看