Mysql
简介
MariaDB
MySQL
数据类型
创建表
索引 index
主键 primary key
外键 foreign key
数据导入与导出
where条件判断
用户授权与密码
数据备份与恢复
数据热备
主从同步
读写分离
多实例
分库分表
集群-MHA
集群-PXC
存储引擎
本文档使用 MrDoc 发布
-
+
首页
读写分离
MySQL读写分离是一种常用的数据库架构设计模式,用于在高负载情况下提高数据库性能和可扩展性。它通过将读操作和写操作分别分配给不同的数据库实例来实现。 在MySQL读写分离中,通常有一个主数据库(Master)和多个从数据库(Slaves)。写操作(如插入、更新和删除)只在主数据库上执行,而读操作(如查询)则可以在从数据库上执行。主数据库负责处理写操作并将数据同步到从数据库,从数据库则负责处理读操作。 以下是设置MySQL读写分离的一般步骤: 配置主数据库:将主数据库配置为可以接收写操作的数据库服务器。这是您的应用程序将写入数据的地方。 配置从数据库:配置多个从数据库实例,使其复制主数据库的数据。从数据库只能执行读操作。 配置复制:在主数据库上启用二进制日志(binary logging),并在从数据库上配置复制(replication)以复制主数据库的数据。 配置应用程序:在应用程序中,将读操作发送到从数据库,将写操作发送到主数据库。可以使用数据库连接池或负载均衡器来管理与主数据库和从数据库的连接。 通过实现MySQL读写分离,可以将读操作分摊到多个从数据库上,从而提高数据库的读取性能和可扩展性,同时减轻主数据库的负载压力。这对于高流量的应用程序来说尤为重要。 读写分离maxscale工具下载地址:https://mariadb.com/downloads/community/maxscale ## 实验环境 | 角色 | IP | 版本 | | --- | --- | --- | | 中间件 | 192.168.1.100 | MaxScale:22.08.4 | | 主服务器 | 192.168.1.101 | mysql:8.0.32 | | 从服务器 | 192.168.1.102 | mysql:8.0.32 | ## 创建授权用户 在主库master中为MaxScale创建两个用户用于监控模块和路由模块,已经实现主从复制的前提下,主库创建的用户,能同步到从库上 创建监控用户+授权 ```asp create user 'mon'@'%' identified with mysql_native_password by '密码'; grant replication slave, replication client on *.* to mon@'%'; ``` 创建路由用户+授权 ```asp create user 'route'@'%' identified with mysql_native_password by '密码'; grant show databases on *.* to route@'%'; grant select on mysql.* to route@'%'; ``` 创建读写分离用户+授权 ```asp create user 'admin'@'%' identified with mysql_native_password by '密码'; grant all privileges on *.* to 'admin'@'%' with grant option; ``` ## 配置maxscale ```asp vim maxscale.cnf ``` ```asp [maxscale] threads=auto #开启线程个数,默认为1.设置为auto会同cpu核数相同 [dbserv1] #定义服务器主机1 type=server address=192.168.1.101 port=3306 protocol=MariaDBBackend [dbserv2] #定义服务器主机2 type=server address=192.168.1.102 port=3306 protocol=MariaDBBackend [MySQL-Monitor] #监视进程 type=monitor module=mariadbmon servers=dbserv1, dbserv2 user=maxscale_monitor #之前在master上创建的监视用户,监视服务器dbserv1, dbserv2运行状态 password=Admin@123456 monitor_interval=2s [Read-Write-Service] #读写分离 type=service router=readwritesplit servers=dbserv1,dbserv2 user=maxscale_route #之前在master上创建的路由用户,请求转发到 数据库服务器 password=Admin@123456 enable_root_user=true #默认禁止root用户访问,设置为1开启 [Read-Write-Listener] #监听读写服务端口 type=listener service=Read-Write-Service protocol=MariaDBClient address=0.0.0.0 port=3306 ``` 启动后命令行查看状态 ```asp maxctrl list servers ``` ```asp ┌────────┬────────────┬───────┬─────────────┬─────────────────┬──────┬─────────────────┐ │ Server │ Address │ Port │ Connections │ State │ GTID │ Monitor │ ├────────┼────────────┼───────┼─────────────┼─────────────────┼──────┼─────────────────┤ │ s1 │ 138.2.2.35 │ 13301 │ 0 │ Master, Running │ │ MariaDB-Monitor │ ├────────┼────────────┼───────┼─────────────┼─────────────────┼──────┼─────────────────┤ │ s2 │ 138.2.2.53 │ 13302 │ 0 │ Slave, Running │ │ MariaDB-Monitor │ └────────┴────────────┴───────┴─────────────┴─────────────────┴──────┴─────────────────┘ ``` WEB图形页面访问 http:ip:8989 默认登录名:admin 默认密码:mariadb 
done
2025年9月12日 15:07
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码