1 Star 0 Fork 120

勇敢牛牛/DBA

forked from panglijing/DBA 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
RDBMS2_DAY02_知识点版 7.00 KB
一键复制 编辑 原始数据 按行查看 历史
panglijing 提交于 2021-11-19 04:16 . update RDBMS2_DAY02_知识点版.
mysql数据读写分离:
1 数据读写分离介绍:
把客户查询数据的select 请求 和 写数据的请求(包括insert delete update)
分别发给不同的数据库服务器处理
2 为什么要使用读写分离结构存储数据呢?
第1点:减去数据库服务器的访问压力
第2点:提高硬件利用率
3 如何实现数据的读写分离?
第1种方式:通过程序实现(程序在编写访问数据库服务的脚本
执行select命令时 固定连接从数据库服务器)
执行insert命令时 固定连接master数据库服务器)
第2种方式:通过服务实现(搭建提供读写分离服务功能的服务器
程序访问数据库服务时,连接的不是数据库服务器本机,而是
连接读写分离服务器,由读写分离服务器提供数据库连接服务)
4 提供数据读写分离服务的软件?(软件的统称 中间件)
mysql-proxy 、mycat 、 maxscale
5 maxscale 软件提供的读写分离服务的工作过程
1 接收到客户连接数据库服务的请求后
2 根据客户端访问数据的命令类型,把请求给不同的数据库服务器处理
把查询请求select 给监视到的slave角色的数据库服务器处理
把写请求insert 给监视到的master角色的数据库服务器处理
6 配置数据读写分离结构 提供数据存储服务
6.1 拓扑结构
6.2 具体配置如下:
第一步:配置MySQL一主一从 同步结构 (具体配置件day01 的案例)
1) 配置主数据库服务器192.168.4.51
2)配置从数据库服务器192.168.4.52
3) 验证配置结构
192.168.4.52的IO线程和SQL线程同时是yes状态
[root@host52 ~]# mysql -uroot -p123qqq...A -e 'show slave status \G' | grep -i 192.168.4.51
mysql: [Warning] Using a password on the command line interface can be insecure.
Master_Host: 192.168.4.51
[root@host52 ~]#
[root@host52 ~]# mysql -uroot -p123qqq...A -e 'show slave status \G' | grep -i yes
mysql: [Warning] Using a password on the command line interface can be insecure.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
第二步: 配置读写分离服务器 192.168.4.56
1) 安装软件
[root@maxscale56 ~]# yum -y install maxscale-2.1.2-1.rhel.7.x86_64.rpm
休息到 16:05
2)修改配置文件
[root@maxscale56 ~]# cp /etc/maxscale.cnf /root/ #备份源配置文件
[root@maxscale56 ~]# vim /etc/maxscale.cnf
[maxscale]
threads=auto 服务运行后线程的数量
[server1]
type=server
address=192.168.4.51 定义第1台数据库服务器的IP地址
port=3306
protocol=MySQLBackend
[server2]
type=server
address=192.168.4.52 定义第2台数据库服务器的IP地址
port=3306
protocol=MySQLBackend
3)根据配置文件的 配置数据库服务器
说明:因为数据库服务器只主从结构,所有添加用户只需要在主服务器host51主机添加
从服务器host52 通过添加用户的命令在本机执行。
所以只需要在主服务器host51 执行添加用户的命令,在从服务器查看是否同步了用户。
添加监控用户mysqla 监视数据库服务的运行状态和数据库服务器的主从角色
添加路由用户mysqlb 56主机检查数据库服务器上是添加了客户端连接服务使用的用户
[root@host51 ~]# mysql -uroot -pNSD2107...a
replication client 监视数据库服务的运行状态 , replication slave 数据库服务器的主从角色
mysql> grant replication client , replication slave on *.* to mysqla@"%" identified by "123qqq...A";
mysql> grant select on mysql.* to mysqlb@"%" identified by "123qqq...A";
[root@host52 ~]# mysql -uroot -p123qqq...A -e 'select user from mysql.user where user like "mysql%"'
4)启动读写分离服务
#首先测试一下数据库服务器的监控用户和路由用户
#启动读写分离服务
5)查看服务状态
查看读写分离服务的端口4006
查看管理服务的端口4016
6)查看监控信息
#在56本机访问管理服务查看数据库服务的监控信息
[root@maxscale56 ~]# maxadmin -uadmin -pmariadb -P4016
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168.4.51 | 3306 | 0 | Master, Running
server2 | 192.168.4.52 | 3306 | 0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
MaxScale> exit
[root@maxscale56 ~]#
第四步:测试配置读写分离服务的配置 练习到 09:40
第1步: 客户端能够连接读写分离服务器访问数据库服务
#首先在主数据库服务器host51 添加客户端连接使用的用户
#在从服务器host52查看存储数据库表和添加用户
#客户端host50连接读写分离服务器host56访问数据库服务
第2步: 连接读写分离服务后,可以对数据做查询和存储操作
第3步: 测试数据读写分离
此刻2台数据库服务器的数据是一样,那么问题来了
怎么验证查询select 访问就在host52从服务器获取的数据呢?
在从服务本机向表里添加1条记录(在从服务添加的新数据主服务器不会同步)
怎么验证存储数据insert 访问 就是存储在了主机服务器host51上?
说明:如果主从结构中的从服务器宕机了,就实现不了读写分离了,
会把读写请求都给主服务器处理。
如果主从结构中的主服务器宕机了,读写分离服务无法访问
读写分离服务器 只有1台 单点故障问题无法避免。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
多实例:
什么多实例:在一台 服务器上允许多个数据库服务
为什么要使用多实例? 节约运维成本 提高硬件利用率
配置多实例
1 安装软件
2 创建并编辑主配置文件 (重点)
rm -rf /etc/my.cnf 如果有此文件要删除
vim /etc/my.cnf
#第一部分管理实例服务的运行参数
[mysqld_multi]
#第二部分 定义管理的实例
[mysqld1] #实例1
[mysqld2] #实例2
:wq
3 启动多实例
4 连接实例
5 停止实例
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/brave-co/dba.git
[email protected]:brave-co/dba.git
brave-co
dba
DBA
master

搜索帮助