mycat知识体系二

数据库集群

单机数据库受限物理瓶颈,难以应对高并发场景(oracle单表数据量亿级别,mysql千万级)

架构

主从复制原理

mysql支持一主多从、多级主从结构

主从原理:

在一个主从结构中,主从各自有各自的逻辑

主节点:

必须开启一个二进制的日志文件,以二进制格式记录所有写操作命令,并且,会根据数据的写入,增加一个position值,使得从节点通过position值判断和抓取数据

从节点:

开启IO线程、SQL线程、本地中继日志

IO线程:负责监听和抓取主节点更新内容(通过position的值判断是否变化)

中继日志:IO线程将更新的内容存入本地的一个文件-中继日志

SQL线程:负责监听本地中继日志,判断是否更新(position的值),如果有更新,则抓取更新内容,并在内部启动一个client客户端执行这些命令

4.3.mysql的主从复制搭建(一主一从)

主节点配置

1.安装2个主机的mysql数据库(Percona 5.6mysql)

1.1获取安装包解压

/home/resources/Percona**.tar

  • 维护一个解压文件的目录

[root@10-9-48-69 ~]# mkdir  /home/software/percona

  • 将资源tar包拷贝到创建的文件夹中

[root@10-9-48-69 ~]# cp /home/resources/Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar /home/software/percona/

  • 解压Percona的tar包

[root@10-9-48-69 percona]# tar -xf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar

1.2rpm安装包按顺序安装

  •  安装debuginfo的rpm

[root@10-9-48-69 percona]# rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm

  • 安装shared的rpm

[root@10-9-48-69 percona]# rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm

  • 安装client的rpm

[root@10-9-48-69 percona]# rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm

  • 安装server的rpm

[root@10-9-48-69 percona]# rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm

  • 出现mysql的各种问题之后,可以执行重装

注意:percona意外的其他位置执行删除命令.

#yum -y remove Percona*

 

2.调整mysql的环境

2.1启动mysql的服务

[root@10-9-48-69 percona]# service mysql start

[root@10-9-48-69 percona]# service mysql stop

[root@10-9-48-69 percona]# service mysql restart

2.2开启远程的访问权限

  • 登录到mysql客户端

[root@10-9-48-69 percona]# mysql

  • 在客户端执行命令

grant 权限 on 库.表 to 登录用户名@'允许登录ip' identified by '用户登录时携带的密码'

mysql> grant all on *.* to 'root'@'%' identified by 'root';

  • 远程权限开启完毕,可以测试sqlYog从windows登录服务器的mysql数据库

2.3将所有root用户名都修改成以'root',密码登录的方式

对于mysql在云服务器的percona版本,保证稳定的被mycat连接

需要修改mysql.user表格的数据

修改成如下内容,并且保存

2.4本地忽略localhost 空user 空密码的登录使用

[root@10-9-17-153 percona]# mysqladmin -uroot password 'root'

 

最终要确定使用mysql命令在本地登录时,不能再空密码,空用户名的登录了

3.数据库的主从复制搭建

3.1主节点相关配置

开启一个二进制日志文件,将所有的写操作记录在日志文件中

  • 在/etc/my.cnf,当前服务器为mysql准备的一个配置文件

 

  • 打开my.cnf 添加集群id和开启二进制日志文件的配置内容

在中间空白处添加:

server-id=1 :定义的是集群中mysql的id值,不能和其他mysql节点的id重复.

log-bin=mysql-bin:定义了一个开启的二进制日志文件的名称

  • 重启主节点的mysql服务

[root@10-9-48-69 percona]# service mysql restart

需要重启重新加载修改后的my.cnf配置文件,重启完成的mysql就会根据my.cnf内容进行加载修改,就会出现可以使用的二进制日志文件

  • 登录到主节点客户端,执行查看命令

mysql> show master status\G;

\G是在mysql的linux客户端可以添加的配置参数,将查询的结果竖着展示

当前查询的内容,就是主节点开启的二进制文件的记录信息,包含文件名称mysql-bin.000001,后缀是一个自增的数字,从1开始,当服务器重启时,当文件数据量超过阈值64M/128M,会滚动,数字自增1,指针position的值可以用来判断更新,mysql-bin的上一个滚动文件的指针指向下一个新文件的开始的;

从节点搭建

从节点的配置

  • 修改配置文件my.cnf

server-id=2

log-bin=mysql-bin (双机热备做准备)

  • 重启从节点重新加载my.cnf

[root@10-9-17-153 percona]# service mysql restart

  • 查看从节点状态

mysql> show slave status\G;

Empty set (0.00 sec)

说明当前从节点没有挂接任何主节点,一旦挂接,show slave status 返回所有从节点状态信息;在从节点客户端执行挂接命令

mysql>

CHANGE MASTER TO MASTER_HOST="10.9.48.69",

MASTER_PORT=3306,

MASTER_USER="root",

MASTER_PASSWORD="root",

MASTER_LOG_FILE="mysql-bin.000002",

MASTER_LOG_POS=120

查看从节点的信息status

Slave_IO_Running: No

Slave_SQL_Running: No\

  • 将从节点的io和sql线程同时开启

mysql>start slave/stop slave

观察从节点status发现两个线程都工作

  1. 数据库集群高可用

2.1.主从故障转移

一旦集群引入高可用主从复制结构,可以自定义配置,实现主节点宕机,从节点完成之前主节点的所有功能--故障转移

2.2.读写分离

读写分离:将写的请求全部交给主节点,但是读可以交给从节点,来分担主节点的压力

2.3.热备模式

2.3.1.单机热备

备份是一次性的,只能从节点备份主节点,单方向备份,一旦主节点挂掉,即使重启,也无法拿到从节点数据。

2.3.2.双机热备

备份是多次循环,双向主从复制实现故障转移

是否可以三机热备?(不推荐)

可以如下配置

实现双机热备:从挂主,主挂从

在主节点也执行从挂主的逻辑即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值