最近用低代码平台amis, 2天搭了一个审核系统,为了快点看到效果,没有使用框架的ORM,直接写SQL,结果分页展示数据,总数比展示数据多一条,原因是在MySQL Limit上翻车了。特别震惊,工作这么多年了,自己真的不知道limit的用法。
继续阅读
分类目录归档:DB
etcdctl常用命令笔记
etcdctl直接在github下载二进制文件即可,大概17M
etcdctl命令分为数据库操作命令(CURD操作)和非数据库操作命令
一、常用命令
1、数据库操作命令
put/get/del/txn
etcd单机&集群安装笔记
密码保护:MySQL连接数笔记
MySQL主从同步原理笔记
上篇文章分析了MySQL主从同步的配置,傻瓜式的配置还是相对容易的。知道怎么配,还需要知道这么配的运行原理。也就是我们常说的知其然,知其所以然。
一、原理分析
主从同步也叫主从复制。同步原理
0、主服务器(master)把数据更改记录到二进制日志(binlog)中。
1、从服务器(slave)连接主服务器,master会为每个slave开启单独的binlog dump thread。
mysql>change master to master_host='10.235.25.242',master_user='mysql',master_password='123456',master_log_file='mysql-bin.000147',master_log_pos=98;
2、从库上启动I/O线程和SQL线程。
mysql>start slave;
3、master上的binlog dump thread发送binlog, slave上的I/O线程接收binlog后写入中继日志(relay log)。【这里master和slave建立的是TCP连接,很多资料表明是binlog dump thread发送到slave, slave I/O线程读取,我理解一端发送,一段接收】
4、slave上的SQL线程读取relay log, 写入从库。
继续阅读
MySQL主从同步配置笔记
MySQL单机安装和配置,这里就不展开了。感兴趣的同学可以参考我之前的文章《MySQL-8.0.11源码编译安装》
实际生产环境往往是单库运行一段时间后,增加的从库,需要考虑历史数据同步问题。这里是在测试环境搭建的,不考虑历史数据问题。直接在两台数据库服务器上创建两个新库niliu, 然后演示同步。
主:10.235.25.242 【CentOS release 6.5】 【MySQl 5.0.77】
从:10.235.25.241 【CentOS release 6.9】 【MySQl 5.0.77】
说明:以下配置为了简洁方便,含义特放在第五部分说明。
继续阅读
B+树学习笔记
不知道你有没有这样的困惑,B+树的资料看了很多,依旧对B+树没有一个具象的认识。我也是这么走过来的,所以希望这篇笔记能帮到你。
一、演化阶段
你或许知道,或许不知道。B+树是由二叉树不断演化过来的。
大致的演化路线如下:
二叉查找树 -> 平衡二叉树 -> B树 -> B+树。
为了说清楚B+说,我们很有必要搞清楚演化过程中每个阶段的特点。
继续阅读
MySQL存储引擎和索引
存储引擎是数据如何存储到文件,如何更新、查询,如何建立索引的一种机制。
MySQL核心两点就是存储引擎和索引。
继续阅读
MySQL唯一索引添加和用法
一、唯一索引添加与变更
0、建表加唯一索引ukey_o_d_t,使用关键字unique key(如果只是单列唯一索引,可以在字段后加unique, 如topic):
CREATE TABLE `tv_episode_checkin_summary_log` ( `id` int(11) unsigned NOT NULL auto_increment COMMENT '自增ID', `oid` varchar(128) NOT NULL default '0' COMMENT '选项ID', `topic` varchar(256) NOT NULL default '' unique COMMENT '话题词', `num` int(11) unsigned NOT NULL default '0' COMMENT '数量', `type` varchar(2) NOT NULL default '' COMMENT '类型: 1、小时数;2、天数', `dtime` bigint(11) unsigned NOT NULL default '0' COMMENT '数据汇总时间', `ctime` bigint(11) unsigned NOT NULL default '0' COMMENT '创建时间', `mtime` bigint(11) unsigned NOT NULL default '0' COMMENT '修改时间', `ext` varchar(64) NOT NULL default '' COMMENT '扩展字段', PRIMARY KEY (`id`), UNIQUE KEY `ukey_o_d_t` (`oid`,`dtime`,`type`), KEY `key_t_d_t` (`topic`(255),`dtime`,`type`), KEY `key_o_d_t` (`oid`,`dtime`,`type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='打卡汇总数据表'
线上MySQL数据库迁移的一个方案
起因,线上数据库版本5.5.12比较低,升级到5.7.8支持json。
需要对线上正在使用的数据库做迁移,很少遇到这样的情况,考虑到没有长连接, 开始想到的方案很简单:
0、新建一个MySQL主从库
1、旧主单向往新主实时同步(毫秒级),新主不往旧主同步。
2、切换连DB的读账号信息,观察读是否正常。
3、切换连DB的写账号信息。
4、观察一段时间,旧库没有新写入内容即可断开往新主的同步。
继续阅读