- 博客(159)
- 收藏
- 关注
原创 mysql的double write和postgresql的full_page_writes
一、什么是double write(双写)double write它针对的对象是脏数据,在将脏数据刷盘过程中产生。即一份脏数据写到共享表空间,一份写到真正的数据文件永久保存,也就是说写了两次的脏数据。所以称为double write。二、什么是postgresql的full_page_writesfull_page_writes是控制是否开启全页写入,默认开启。作用就是为了防止块折断活动损坏的一种策略。postgres=# show full_page_writes; full_page_writ
2022-03-21 22:56:37 2109
原创 postgresql和mysql之间比较
一、事务隔离之间的比较事务隔离级别postgresqlmysql读未提交无法读脏数据有读已提交快照实现快照实现可重复读有,无幻读,发生冲突时,牺牲其中一个事务已实现,有幻读,悲观锁,因为Gap Lock问题,存在性能问题可串行化已实现,通过SSI实现,乐观锁,性能比较好悲观锁,S2PL,性能不好,实用性比较差二、持久化之间的比较持久化技术postgresqlmysql事务的持久化WAL日志binlog和innodb的
2022-03-18 21:30:00 15951
原创 postgresql逻辑复制的搭建
postgresql有流式物理复制和逻辑主从复制,前者复制延时低,但是备库只读。而后者备库可读写,但是有较大的局限性,只能部分复制,数据容易出现不一致等问题。一、逻辑复制优缺点比较缺点:逻辑复制比较容易出错,效率也比较低,容易造成主从数据不一致的问题。而且只做部分复制,如表级别复制,而不是整个集群的块级别一致复制优势:备库可以读写,还可以指定的某个库或者某张表进行复制。同时也可以将的不同库的不同步同步复制到同一个数据库二、逻辑复制的搭建1.参数要求,wal_level值要为logical,修改该参
2022-03-17 21:00:00 2155
原创 postgresql不同大版本之间的特性比较
一.不同大版之前分区改进pg9使用继承式分区,pg10实现了声明式分区,pg11完善了功能,pg12提升了性能不同版本在分区表上的性能改进版本新增特性pg91.继承式分区 2.手动添加触发器或规则pg101.声明式分区 2.分区索引手动创建,不能基于分区父表创建pg111.新增哈希分区 2.基于的分区表创建索引 3.支持update分区 4.会创建一个默认default分区 5.分区支持创建主键,外键,索引,触发器pg121.新增哈希分区 2.alte
2022-03-17 11:27:20 15870 1
原创 pg_rewind数据同步工具
pg_rewind是postgresql主从数据库之间同步数据目录的工具pg_rewind只复制表数据文件中更改的块,所有其他文件都被完整复制,包括配置文件pg_rewind不需要读取数据库中未更改的块,在只有小部分不同的情况下,速度会很快用法:pg_rewind [option…]Example:sudo -u postgres /usr/local/pgsql/bin/pg_rewind --target-pgdata=/data/pg_data/data --source-server
2022-03-10 20:44:55 838
原创 git修改分支名称和terraform基本操作
一、git修改分支名称1.重命名本地分支git branch -m old_name new_name2.重命名远程分支## 删除远程分支旧名称git push --delete origin old_name## 重新推送新命名的本地分支git add .git commint --amend -m "new rename branch"git push origin new_name## 把修改后的本地分支与远程分支关联git branch --set-upstream-to
2022-03-10 20:43:16 1083
原创 linux软链接和硬链接
一.ln命令的使用Usage: ln [OPTION]… [-T] TARGET LINK_NAME (1st form)or: ln [OPTION]… TARGET (2nd form)or: ln [OPTION]… TARGET… DIRECTORY (3rd form)or: ln [OPTION]… -t DIRECTORY TARGET… (4th form)参数说明参数说明-s, --symbolic创建
2022-03-10 20:42:42 535
原创 linux中的用户和用户组命令操作
1)groupadd命令Usage: groupadd [options] GROUP参数说明参数描述-f, --force如果组已经存在,则退出;如果GID已经被使用,则取消-g-g, --gid GID使用GID创建新的组-h, --help帮助信息-K, --key KEY=VALUE覆盖重写/etc/login.defs的默认值-o, --non-unique允许创建重复的组-p, --password PASSWORD新组的加密密
2022-03-08 19:46:37 717
原创 mysqlbinlog命令工具的使用
使用语法mysqlbinlog [options] log-files常用参数说明参数描述-?, --help帮助信息--base64-output=name输出格式,‘auto’:默认自动;‘never’:以binlog事件格式输出;‘decode-rows’:以注释方式输出pseudo-SQL-d, --database=name只列出该数据库的条目(只用本地日志)--bind-address绑定的IP地址-h, --host=name获取给定
2022-03-08 19:45:51 707
原创 postgresql锁
postgresql锁postgresql中根据不同的对象,不同使用场景,使用三种不同的锁,spinLock,LWLock,LockspinLock:自旋锁,是并发场景下,保护共享资源的有一种机制。实现的成本最低,一般是使用基于硬件的TAS(test-and-set)操作。SpinLock不能用于需要长久持有锁的逻辑,在postgresql中,spinlock主要用于对于临界变量的并发访问控制,所保护的临界区通常是简单的赋值语句来,读取语句等等。特点:申请锁的进程一直在额尝试能否加锁成功,只有等
2022-03-06 17:34:07 1460
原创 mysql8.0+上被移除或替代的特性
1.mysql8.0被弃用的特性validate_password在未来新版本将被弃用alter tablespace和drop tablesapce engine被弃用pad_char_to_full_length的SQL模式被弃用在创建临时表中TABLESPACE = innodb_file_per_table and TABLESPACE = innodb_temporary被弃用2.mysql8.0中新参数/变量或表代替旧的参数/变量/表旧参数或表代替的参数或表u
2022-03-06 17:32:55 882
原创 linux的输出重定向
默认条件下,标准输出和错误输出都是终端,可以把标准输出和错误内容进行重定向一、重定向标准输出类型1)覆盖类型:> / 1>2)追加类型:>> / 1>># ll > aa.log# cat aa.logtotal 0-rw-r--r--. 1 root root 0 Mar 3 11:03 aa.log-rw-r--r--. 1 root root 0 Mar 3 11:03 aa.txt# echo -e "\n#20220303" &.
2022-03-03 22:10:10 7447
原创 mysqldumpslow慢查询分析工具使用
使用语法Usage: mysqldumpslow [ OPTS… ] [ LOGS… ]常用参数参数描述-s排序方式,后面跟排序列-r反向排序-t返回记录数-a不将所有的数字抽象为N,字符串抽象为S-n NUM在名称中至少有n个数字抽象为数字-g正则匹配模式,大小写不敏感-v,--verbose详细执行信息-d,--debug调试模式排序方式:al:平均锁定时间ar:平均返回记录时间at:平均查询时间,默认c
2022-03-03 22:09:09 169
原创 mysqldump的使用
mysqldump工具介绍mysqldump是mysql自带的逻辑备份工具。它通过协议连接到mysql数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句。使用语法:Usage: mysqldump [OPTIONS] database [tables]OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3…]OR mysqldump [OPTIONS] --all-databases [OPTIO
2022-03-03 22:08:34 1971
原创 mysql的事务日志
一、事务日志innodb通过force log at commit机制实现事务的持久性,即在事务提交的时候,必须先将该事务的所有事务日志写入到磁盘上的redo log file和undo log file中进行持久化。事务日志是连续的磁盘空间,因此IO是顺序的,性能比较高,可以保证数据及时写入事务日志。innodb是使用日志来减少提交事务时的开销。二、事务日志类型redo log:重做日志,提供前滚操作。通常是物理日志,记录的是数据页的物理修改,用于恢复提交后的物理数据页undo l
2022-03-01 19:13:43 937
原创 python的字典类型
python的字典类型字典标识符号为花括号"{}"字典的每个键值对使用冒号":“进行分割,多个键值对使用逗号”,"分割。字典中的key必须保证唯一,但是值可以重复1.字典定义# 定义字典>>> user = {'usename':'zhangsan','age':18}>>> type(user)<class 'dict'>>>> print(user){'usename': 'zhangsan', 'age':
2022-03-01 19:06:59 2030
原创 mysql日志类型
一、mysql的日志类型普通日志慢查询日志错误日志binlog日志中继日志1)普通日志general_log开启后会记录所有执行的sql,所以开启后很容易导致磁盘爆满,一般只是用于临时使用的时候开启,使用完后关闭。日志保存在general_log_file的路径下。## 查看普通的日志是否开启,默认不开启,一般不开启mysql> show variables like 'general_log%';+------------------+------------------
2022-02-28 22:20:40 908
原创 利用python提取某段时间范围的日志信息
1)strptime()函数使用strptime():根据格式的时间字符串,返回值是一个struct_time所返回gmtime()或localtime()使用语法:time.strptime(string[,format])string:时间内容format:时间格式>>> print(time.strptime("2022-02-22","%Y-%m-%d"))time.struct_time(tm_year=2022, tm_mon=2, tm_mday=22,
2022-02-25 19:30:13 1619 1
原创 python中的print的用法
print()函数可以将输出的信息打印出来,即发送给标准输出流。1、语法使用print(value,…,sep=’’,end=’\n’,file=sys.stdout,flush=False)file:类文件对象,默认为当前的sys.stdoutsep:在值之间插入的字符串,默认为空格end:在最后一个值后附加的字符串,默认是换号符flush:是否强制刷新流,默认是False## file参数使用## 打开日志f = open('aa.log',"w")## 将字符串tes.
2022-02-25 19:29:42 1704
原创 sed和awk的使用
一、sed的使用Usage: sed [OPTION]… {script-only-if-no-other-script} [input-file]…参数:-n : 使用安静输出模式-e : 直接在命令列模式上进行sed的动作编辑-f :直接将sed的动作写在一个文件内-i[SUFFIX], --in-place[=SUFFIX] : 直接修改读取的文件内容,而不是输出到终端-c, --copy : 在-i模式下移动文件时,使用copy代替rename-b, --binary : 兼容二进
2022-02-25 19:29:11 636
原创 python中调用shell命令
1.os.system(cmd)import os## os.system()调用shell命令var = os.system('df -h')>>> var = os.system('df -h')Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 13G 8.8G 3.9G 70% /devtmpfs 908M
2022-02-25 19:28:33 3945
原创 mongodb分片集群
一、mongodb分片集群Mongodb sharding cluster:分布式mongodb集群:将海量数据水平扩展,数据分表存储在sharding的各个节点mongodb的数据分块称为chunk。每个chunk都是collection中一段连续的数据记录,通常最大尺寸是200MB,超过则生成新的数据块1.1 分片角色类型:1)shard server:存储实际数据的分片。每个shard可以是一个mongod实例,也可以一个replica set。为了实现每个分片内存的自动故障转移,
2022-01-29 20:19:46 1306
原创 mongodb数据类型
1.mongodb数据类型object id:文档自动生成的_id,唯一标识string:字符串,必须是utf-8boolean:布尔型,true/falseinterger:整数double:浮点数arrays:数组或列表object:字典类型null:空数据类型timestamp:时间戳date:日期2.mongodb的NumberNumberLong()和NumberLong("")因为mongodb中不管是整形,小数,负数等的数值类型就只有NumberLong表示。N
2022-01-29 20:19:29 8216
原创 mongodb磁盘碎片整理
mongodb磁盘碎片产生删除文档或集合后,mongodb不会将disk空间释放的为OS,mongodb会在数据文件中维护Empty Records的列表。 重新插入数据后,mongodb从Empty Records列表中分配的存储空间给新的文档一、整理数据碎片的方法使用compact命令新加一个secondary节点,然后的将此节点切换为primary,一般在数据量非常大的情况下使用重建collection二、查看集合大小等信息// 查看集合大小db.collection_name
2022-01-29 20:19:01 1605
原创 mongodb副本集降级切换
1.优先级设置每个节点的优先级默认为1// 在primary节点上设置优先级cfg = rs.conf()// 将某个节点priority设置为最大的时候,通过rs.reconfig()后会自动选举次节点为primarycfg.members[1].priority = 10rs1:PRIMARY> rs.reconfig(cfg){ "ok" : 1, "operationTime" : Timestamp(1643180119, 1),
2022-01-27 20:20:21 2690
原创 查看mongodb当前的配置信息
1.获取当前全部配置信息db.runCommand( { getParameter : ‘*’ } )use admin// 获取全部配置信息db.runCommand( { getParameter : '*' } ){ "AsyncRequestsSenderUseBaton" : true, "KeysRotationIntervalSec" : 7776000, "ShardingTaskExecutorPoolHostTimeoutMS
2022-01-27 20:19:53 4309
原创 mongodb副本集管理
一.local系统库1.1 local本地库介绍local库存储replication进程的信息和本地数据,记录着是时间戳,索引以及复制等信息local库里面的内容是不能复制的rs1:PRIMARY> use localswitched to db localrs1:PRIMARY> show tablesoplog.rs //记录所有操作,mongodb就是通过oplog.rs实现数据同步的replset.election //副本集选择信息replset.min
2022-01-26 23:36:35 1642
原创 mongodb副本集搭建
mongodb副本集(replica set)MongoDB的最新版本已经不推荐使用master-slave主从复制副本集节点可以有的角色:(primary和secondary外)成为primary对客户端可见参与投票延迟同步复制数据default√√√–√secondary-only–√√–√hidden––√–√delayed–√√√√arbiters––√––non-voting√
2022-01-25 23:24:55 1788
原创 pg_resetwal使用
pg_resetwal(9.6及之前版本叫pg_resetxlog)是用于清理不需要的WAL文件,还可以用于篡改当前事务ID,可以恢复未被vacuum回收的元组。语法:pg_resetwal [OPTION]… DATADIR参数:-c, --commit-timestamp-ids=XID,XID|[-D, --pgdata=]DATADIR|数据目录路径-e, --epoch=XIDEPOCH|epoch xid-l, --next-wal-file=WALFILE|下一个WAL文件名称
2022-01-25 23:23:56 1451
原创 python函数和类定义
一.函数定义1.自定义函数defdef fun_name(parameters): expressions return value参数说明:fun_name:函数名parameters:参数expressions:表达式利用return设置返回值,返回多个值有逗号隔开,没有return语句默认返回None2.调用自定义函数if __name__ == '__main__': fun_name(parameters)3.利用pass定义空函数def fu
2022-01-24 20:48:48 2453
原创 python字符串和数组的使用
一.find()函数用法:find(str,pos_start,pos_end)str:指定检索的字符串pos_start:检索起始位置,默认下标0开始pos_end:检索结束的位置,默认是-1返回结果:如果存在,返回查找的第一个出现的位置,否则,返回-1不存在str="hello,what are you doing now?"# 返回字符串所在下标位置print(str.find(','))5# 不存在,返回-1print(str.find('!'))-1#
2022-01-22 16:24:32 2152
原创 mysql死锁和等待锁
一.msyql死锁死锁是相互争用资源过程中,都等待彼此释放资源,产生的现象。死锁场景模拟当session1持有共享锁S,并请求排他锁X,同时session2持有排他锁,并请求共享锁S的时候会产生死锁。1)模拟session1持有共享锁,session2持有排他锁## 在session1中执行start transaction;Query OK, 0 rows affected (0.00 sec)select * from aa where userid = 18 lock in
2022-01-19 23:30:58 2187
原创 Redis6.0的新特性ACL的介绍
acl的优势:redis6之前的传输都是基于tcp明文传输的,redis6增加了TLS加密传输,并且引入了ACL访问控制列表。在之前版本,密码认证是通过requirepass明文配置在redis.conf文件中的,安全性不高。其次,应用连接也是使用配置的同一个用户,具体安全性和风险的隐患。redis acl是向后兼容的,默认情况下用户为default,使用的是requirepass配置的方式。如果不使用acl功能,对旧版客户端是完全一样的。1.认证方式auth <password
2022-01-19 23:29:37 2364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人