mysql主从复制+读写分离+负载均衡

2022年9月18日13:14:57

一、Linux安装MariaDB数据库

下载MariaDB数据库

1测试: 当前虚拟机是否可以正确的链接外网

 mysql主从复制+读写分离+负载均衡

2.安装步骤如下

[root@localhost src]# yum  install mariadb-server      安装mariadb数据库[root@localhost src]# yum  clean   all                 清空已安装文件   如果下载失败之后执行的.

 mysql主从复制+读写分离+负载均衡确认下载
 mysql主从复制+读写分离+负载均衡安装完成提示

 mysql主从复制+读写分离+负载均衡

3 数据库启动

命令:

1.   启动命令    [root@localhost src]# systemctl  start  mariadb
2.   重启命令    [root@localhost src]# systemctl  restart  mariadb
3.   关闭命令    [root@localhost src]# systemctl  stop  mariadb
4.   设定开机自起 [root@localhost src]# systemctl  enable mariadb 
5.   关闭开机自起 [root@localhost src]# systemctl  disable mariadb

4数据库初始化操作

命令: `mysql_secure_installation’
 mysql主从复制+读写分离+负载均衡

5.测试数据库用户名和密码是否有效

 mysql主从复制+读写分离+负载均衡

6.导入数据表

说明:如果mysql数据库需要导入数据表命令如下:
命令: source /xxx/xxxx/xxxx/jtdb.sql;
 mysql主从复制+读写分离+负载均衡

8.Mysql数据库远程访问配置

 mysql主从复制+读写分离+负载均衡

8.1 关于链接数据库的说明

说明:

  1. 如果需要远程链接数据库必须通过防火墙
  2. 如果远程链接数据库,数据库中必须开启远程访问权限才行,否则拒绝链接.

8.2 配置数据库权限配置说明

 mysql主从复制+读写分离+负载均衡

8.3 配置Linux数据库权限

8.3.1 切换数据库mysql

 mysql主从复制+读写分离+负载均衡
切换Mysql数据库
 mysql主从复制+读写分离+负载均衡

8.3.2 修改数据库表

1).检查数据表
 mysql主从复制+读写分离+负载均衡

2).查询user表中的host/root/password
 mysql主从复制+读写分离+负载均衡

3).将host=“localhost” 改为 “%”
 mysql主从复制+读写分离+负载均衡
4).刷新数据库权限
 mysql主从复制+读写分离+负载均衡

9. 配置Linux防火墙策略

9.1 检查防火墙状态

命令: firewall-cmd --state
 mysql主从复制+读写分离+负载均衡

9.2 防火墙配置

说明:防火墙中有一个配置文件,表示当Linux系统启动时防火墙应该如何操作!!!
需求: 告诉linux系统以后开机不需要启动防火墙
命令: systemctl disable firewalld.service
systemctl enable firewalld.service
 mysql主从复制+读写分离+负载均衡

9.3 手动关闭防火墙

说明:通过命令手动将防火墙关闭
命令:

  1. systemctl stop firewalld.service
  2. systemctl start firewalld.service
     mysql主从复制+读写分离+负载均衡

9.4 手动开放防火墙端口

1). 检查防火墙开放的端口

firewall-cmd--list-ports

2).检查端口是否开放

firewall-cmd--query-port80/tcp

 mysql主从复制+读写分离+负载均衡

3). 开启防火墙

firewall-cmd--zone=public--add-port=80/tcp--permanent

 mysql主从复制+读写分离+负载均衡
4).移除端口

firewall-cmd --zone=public --remove-port=9090/tcp --permanent

 mysql主从复制+读写分离+负载均衡
5).关于防火墙操作的解释
–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–remove-port=80/tcp #移除端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

6).重启防火墙

firewall-cmd --reload

9.4 数据库远程测试

 mysql主从复制+读写分离+负载均衡

9.5 导入jtdb.sql

 mysql主从复制+读写分离+负载均衡

二、数据库热备份(主从复制)

说明:可以通过数据库机制,自动的实现数据的备份操作.
优点: 可以实现自动化的操作,并且是实时备份.
 mysql主从复制+读写分离+负载均衡备份实现原理:
1.当数据库主机的数据发现变化时,会将修改的数据写入二进制日志文件中.
2.从库通过IO线程,读取主库的二进制日志文件,获取之后,将数据保存到中继(临时存储)日志中.
3.从库中开启Sql线程,之后读取中继日志中的数据,之后将数据同步到从库中.

2.1准备多台服务器

2.2.1 修改虚拟机名称

说明:复制的虚拟机,并且改名为JT_LINUX_S.之后启动即可.
 mysql主从复制+读写分离+负载均衡

2.2.2 修改Linux从机的mac地址

为了保证2台虚拟机正常稳定的运行,需要修改mac地址.
 mysql主从复制+读写分离+负载均衡

2.2.3安装数据库从库

https://blog.csdn.net/qq_16804847/article/details/108450506

2.2数据库主从搭建

2.3.1 开启主库二进制文件

说明:主库的二进制日志文件,默认条件下是关闭的,需要手动的开启.
命令: vim /etc/my.cnf
编辑二进制日志文件:

 mysql主从复制+读写分离+负载均衡重启数据库,检查二进制日志文件,是否可用.
 mysql主从复制+读写分离+负载均衡重启之后,生成二进制文件
 mysql主从复制+读写分离+负载均衡

2.3.2 开启从库二进制配置文件

修改文件: vim /etc/my.cnf
添加的操作和主库一致,之后重启数据库服务器,效果如下:

 mysql主从复制+读写分离+负载均衡

2.3.3 数据库主从搭建

1).检查主库的状态
 mysql主从复制+读写分离+负载均衡2). 实现数据库主从挂载

/*我是130 我是从库*//*1.实现数据库主从挂载 host/port/user/password/二进制日志/pos*/
CHANGE MASTERTO MASTER_HOST="192.168.126.129",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=245;/*2.启动数据库主从服务*/START SLAVE;/*3.检查数据库启动状态*/SHOW SLAVESTATUS;/*4.如果出现数据库问题  1.关闭主从服务, 2.检查报错状态  3.重新搭建服务*/
STOP SLAVE/*检查报错信息 根据报错修改记录*//*重新搭建主从关系*/

3).主从状态的校验
 mysql主从复制+读写分离+负载均衡

2.3.4 数据库主从测试

注意事项:
1.修改主库的数据,从库会跟着同步数据.
2.如果修改从库数据,则主从的关系将会终止

2.4 数据库读写分离/负载均衡实现

2.4.1 数据库优化策略

说明:通过代理数据库可以实现数据库的读写分离/数据库负载均衡操作,进一步的提升了整体架构的能力.
 mysql主从复制+读写分离+负载均衡

2.4.2 Mycat

2.5 部署步骤

2.5.1 上传myCat服务器

 mysql主从复制+读写分离+负载均衡

2.5.2 解压Mycat

 tar-xvf  Mycat-server-1.7.0-DEV-20170416134921-linux.tar.gz

移动安装文件:
 mysql主从复制+读写分离+负载均衡

2.5.3 server.xml配置文件说明

注意事项: 默认条件下的端口号8066端口

<user name="root"><property name="password">root</property><!--与schema.xml中的配置相同 注意数据库的大小写--><property name="schemas">jtdb</property></user><user name="user"><property name="password">user</property><property name="schemas">jtdb</property><property name="readOnly">true</property></user>

2.5.4 schema.xml配置

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM"schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"><!--name属性是自定义的  dataNode表示数据库的节点信息  jtdb表示逻辑库--><schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/><!--定义节点名称/节点主机/数据名称--><dataNode name="jtdb" dataHost="localhost1"database="jtdb"/><!--参数介绍 UTF-8 中文报错--><!--balance 0表示所有的读操作都会发往writeHost主机 --><!--1表示所有的读操作发往readHost和闲置的主节点中--><!--writeType=0 所有的写操作都发往第一个writeHost主机--><!--writeType=1 所有的写操作随机发往writeHost中--><!--dbType 表示数据库类型 mysql/oracle--><!--dbDriver="native"  固定参数 不变--><!--switchType=-1 表示不自动切换, 主机宕机后不会自动切换从节点--><!--switchType=1  表示会自动切换(默认值)如果第一个主节点宕机后,Mycat会进行3次心跳检测,如果3次都没有响应,则会自动切换到第二个主节点--><!--并且会更新/conf/dnindex.properties文件的主节点信息 localhost1=0 表示第一个节点.该文件不要随意修改否则会出现大问题--><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select1</heartbeat><!--配置第一台主机主要进行写库操作,在默认的条件下Mycat主要操作第一台主机在第一台主机中已经实现了读写分离.因为默认写操作会发往137的数据库.读的操作默认发往141.如果从节点比较忙,则主节点分担部分压力.--><writeHost host="hostM1" url="192.168.126.129:3306"user="root" password="root"><!--读数据库1--><readHost host="hostS1" url="192.168.126.130:3306"user="root" password="root"/><!--读数据库2--><readHost host="hostS2" url="192.168.126.129:3306"user="root" password="root"/></writeHost><!--定义第二台主机 由于数据库内部已经实现了双机热备.--><!--Mycat实现高可用.当第一个主机137宕机后.mycat会自动发出心跳检测.检测3次.--><!--如果主机137没有给Mycat响应则判断主机死亡.则回启东第二台主机继续为用户提供服务.--><!--如果137主机恢复之后则处于等待状态.如果141宕机则137再次持续为用户提供服务.--><!--前提:实现双机热备.--><!--<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root"><readHost host="hostS1" url="192.168.126.130:3306"user="root" password="root"/><readHost host="hostS2" url="192.168.126.129:3306"user="root" password="root"/></writeHost>--></dataHost></mycat:schema>

2.5.4 实现配置文件上传

 mysql主从复制+读写分离+负载均衡

2.5.5 Mycat命令

Usage: ./mycat { console | start | stop | restart | status | dump }
 mysql主从复制+读写分离+负载均衡

2.5.6 检查mycat日志

 mysql主从复制+读写分离+负载均衡

2.5.7 Mycat负载均衡测试

修改从库中的数据库.刷新列表页面.检查是否有负载均衡的效果.
注意事项: 如果测试完成,记得将数据修改 保证一致.

三、实现数据库高可用

1.1 搭建策略

1.1.1 问题说明

说明:如果根据如下的配置实现数据库的代理,如果数据库主库宕机,则直接影响整个程序的执行.所以需要实现高可用机制.
高可用实现的问题:
如果实现了数据库高可用,可以自动的切换数据库,由于用户直接操作了从库,当主库启动时发现数据不一致时,主从同步的状态将会终止.
 mysql主从复制+读写分离+负载均衡

1.1.2 双机热备(双主模式)

说明:可以通过数据库双主模式实现数据库高可用.
双主模式实质都是主机,互相备份.

 mysql主从复制+读写分离+负载均衡

1.1.3 双机热备的实现

之前的配置:
主机: 192.168.126.129
从库: 192.168.126.130
现在的配置:
主机: 192.168.126.130
从库: 192.168.126.129
1).检查主库状态
 mysql主从复制+读写分离+负载均衡2).实现数据库主从搭建
 mysql主从复制+读写分离+负载均衡

1.2 数据库高可用实现

1).编辑配置文件

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM"schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"><!--name属性是自定义的  dataNode表示数据库的节点信息  jtdb表示逻辑库--><schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/><!--定义节点名称/节点主机/数据名称--><dataNode name="jtdb" dataHost="localhost1"database="jtdb"/><!--参数介绍 UTF-8 中文报错--><!--balance 0表示所有的读操作都会发往writeHost主机 --><!--1表示所有的读操作发往readHost和闲置的主节点中--><!--writeType=0 所有的写操作都发往第一个writeHost主机--><!--writeType=1 所有的写操作随机发往writeHost中--><!--dbType 表示数据库类型 mysql/oracle--><!--dbDriver="native"  固定参数 不变--><!--switchType=-1 表示不自动切换, 主机宕机后不会自动切换从节点--><!--switchType=1  表示会自动切换(默认值)如果第一个主节点宕机后,Mycat会进行3次心跳检测,如果3次都没有响应,则会自动切换到第二个主节点--><!--并且会更新/conf/dnindex.properties文件的主节点信息 localhost1=0 表示第一个节点.该文件不要随意修改否则会出现大问题--><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select1</heartbeat><!--配置第一台主机主要进行写库操作,在默认的条件下Mycat主要操作第一台主机在第一台主机中已经实现了读写分离.因为默认写操作会发往137的数据库.读的操作默认发往141.如果从节点比较忙,则主节点分担部分压力.--><writeHost host="hostM1" url="192.168.126.129:3306"user="root" password="root"><!--读数据库1--><readHost host="hostS1" url="192.168.126.130:3306"user="root" password="root"/><!--读数据库2--><readHost host="hostS2" url="192.168.126.129:3306"user="root" password="root"/></writeHost><!--定义第二台主机 由于数据库内部已经实现了双机热备.--><!--Mycat实现高可用.当第一个主机137宕机后.mycat会自动发出心跳检测.检测3次.--><!--如果主机137没有给Mycat响应则判断主机死亡.则回启东第二台主机继续为用户提供服务.--><!--如果137主机恢复之后则处于等待状态.如果141宕机则137再次持续为用户提供服务.--><!--前提:实现双机热备.--><writeHost host="hostM2" url="192.168.126.130:3306"user="root" password="root"><readHost host="hostS1" url="192.168.126.130:3306"user="root" password="root"/><readHost host="hostS2" url="192.168.126.129:3306"user="root" password="root"/></writeHost></dataHost></mycat:schema>

2).上传配置文件:

 mysql主从复制+读写分离+负载均衡
3).重启mycat服务器

 mysql主从复制+读写分离+负载均衡

1.3 数据库高可用实测试

1.启动服务器,测试mysql数据库是否正常.
 mysql主从复制+读写分离+负载均衡2.关闭数据库主库,再次检查用户的操作是否正常.

 mysql主从复制+读写分离+负载均衡
 mysql主从复制+读写分离+负载均衡3).修改数据库中的内容,重启主数据库,检查数据是否同步

 mysql主从复制+读写分离+负载均衡 mysql主从复制+读写分离+负载均衡
 mysql主从复制+读写分离+负载均衡

1.4 检查端口占用情况

 mysql主从复制+读写分离+负载均衡

总结

sharding-proxy同mycat原理一样,具体可参考https://blog.csdn.net/weixin_44594263/article/details/112647299进行配置

  • 作者:weixin_44594263
  • 原文链接:https://blog.csdn.net/weixin_44594263/article/details/113929358
    更新时间:2022年9月18日13:14:57 ,共 7832 字。