MySQL10-基于maxscale的mysql读写分离

主库  192.168.4.10    处理写请求
从库  192.168.4.20    处理读请求
代理  192.168.4.100   读写分离

搭建一主一从

主库配置
vim /etc/my.cnf
[mysqld]
server_id=10             //指定服务器ID号
log-bin=master10        //启用binlog日志,并指定文件名前缀
systemctl restart mysqld        //重启mysqld

从库配置
vim /etc/my.cnf
[mysqld]
server_id=20            //指定服务器ID号,不要与Master的相同
log-bin=slave20        //启动SQL日志,并指定文件名前缀
read_only=1            //只读模式
systemctl restart  mysqld

主库授权一个用户并查看master的状态
mysql -u root -p123456
mysql> grant all on *.* to 'replicater'@'%' identified by '123456';
mysql> show master status;

从库通过CHANGE MASTER语句指定MASTER服务器的IP地址、同步用户名/密码、起始日志文件、偏移位置(参考MASTER上的状态输出)
mysql -u root -p123456
change master to master_host='192.168.4.10',
master_user='replicater',
master_password='123456',
master_log_file='master10.000002',
master_log_pos=738;
start slave;
show  slave status\G;

配置数据读写分离服务器

groupadd maxscale
useradd -g maxscale maxscale
ln -s maxscale-2.0.1.centos.7 /usr/local/maxscale
tar zxf maxscale-2.0.1.centos.7.tar-gz
chown -R maxscale:maxscale /usr/local/maxscale
mkdir -p /u01/maxscale/{data,cache,logs,tmp}
mkdir -p /u01/maxscale/logs{binlog,strace}
chown -R maxscale:maxscale /u01/maxscale
/usr/local/maxscale/bin/maxkeys /u01/maxscale /data/
/usr/local/maxscale/bin/maxpasswd /u01/maxscale/data/.secrets 123456

vim /etc/maxscale.cnf
[maxscale]               // 定义线程的数量,可以设置多个
threads=auto            // 运行的线程的数量,auto根据cpu核数创建线程数量
[server1]                //指定数据库服务器
type=server
address=192.168.4.10            // 数据库服务器的ip
port=3306
protocol=MySQLBackend        // 后端数据库

[server2]                        // 一个数据库服务器一个server
type=server
address=192.168.4.20
port=3306
protocol=MySQLBackend

[MySQL Monitor]               // 定义监控的数据库节点,监视数据库服务器的启动状态
type=monitor
module=mysqlmon
servers=server1, server2        // 监控的数据库列表,不能写ip
user=scalemon                 // 监视数据库服务器时连接数据库的用户名scalemon
passwd=123456                // 密码123456
monitor_interval=10000        // 监视的频率 单位为秒
#[Read-Only Service]          // 不定义只读服务器,将该字段全部注释
#type=service
#router=readconnroute
#servers=server1
#user=myuser
#passwd=mypwd
#router_options=slave

[Read-Write Service]          // 定义读写分离服务
type=service
router=readwritesplit          // 此模块帮助实现读写分离
servers=server1, server2          
user=maxscaled               //路由用户名 验证连接代理服务时访问数据库服务器的用户是否存在

参考读写分离

http://www.ttlsa.com/mysql/maxscale-install-read-write-split/

posted @   立勋  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示