mysql表锁行锁和分页锁(MySQL 不停机不锁表主从搭建)
mysql表锁行锁和分页锁
MySQL 不停机不锁表主从搭建
MySQL主从搭建分几种场景
- 无业务数据,初始化搭建
- 有业务数据,临时扩展
初始化的搭建很简单,不涉及数据业务,所以锁表、停机等都不影响,但是更多时候是业务到一定阶段,才会涉及到横向扩展,需要做主从,读写分离等来提升服务性能
这个时候,数据业务不能中断,又需要快速进行扩展提升性能,只能在不停机、不停服务的情况下扩展,就需要用到下面介绍的这种方法来做数据库主从
当然还是有前提条件,如果你原本MySQL连binlog及server_id都这种基础配置都没做,那也谈不上不停机配置主从
原理
不停机实现主从搭建的关键点就是以下两个参数:
- --single-transaction
- --master-data
master-data参数主要用来记录主库的binlog_file和pos,它有两个值,分别是:
1:在mysqldump过程中,将binlogfile和pos信息记录在sql中,并且不是以注释信息的方式记录,这样在执行导入的时候自动执行这部分信息
2:在mysqldump过程中,将binlogfile和pos信息以注释的方式记录在sql中
single-transaction参数则是通过提交单一事务来确保数据一致性,通过在FLUSH TABLES WITH READ LOCK 后添加START TRANSACTION 语句,开启单一事务,此时加锁,仅仅是为了获取准确的master-data中的binlogfile和pos信息,在开启事务后,锁已经释放了,所以对业务影响很小
通过以上两个参数,可以在不长时间锁表的情况下获取准确的binlogfile和pos信息,从而完成主从配置
实战
导出数据
从主库通过mysqldump导出数据
- mysqldump -uroot -ppassword --single-transaction --master-data=2 --databases db1 db2 xxx > databases.sql
打包压缩
- tar -zcvf databases.sql.tar.gz databases.sql
复制到从库
- scp databases.sql.tar.gz root@slave_ip:/data/sql/
后面的操作在从库进行
解压
- tar -zxvf databases.sql.tar.gz
导入数据
- source /path_to/databases.sql.tar.gz
配置主从同步参数
- change master to master_host='ip',master_user='slave',master_port=port,master_password='password',master_log_file='mysql-bin.file',master_log_pos=POS;
其中master_log_file和master_log_pos就是上面通过master-data=2参数导出的,在sql文件里面开头部分
启动slave同步
- start slave;
查看同步状态
- show slave status\G;
通过这种方法,可以在不停止业务的情况下,保证数据一致性的同时,快速扩展从库
原文链接:https://mp.weixin.qq.com/s/AOmFBZm0YYfnvDHd58tikg
- mysql自增锁(深入剖析 MySQL 自增锁)
- mysqlcount使用方法(详解 MySQL中count函数的正确使用方法)
- mysql如何解决主从延迟(MySQL主从延迟问题解决)
- mysql读写分离代码实现(MySQL Router实现MySQL的读写分离的方法)
- mysqltruncate(MYSQL中Truncate的用法详解)
- mysql8.0.25安装及配置超详细教程(MySQL8.0.21安装步骤及出现问题解决方案)
- mysql索引原理及调优(MySQL索引机制程序员必知)
- docker怎样安装mysql8(docker-compose安装db2数据库操作)
- mysql8使用技巧(一篇学会MySQL 8.0 ROLE管理)
- 利用xampp搭建服务器(xampp集成环境怎样使用MySQL数据库)
- mysql事务级别设置(mysql在项目中怎么选事务隔离级别)
- mysql mvcc 隔离级别(详解MySQL事务的隔离级别与MVCC)
- docker查找redis配置文件(解决docker重启redis,mysql数据丢失的问题)
- mysql权限管理详解(Mysql 用户权限管理实现)
- python怎样读取mysql数据(使用Python将Mysql的查询数据导出到文件的方法)
- mysql 安装阿里云(详解如何在阿里云服务器安装Mysql数据库)
- 白龙马的改编学生版,快来看看(白龙马的改编学生版)
- 萌娃唱《白龙马》走红,那生动的小表情,网友直呼 简直是戏精(萌娃唱白龙马走红)
- 朱鹤松被不断认可,凤凰传奇玲花喊话岳云鹏,索要老朱演出门票(朱鹤松被不断认可)
- 元宵晚会槽点多,芒果台上来就假唱,岳云鹏不说相声改评书了(元宵晚会槽点多)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
热门推荐
- 怎么创建dhcp服务器(DHCP服务器与Web服务器的搭建教程)
- web服务器最低配置(分享几种常见WEB服务器配置方案)
- jquery中index()
- 何谓SQLSERVER参数嗅探问题(何谓SQLSERVER参数嗅探问题)
- vue中的watch属性(vue Watch和Computed的使用总结)
- tomcat部署web项目常见问题(关于tomcat部署应用无法访问前端页面的问题)
- docker端口配置(docker 无法释放端口的解决方案)
- web服务器有几种(2019常见六种web服务器软件介绍)
- php运算符与操作符(php中的buffer缓冲区用法分析)
- html5横向滚动(解决HTML5中滚动到底部的事件问题)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9