mysql主从同步和读写分离

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

Mysql读写分离实验

需要三台服务器

192.168.254.11 Mysql master ---read/write

192.168.254.12 Mysql slave ---read

192.168.254.13 Mysql Proxy

预安装mysql

准备工作

要做读写分离,先做主从同步

master

Vi /etc/mysql/my.cnf

如果有注销:

bind-address127.0.0.1

如果没有添加:

Log-bin

Server-id=1

重启mysql服务

/etc/init.d/mysqld restart

登录mysql

Mysql –uroot –p

创建一共享账号

Grant all on *.* to ‘root’@’%’ identified by ‘root113’

查看并记录当前二进制日志状态

Show master status;

wKioL1NPakTBSm53AACzuqnV0H0713.jpg

slave

Vi /etc/mysql/my.cnf

如果有注销:

bind-address127.0.0.1

如果没有添加:

Log-bin

Server-id=10##这个值需要比master大,没有其他的机器使用

重启mysql服务

/etc/init.d/mysqld restart

登录mysql执行同步语句

Msyql –uroot –p

Change master to

Master_host=’192.168.254.11’,

Master_user=’root’,

Master_password=’root113’,

Master_log_file=’mysql-bin.000021’,

Master_log_pos=106;

Start slave

Show slave status\G

Slave_IO_Runningyes

Slave_SQL_Runningyes

创建一个共享账号,这里不需要主要是后面读写分离时用到

Grant all on *.* to ‘root’@’%’ identified by ‘root113’

Quit

如果主数据库有数据:

取消主数据库表锁定

Flush tables with read lock;

查看主数据库状态

Show master status

记录filepositon

复制主数据库的数据文件/var/lib/mysql到从服务器

取消表锁定

Unlock tables;

到这里mysql主从同步就完成了

可以在master上随便做点操作试试,看slave是否有同步

做读写分离

proxy主机上

需要软件mysql-proxy,下载地址:

http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/

这里下载源码的安装了几次不成功,emerge也没法安装,只能下在编译好的数据包了

Tar zxvf mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit.tar.gz –C /usr/local

Mv mysql-proxy-0.8.4-linux-glibc2.3-x86-32 mysql-proxy

Export PATH=$PATH:/usr/local/mysql-proxy/bin

Echo “PATH=$PATH:/usr/local/mysql-proxy/bin” >> /etc/profile

启动mysql-proxy

mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy"--proxy-backend-addresses="192.168.254.11:3306"--proxy-read-only-backend-addresses="192.168.254.12:3306"--proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"--plugins=admin --admin-username="admin"--admin-password="admin"--admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

wKiom1NPanagpQJKAAP9fTrY7lM445.jpg

这里我们看到已经启动,端口40404041是管理端口)

测试

开台测试机器

通过mysql proxy连接

Mysql –uroot –proot113 –h 192.168.254.13 –port=4040

登录管理端口

Mysql –uadmin –padmin –h 192.168.254.13 –port=4041

## 这个用户名密码是mysql-proxy启动时设置的

wKioL1NPasayv7GxAAEBzumw7a8701.jpg

正常状态

备注:刚开始测试时会遇到下图情况,这个是正常的,主要是默认mysql-proxy做分离的最小值是4个链接,所以测试时没有转到slave机器上

 wKioL1NPatCTY65fAAEQE4nvN4o644.jpg

修改方法

vi /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

修改min_idle_connections值和max_idle_connections

wKiom1NPat6RD7cqAACWmvSzw9Q447.jpg

Mysql-proxy启动参数

--help-all :获取全部帮助信息;

--proxy-address=host:port :代理服务监听的地址和端口;

--admin-address=host:port :管理模块监听的地址和端口;

--proxy-backend-addresses=host:port :后端mysql服务器的地址和端口;

--proxy-read-only-backend-addresses=host:port :后端只读mysql服务器的地址和端口;

--proxy-lua-script=file_name :完成mysql代理功能的Lua脚本;

--daemon :以守护进程模式启动mysql-proxy;

--keepalive :在mysql-proxy崩溃时尝试重启之;

--log-file=/path/to/log_file_name :日志文件名称;

--log-level=level :日志级别;

--log-use-syslog :基于syslog记录日志;

--plugins=plugin:在mysql-proxy启动时加载的插件;

--user=user_name :运行mysql-proxy进程的用户;

--defaults-file=/path/to/conf_file_name : 默认使用的配置文件路径;其配置段使用[mysql-proxy]标识;

--proxy-skip-profiling : 禁用profile;

--pid-file=/path/to/pid_file_name :进程文件名;










本文转自 chengchow 51CTO博客,原文链接:http://blog.51cto.com/chengchow/1397115,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1913 0
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
671 6
|
12月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
SQL 关系型数据库 MySQL
如何实现 MySQL 的读写分离?
本文介绍了 MySQL 读写分离的实现方式及其主从复制原理,解释了如何通过主从架构提升读并发能力。重点分析了主从同步延时问题及解决方案,如半同步复制、并行复制等技术手段,并结合实际案例探讨了高并发场景下的优化策略。文章还提醒开发者在编写代码时需谨慎处理插入后立即查询的情况,避免因主从延时导致的数据不一致问题。
1326 44
如何实现 MySQL 的读写分离?
|
负载均衡 监控 关系型数据库
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
614 0
|
监控 关系型数据库 MySQL
Flink CDC MySQL同步MySQL错误记录
在使用Flink CDC同步MySQL数据时,常见的错误包括连接错误、权限错误、表结构变化、数据类型不匹配、主键冲突和
553 17
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
1616 11
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
211 1
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
SQL 存储 关系型数据库
实时计算 Flink版产品使用问题之同步MySQL多张表的过程中,内存释放依赖于什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。