MySQL分区表
分区概述如Oracle一样,MySQL也支持根据规则对表进行分区,分区后还是一张完整的表,只是将分区数据分散到不同的数据文件中。表分区带来的优化在于当查询条件包含分区键时,性能得到提升。并且我们也可以单独对指定分区进行操作,提升了分区表的可操作性,例如单独清理往年历史分区数据。
root@test 15:44: CREATE TABLE members ( -> firstname VARCHAR(25) NOT NULL, -> lastname VARCHAR(25) NOT NULL, -> username VARCHAR(16) NOT NULL, -> email VARCHAR(35), -> joined DATE NOT NULL -> ) -> PARTITION BY RANGE( YEAR(joined) ) ( -> PARTITION p0 VALUES LESS THAN (1960), -> ...
PMM监控-数据库监控
安装pmm客户端
下载安装客户端DownLoad
$ rpm -ivh pmm2-client-2.10.1-6.el7.x86_64.rpm
客户端连接到server
$ pmm-admin config --server-insecure-tls --server-url=https://admin:Abcd123@10.0.139.163:443
查看客户端
$ pmm-admin listService type Service name Address and port Service IDAgent type Status Agent ID Service IDpmm_agent Connected /agent_id/4e8b2fc2-63f7-4b16-a916-5aa2ec05f641node_exporter Running /agent_id/0938 ...
PMM监控:安装配置
PMM是由Percona开源的,用于管理和监视MySQL和MongoDB性能,是一个不错的性能监控工具。PMM主要由client和server构成,client部署在每个监控主机上,收集服务器指标、常规系统指标和查询分析数据;server用于聚合收集的数据,在web中以图表形式进行展现。
Docker环境安装
由于PMM提供了容器化的镜像包,我们需要先部署Docker环境。
检查内核(内核要求3.8或更高)
$ uname -r
安装依赖包
$ yum install libcgroup* xz-* libsecc* libltdl* policycoreutils-python -y
RPM安装Docker-Engine
$ rpm -ivh docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm$ rpm -ivh docker-engine-1.13.1-1.el7.centos.x86_64.rpm
修改docker配置
$ cat /etc/docker/daemon.json{ "dat ...
MySQL复制:slave_rows_search_algorithms参数
在基于ROW模式复制的环境下,slave_rows_search_algorithms参数控制如何在行中搜索匹配项,特别是是否使用Hash Scan,设置后会立即对所有复制通道生效。其值可设置为INDEX_SCAN、TABLE_SCAN、HASH_SCAN中指定两个值,以逗号分隔,参数默认值为INDEX_SCAN,TABLE_SCAN。常见的推荐组合及其效果如下:
/* Decision table: - I --> Index scan / search - T --> Table scan - Hi --> Hash over index - Ht --> Hash over the entire table |--------------+-------+-----+-----+-----| | Index\Option | I,T,H | I,T | I,H | T,H | |--------------+-------+-----+-----+-----| | PK / UK | I | I | I | Hi ...
MySQL Shell Dump/Load
在MySQL Shell8.0.17中引入了一个多线程CSV导入工具:util.importTable()。在使用之前需要先开启local_infile参数,下面就是一个简单的示例
util.importTable("/tmp/productrange.csv", {schema: "mydb", table: "products", dialect: "csv-unix", skipRows: 1, showProgress: true})
更多关于util.importTable()的用法,可参考util.importTable
在此基础上,MySQL Shell8.0.21又引入了逻辑转储还原工具,具有易用性、高性能、集成性的特点,接下来将重点谈谈该工具。工具中包含:
util.dumpInstance():转储整个数据库实例,包含用户
util.dumpSchemas():转储一组schema
util.loadDump():将转储数据加载到目标实例
MySQL Shel ...
优化MySQL内存管理:tcmalloc
默认情况下,MySQL内存管理使用的是glibc中的malloc(ptmalloc),实际效果并不是很理想,内存占用率和性能都相对较差。而tcmalloc是由google开源的gperftools其中一个组件,对比默认的malloc来说是一种更好的选择,当然也可以选择MariaDB和redis都采用的jemalloc。项目地址
安装依赖包
$ yum install -y gcc-g++ make libtool libunwind
下载tcmalloc DownLoad
解压安装
$ tar -xvf gperftools-2.8.tar.gz$ cd gperftools-2.8$ ./autogen.sh$ ./configure --enable-frame-pointers$ make && make install -j 4
配置软链接
$ ln -sf /usr/local/lib/libtcmalloc.so /usr/lib/$ ln -sf /usr/local/lib/libtcmalloc.so /usr/lib/
修改mysqld_saf ...
MySQL8.0新特性:直方图
查询优化器负责将SQL查询转换为尽可能高效的执行计划,但随着数据环境不断变化,查询优化器可能无法找到最佳的执行计划,导致SQL效率低下。造成这种情况的原因是优化器对查询的数据了解的不够充足,例如:每个表有多少行数据,每列中有多少不同的值,每列的数据分布情况。
因此MySQL8.0.3推出了直方图(histogram)功能,直方图是列的数据分布的近似值,其向优化器提供更多的统计信息。比如字段NULL的个数,每个不同值的百分比,最大/最小值等。MySQL的直方图分为:等宽直方图和等高直方图,MySQL会自动分配使用哪种类型的直方图,无法干预
等宽直方图:每个bucket保存一个值以及这个值的累计频率
等高直方图:每个bucket保存不同值的个数,上下限以及累计频率
直方图同时也存在一定的限制条件:
不支持几何类型以及json类型的列
不支持加密表和临时表
无法为单列唯一索引的字段生成直方图
创建和删除直方图
创建语法
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON col_name [, col_name] WITH N BUCKETS;
创建 ...
Otter异地双中心部署
项目概述Otter是基于数据库增量日志解析,准实时同步到本地机房或异地机房的MySQL/Oracle数据库。
Otter基于canal实现数据库增量日志数据的获取
manager运行过程中推送同步配置到node节点
node节点将同步状态反馈到manager
基于zookeeper,解决分布式状态调度,允许多个node节点协同工作
otter的S/E/T/L stage阶段模型Tips:select阶段为解决数据来源的差异性,比如接入canal获取增量数据,Extract/Transform/Load 阶段类似于数据仓库的ETL模型,具体可为数据join,数据转化,数据Load
Otter应用场景
异构数据库同步:目前源端只支持MySQL,目标端可以是MySQL或者Oracle,功能主要取决于canal
单机房同步:RTT<1ms,可用于数据库版本升级、数据迁移、异步二级索引
异地机房同步:可实现机房容灾
双向同步:避免回环算法以及数据最终一致性算法
文件同步:进行数据复制的同时,复制相关的图片等文件
名词说明
pipeline:从源端到目标端的整个过程描述,主要由一 ...
MySQL8.0新特性:索引新特性
函数索引在MySQL8.0之前对条件字段做函数操作、或者做运算都将不会使用字段上的索引,例如下面的例子
root@employees 14:09: show index from employees;+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |+-----------+------------+----------+--------------+-------------+-----------+----- ...
Git学习
安装Git下载Git
DownLoad
解压Git
[root@t-luhx01-v-szzb ~]# tar -xvf git-2.3.0.tar.gz
编译安装Git
[root@t-luhx01-v-szzb ~]# cd git-2.3.0[root@t-luhx01-v-szzb git-2.3.0]# ./configure --prefix=/usr/local/git[root@t-luhx01-v-szzb git-2.3.0]# make && make install -j 4[root@t-luhx01-v-szzb git-2.3.0]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile[root@t-luhx01-v-szzb git-2.3.0]# source /etc/profile[root@t-luhx01-v-szzb git-2.3.0]# gitusage: git [--version] [--help] [-C < ...