MySQL
DBASpace
这个作者很懒,什么都没留下…
展开
-
快速校验数据一致性:pt-table-sync
1、可直接修复主从数据不一致2、可直接修复没有主从关系的之间的数据同步,但不能同步DDL3、可实现混合云自建实例的数据校验(RDS云产品例外)使用方法: 校验两个独立数据库,无主从复制关系,排除特定数据库 pt-table-sync --charset=utf8 --ignore-databases=mysql,sys u=dlan,p=root123,h=172.16.0.29,P=3318 dsn=u=root,p=root123,h=172.16.0.11,P=5700...原创 2021-03-23 18:12:30 · 300 阅读 · 0 评论 -
MySQL文件排序算法介绍
前言排序是数据库中的一个基本功能,MySQL也不例外。通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序在实际业务场景中,SQL的执行计划中会出现“Using filesort”,这里需要注意的是filesort并不意味着就是文件排序,其实也有可能是内存排序,这个主要由sort_buffer_siz...原创 2018-03-08 13:54:38 · 4236 阅读 · 4 评论 -
mysql迁移到REDIS过程
一个简单快速的将MySQL的数据迁移到Redis中并且以hash方式存储,数据的存储需要遵守redis的通讯协议(官方连接 http://redis.io/topics/mass-insert),如: *3 CR LF //三个字段 $3 CR LF //第一个字段 ‘set’ 有3个字节 SET CR LF //字段内容set $4 CR LF //第二个字段key...原创 2018-03-08 13:56:38 · 925 阅读 · 0 评论 -
MySQL逻辑备份备份还原
从一个全备的数据恢复指定的数据,方法有很多,可以通过特殊方法从全备的数据文件取出数据数据库名和表名等等,还可以通过一个全备指定库名的方式恢复指定的数据,这个方法简单快速,这个方法会恢复不需要的库,但不会恢复数据.过程如下:1、查看数据库还没备份前的状况MariaDB [(none)]> show databases;+--------------------+| Database ...原创 2018-03-08 14:00:44 · 650 阅读 · 0 评论 -
MySQL在线修改数据库名称
介绍:略思路:借助rename这个命令基本操作:rename olddb.tables to newdb.tables直接脚本执行:#!/usr/bin/env python# -*- coding: utf-8 -*-import MySQLdbimport timeclass m_s: def __init__(self,host,user,password,port): ...原创 2018-03-09 13:23:40 · 3012 阅读 · 0 评论 -
MySQL数据库统一备份平台管理
MySQL集中备份平台实现过程: #1、将文件db_back存放在/home目录下#2、将dbreport存放在在/home/www目录下1、修改/home/db_backup/config.ini配置文件,设置连接数据库设定的4个表基础信息[baseconf]host=192.168.15.57 #根据实际修改name=dbinfo #根据实际修改库信息port=5700 ...原创 2018-03-09 15:21:37 · 3623 阅读 · 0 评论 -
mysql otter安装部署
mysql环境已经都安装就绪otter用的mysql库的用户权限配置:grant all privileges on *.* to 'canal'@'%'identified by 'canal';grant all privileges on *.* to'canal'@'localhost' identified by 'canal';delete from user where user='...原创 2018-03-02 15:48:26 · 1021 阅读 · 0 评论 -
MySQL数据库主从切换脚本自动化
在一些实际环境中,如何实现主从的快速切换,在没有MHA等工具的辅助下,如何避免影响线上的业务,一般都会在在业务低峰期进行主从切换,本脚本主要利用MySQL自带的命令行工具(FLUSH TABLES WITH READ LOCK)进行锁全库,且由用户自行输入判断多少秒内从库BINLOG数据不在同步后,认为主从数据已达一致性可以进行主从切换(在一些资料上说也可以用READ-ONLY来锁库,...原创 2018-03-11 11:19:24 · 4667 阅读 · 0 评论 -
MySQL 虚拟表获取数据行号
通过虚拟表获取结果集的行的标识号,或者想知道数据库某一条数据的排名,或者获取时间的多少天前记录等。SQL如下:SELECT @rowno:=@rowno+1 AS rowno,a.* FROM `tbl_crm_card_info` a,(SELECT @rowno:=0 )t LIMIT 0,10SQL2:SELECT @rowno:=@rowno +1 AS lineno ,DATE_SUB...原创 2018-03-21 11:56:16 · 1465 阅读 · 0 评论 -
MySQL数据一致性验证-mysqldbcompare
MySQL数据一致性验证方式: 如果要比较数据库表结构就使用mysqldiff,并生成差异SQL语句 如果要比较数据库主从一致使用pt-table-checksum,生成差异报告,在利用pt-table-sync 数据修复 如果要比较数据库数据就使用mysqldbcompare,并生成差异SQL语句(全能比较) mysqldbcompare是官方提供一个可以实现多库或单库比较数据一致...原创 2018-03-21 14:26:31 · 6501 阅读 · 0 评论 -
MySQL批量删除数据脚本
#!/usr/bin/python# -*- coding: UTF-8 -*-import osimport MySQLdbimport timedb=MySQLdb.connect(host="172.16.32.11",user="a",passwd="root1123",port=3307,charset='utf8')cursor=db.cursor()sql="select id fr...原创 2018-04-14 18:12:19 · 3348 阅读 · 0 评论 -
pt-archiver数据归档使用大全
-where 'id<3000' 设置操作条件--limit 10000 每次取1000行数据给pt-archive处理--txn-size 1000 设置1000行为一个事务提交一次--progress 5000 每处理5000行输出一次处理信息--statistics 结束的时候给出统计信息:开始的时间点,结束的时间点,查询的行数,归档的行数,删除的行数,以及各个阶段消耗的总的时间和比例...原创 2018-04-16 17:10:18 · 2449 阅读 · 1 评论 -
MySQL分区表到普通表互转
由于最近总有人抱怨,数据迁移后执行SQL变慢,经过查看原来是分区导致的问题。原分区根据按月设置RANGE分区,看到这图的时候也许有人就会发现问题.......业务查询SQL:从SQL上看 执行计划确实是走了分区,但为什么没有命中索引呢,在图1的里有联合索引(idx_reportDate_groupID_shopID_saasOrderKey)##解决问题思路1、若强制指定走索引,确实是快的,扫描的...原创 2018-04-11 11:58:38 · 6044 阅读 · 0 评论 -
INCEPTION+Yearning审核平台
自动化autosql审核平台--基于Yearning可视化解决依赖包yum -y install cmake ncurse ncurses-devel gcc gcc-c++ openssl-devel http-parser libicu nginx wget m4一、升级PYTHON版本1.下载并安装Python3.6.3# wget https://www.py...原创 2018-04-27 11:10:07 · 2600 阅读 · 0 评论 -
MySQL报错1677
线上从库报错,原来库字符集为utf8mb4,后在RENAME表后重新添加为utf8,跑了一段时间提示1677.slave_type_conversions来控制复制中主从结构不一致的处理默认为”,即不支持主从字段类型不一致,其它3种类型为:all_lossy 支持有损转换,如int–>tinyintall_non_lossy 支持无损转换,如char(20)–>varchar(25)a...原创 2018-04-27 12:45:49 · 2446 阅读 · 0 评论 -
MySQL存储过程复制表数据到另一表中
1、源表信息:CREATE TABLE `aa` ( `id` int(11) NOT NULL AUTO_INCREMENT, `b1` int(11) DEFAULT NULL, `abc` int(200) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `b` (`b1`)) ENGINE=InnoDB AUTO_INCREMENT=9 ...原创 2018-06-07 18:05:17 · 3588 阅读 · 0 评论 -
MySQL快速搭建主从关系
转至元数据起始对新实例部署一键快速实现主从关系,根据官方提供的工具mysql-utilities包中mysqlreplicate。在使用工具需要注意:添加用户时,从库IP地址要明确指定,不要使用带有'%'格式命令使用格式:mysqlreplicate --master=root@localhost:3306 --slave=root@localhost:3310 --rpl-user=rp...原创 2018-12-27 16:54:35 · 716 阅读 · 0 评论 -
mydumper安装和使用
mydumper作为一个实用工具,能够良好支持多线程工作,可以并行的多线程的从表中读入数据并同时写到不同的文件里,这使得它在处理速度方面快于传统的mysqldump。其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑。这样,mydumper能更好的完成备份任务。m...原创 2018-03-08 10:56:38 · 2886 阅读 · 0 评论 -
pt-table-checksum- 主从MySQL数据一致性校验
工作上需要把一个从库提升为主库,但对从库和主库的数据一致性不能保证一样,所以就利用pt-table-checksum 工作来检查主从的一致性,操作前需要注意的事项: (1)在有些情况下,recursion-method如果不设会报错:Diffs cannot be detected because no slaves were found. 其参数有四:proc原创 2017-12-15 20:35:37 · 1166 阅读 · 0 评论 -
在线开关MySQL5.7 GTID与传统快速切换
当前场景:某些业务场景还未开启GTID服务组,在最新版本中,BINLOG组提交也基于GTID方式,因此如何检测是否符合开启GTID条件,在线切换使用GTID,以及如何快速回滚:gtid_mode参数新选项:MySQL提供两个额外的选项off_permissive和on_permissive gtid-mode的几种状态说明: off :不产生gt原创 2017-12-12 19:56:01 · 435 阅读 · 0 评论 -
快速实现MySQL迁移到Redis
一个简单快速的将MySQL的数据迁移到Redis中并且以hash方式存储,数据的存储需要遵守redis的通讯协议(官方连接 http://redis.io/topics/mass-insert),如: *3 CR LF //三个字段 $3 CR LF //第一个字段 ‘set’ 有3个字节 SET CR LF //字段内容set原创 2017-12-15 20:16:54 · 440 阅读 · 0 评论 -
MySQL引擎特性GIS-R-TREE
MySQL引擎特性GIS-R-TREE Geohash用于代表位置的经纬度编码成一个字符串,支持WGS 84 Coordinate System MySQL支持的空间数据类型包括GEOMETRY,POINT,LINESTRING,POLYGON.其中GEOMETRY可以表示任意一种空间类型,其他几种则需要固定有效的存储格式如(MULTIPOINT, MULTILINE原创 2017-12-15 20:18:41 · 538 阅读 · 0 评论 -
3分钟了解Mysql空间搜GeoHash
简单介绍: Mysql 内置函数方案,适合于已有业务,新增加LBS功能,增加经纬度字段方可,避免数据迁移,在5.7.5后实现更多功能实现INNODB的空间搜方法,之前版本主要是对MYISAM的支持。 在此之前,InnoDB将几何数据存储为BLOB(二进制大对象)数据,在空间数据上只能创建前缀索引,当涉及空间搜索时非常低效,尤其是在涉及复杂的几何数据时。在大多数情况下,获得原创 2017-12-15 20:20:03 · 5886 阅读 · 0 评论 -
BINLOG之1781的问题
一次通过BINLOG恢复数据时报:ERROR 1781 (HY000): @@SESSION.GTID_NEXT cannot be set to UUID:NUMBER when @@GLOBAL.GTID_MODE = OFF场景说明:一次误删数据删除还原,直接把BINLOG文件导成SQL文件形式(mysqlbinlog mysql-bin.000020>a原创 2017-12-15 20:21:02 · 529 阅读 · 0 评论 -
MySQL 新特性应用JSON
MySQL5.7之JSON使用MySQL 支持原生的 JSON 数据类型,列不能设置默认值从MySQL 5.7.8 开始,MySQL支持原生的JSON格式,即有独立的json类型,用于存放 json格式的数据。JSON 格式的数据并不是以string格式存储于数据库而是以内部的binary 格式,以便于快速的定位到json 格式中值在插入和更新操作时MySQL会对J原创 2017-12-15 20:22:06 · 348 阅读 · 0 评论 -
BLACKHOLE的BINLOG实现
BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储!是否支持BLACKHOLE引擎,通过查看SHOW ENGINES进行查看。BlackHole的用途:用于binlog的备份线上MySQL的binlog一般会保留3-5天,但是对比较重要的业务,binlog可能需要保留一个月甚至半年。线上服务器可没有这么大的空间,最多保留10天就会被purge掉。此时bla...原创 2018-03-08 11:00:02 · 609 阅读 · 2 评论 -
开源在线DDL工具--gh-ost
1. gh-ost工作模式gh-ost有三种工作模式:a:连接到从库,在主库做迁移。b:连接到主库,迁移过程所有操作都在主上操作,包括读取binlog等等。c:在从库做迁移测试。三种方法各有优缺点,先说a的缺点,a会在从上面读取binlog,但数据库主从数据为什么会造成不一致,一个很重要的原因是主库的binlog没有完全在从库执行。所以感觉a方法有丢失数据的风险。b方法任何操作都会再主库操作,或多...原创 2018-03-08 10:59:13 · 1872 阅读 · 0 评论 -
MySQL到CSV几种方法
数据的导出导入,最常用的方法:导出:省资源型:mysql -e "select * from aa" -s -s >aa.txt 导入:load data infile '/tmp/user_type_2017-08-21.txt' into table aa fields terminated by '\t' ##耗资源型:原创 2017-12-15 20:27:02 · 1403 阅读 · 0 评论 -
MYSQL explain详解之range
explain显示了MySQL如何使用索引来处理DML语句以及连接表,explain显示的信息可以帮助选择更好的索引和写出更优化的查询语句 2.EXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、 inde原创 2017-12-15 20:24:42 · 15707 阅读 · 0 评论 -
pt-osc全解pt-online-schema-change
MySQL 大字段的DDL操作:加减字段、索引、修改字段属性等,在5.1之前都是非常耗时耗力的,特别是会对MySQL服务产生影响。在5.1之后随着Plugin Innodb的出现在线加索引的提高了很多,但是还会影响(时间缩短了),主要是出现了MDL锁。不过5.6可以避免上面的情况,但目前大部分在用的版本都是5.6之前的。工作原理: 模仿MySQL的alter,但不原创 2017-12-15 20:25:46 · 1154 阅读 · 0 评论 -
数据库优化前章
1、硬件层相关优化 1.1、CPU相关 在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU最大性能,或者避免经典的NUMA问题: 1、选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能,跑DB这种通常需要高运算量的服务就不要考虑节电了; 2、关闭C原创 2017-12-15 20:28:44 · 296 阅读 · 0 评论 -
MySQL水平分割案例
水平分割:根据一列或者多列的值把数据行放到多个独立的表里,水平分表方式可以通过多个低配置主机整合起来,实现高性能。根据公司的业务,两套重复的架构,部署在不同的IDC上,需要对数据进行合并操作,数据库采用水平方式实现业务数据的存储,如架构图:说明:路由表A作用:md5key作为分表策略的依据,对md5key值进行取模运算,需要把数据写入具体表位置。一般对于业务需求,可原创 2017-12-15 20:34:09 · 892 阅读 · 0 评论 -
MYSQL事务和锁
Atomic,同一个事务里,要么都提交,要么都回滚Consistency,即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏Isolation,并发事务间的数据是彼此隔离的,通过锁的方式来实现。Durabiliy,事务提交后,所有结果务必被持久化REDO UNDOINNODB记录逻辑的操作。INNODB原理: 事务提供一种机制将一个活动原创 2017-12-15 20:32:13 · 1184 阅读 · 2 评论 -
数据的还原操作mixed和row的操作
MySQL备份策略:全备+增量备份主要包括以下几个步骤:1、开启BINLOG服务2、使用MYSQLDUMP对数据库进行完全备份3、使用flush logs指令刷新创建新的2进制日志4、使用mysqlbinlog logs-bin.[0-9]* |mysql进行增量备份的恢复一般的,假设我们周日下午3点进行了完全备份并生成备份文件full_backup_201原创 2017-12-15 20:30:59 · 646 阅读 · 0 评论 -
RAID磁盘阵列的原理与搭建
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)可以提供较普通磁盘更高的速度、安全性,所以服务器在安装时都会选择创建RAID。 RAID的创建有两种方式:软RAID(通过操作系统软件来实现)和硬RAID(使用硬件阵列卡);在企业中用的最多的是:raid1、raid10和raid5。不过随着云的高速发展,供应商一般可以原创 2017-12-15 20:32:58 · 1323 阅读 · 0 评论 -
Solr快速实现
在一些项目中,为了提高搜索的效率,一般都会使用外来工具,比如现在流行的ES、SOLR等等的工具,实现业务的模糊等搜索的快速反映。对于如何结合MySQL等操作略,具体可以查看网络相关文档介绍。初期展示:添加一个CORE:附带简单的一个查询环境准备 系统环境:CENTOSTOMCAT原创 2017-12-01 16:01:36 · 350 阅读 · 0 评论