- 博客(76)
- 收藏
- 关注
原创 pg/og数据库远程连接实验以及数据库白名单详解
192.168.1.0/24 24为网段。192.168.1.91/32 32为ip。192.168.1.56 数据库服务器。host代表可以使用tcp远程连接。192.168.1.91 客户端。连接用户:nineuser。一、配置数据库端的白名单。连接数据库:nine。all代表全部数据库。user代表全部用户。
2024-11-19 10:43:16
589
原创 pg/og数据库权限管理详情2
上面文章我们围绕五条赋权语句实验。这篇文章将进行授权的详解,以及\ddp查看结果。上篇文章说过pg将权限分为两部分。能否登录、创建database、创建role,这类重要权限,在创建role时指定。在pg_roles表中可以查看。对数据库对象的各类操作的权限,通过grant手动授权;在information_schema.xxx_privileges表中可查看,比如information_schema.table_privileges。
2024-11-19 10:30:47
891
原创 pg/og数据库权限管理详情1
pg/og中,围绕角色进行权限的管理,它可以被看作时一个user或者一组user。区分role、user、group。user和group是pg8.1之前的两个实体,role是那之后唯一存在的实体。现在user和role等价。
2024-11-18 17:03:35
669
1
原创 pg表空间和mysql表空间的区别
2、在mysql中表空间就是数据目录中的库文件中的表.ibd文件,在mysql中一个表就是一个表空间,也可以自己创建表空间,在创建表的时候指定这个表空间,这样一个表空间文件对应多个表。创建表和索引时可以指定表空间,这样表和索引就可以存储到表空间对应的目录下了。注意:如果库原先有指定表空间,这时候修改指定表空间后,原表空间目录会自动迁移到现指定表空间目录。4、mysql也可以像pg一样去修改该表的表空间,即可以把旧表空间迁移到新表空间。视图是从一个表或多个表导出来的表,是一种虚拟表,2、创建表指定表空间。
2024-06-18 18:16:08
448
原创 pg分区表和mysql分区表的创建及删除添加操作
众所周知一个.ibd文件就是一个表空间,分区表会根据分区划分划为对应的数据文件,上图可看到没有fenqu.ibd。可以看到show tables只能看到fenqu表看不到划分的那几个表。这与pg不一样,因为其实现原理就不相同。三、mysql范围分区表的创建删除添加操作。二、pg范围分区表的创建删除添加操作。4、进入数据文件看分区表的文件架构。3、sql语句查看数据文件目录。1、mysql分区表的创建。2、mysql分区表的添加。2、mysql分区的类型。1、pg分区表的创建。2、pg的分区表删除。
2024-06-18 14:25:50
718
原创 pg分区表介绍及实现原理
在见分区表后,各个分区表会有各自的索引,使用率较高的分区表的索引就可能完全缓存在内存中,这样效率会高很多。如上图person是父表,student是子表继承于父表,注意:子表自动继承父表的check和非空约束,其他类型(主键,外键,唯一)不会继承。3、当查询或更新一个分区的大部分记录时,使用连续扫描那个分区而不是使用索引离散的访问这个表,可以获得巨大的性能提升。答:一般取决于具体应用,不过也有个基本的简单原则,即表的大小超过了数据库服务器的物理内存大小则应该使用分区表。四、创建分区表的步骤。
2024-06-18 11:34:29
377
原创 pg修炼之道学习笔记
pg中的不同模式可以相当与mysql的不同库,因为mysql中不同库可以互相访问查询操作,pg中的模式也可以互相访问查询操作,但是pg中的不同库不可以互相访问,所以其实pg中的schema相当于mysql中的db。加入mysql实例中有三个数据库,在要移植到pg时,需要建三个模式,使其与mysql示例中的三个数据库相对应,而不是在pg中创建三个数据库与之对应。1、一个pg数据库服务下有多个db(多个数据库),当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库的内容(限制)
2024-06-17 17:31:24
389
原创 truncate table和delete table的区别
truncate table是DDL语句,数据定义语句。truncate table的原理相当于用重新定义一个新表的方法把原先表的内容直接丢弃了,所以truncate table执行起来很快。delete table是DML语句。原理可以认为是把数据一条一条从表空间中链表一条一条删除,要删除多少就要删除多少行数据,就会很慢。truncate table语句的 用途就是清空表内容。不带where条件的delete语句也表示清空表的内容。从执行结果来看两者都实现了相同的功能。但是两者实现的原理是不一样的。
2024-06-14 10:29:04
599
原创 pg和oracle的区别
1、pg有更多的支持互联网特征的功能。如pg数据类型支持网络地址类型、XML类型、JSON类型、UUID类型以及数据类型,有强大的正则表达式函数,where条件中可以使用正则表达式匹配,可以使用python、perl等语言写存储过程等。1、使用共享内存的进程结构,客户端与数据库服务器建立一个连接后,数据库服务器就启动一个进程为这个连接服务。2、pg的wal日志和oracle的redo日志都是记录物理块数据变化的,这与mysql的binlog也不同。1、从功能上来说pg要比oracle数据库弱。
2024-06-12 15:48:05
1267
原创 mysql和postgreSQL的区别
如果仅仅把数据库作为一个简单的存储功能使用(如一些大型互联网公司),一些复杂的功能都想放在应用中来实现,那么选择mysql很合适。如果应用的数据访问简单(如大多数的blog系统)那么后端使用mysql也很合适。如果应用不简单,又不想消耗太多的开发资源,pg合适。使用python+postgresql架构,几十人就可以支持整个公司的业务。在数据库中使用pg,就像在开发语言中使用python,会让工作变得简洁高效。
2024-06-12 15:37:15
677
原创 pw命令1
9、 搭建一主一备,若是没有配置虚拟ip:正常升主可以。reboot主节点备节点不会升为主,备节点cm也不会升为主。8、 主节点reboot后,备节点cm进程升级为主,主节点重启后cm由定时任务脚本自动拉起,主节点cm为备cm,不会自动升级为主cm。可以看到上图,kill掉主库进程后,备库升为主,并且主库由cm进程自动拉起为备库。多节点可由下面两条命令,切换主备cm(一主一备不会成功)。3、cm_ctl是全局的,在一个节点运行。上面的命令也是,升主可以在任意节点运行。2、备节点升主(本例子升2节点为主)
2024-06-05 18:20:27
497
原创 安装zookeeper
1 //与zoo.cfg配置文件中对应,sdw为server.1,所以该处填写为1。-- 前台启动zk并显示具体报错(若启动zk时报错可使用该方式启动排查问题)1、各主机修改/etc/hosts,/etc/hostname文件。开启zk(注意三个机器都要开启,之后再查看zk状态)3、安装zookeeper。2、 各主机安装jdk。
2024-05-29 14:24:49
885
原创 scp问题:Permission denied, please try again.
在scp传输文件的时候需要指导目标端的用户密码,如root用户密码、mysql用户密码。源端root——》目标端mysql(任意)用户。源端(任意用户)——》目标端root用户。没有设置mysql(任意用户)的密码。但是在输入密码的时候会提示重新输入。源端root——》目标端root。再次传输输入密码成功传输。
2024-05-28 16:15:39
903
原创 clickhouse——ck目录介绍
服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等。默认的数据存储目录(通常会修改默认路径配置,将数据保存到大容量磁盘挂载的路径)默认保存日志的目录(通常会修改路径配置,将日志保存到大容量磁盘挂载的路径)4、/usr/binclickhouse 主程序的可执行文件clickhouse-client 一个指向clickhouse可执行文件的软链接,供客户端连接使用clickhouse-server 一个指向clickhouse可执行文件的软连接,供服务端启动使用。
2024-05-27 18:08:56
1278
原创 clickhouse——clickhouse单节点部署及基础命令介绍
clickhouse支持运行在主流的64位CPU架构的linux操作系统之上,可以通过源码编译,预编译压缩包,docker镜像和rpm等多种方式进行安装。
2024-05-27 17:49:21
929
原创 mysql远程连接 异常: “Host ‘xxx‘ is not allowed to connect to this MySQL server“
修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。远程连接提示:Host 'xxx' is not allowed to connect to this MySQL server。是mysql未开启mysql远程访问权限导致。回车使刚才的修改生效,再次远程连接数据库成功。表中host、user字段标识了可以访问数据库的主机和用户。为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。
2024-05-24 17:31:39
397
1
原创 mysql实战——xtrabackup问题
那启动失败的原因我认为是权限的问题,把数据文件目录权限全部设置为mysql.mysql,之后用mysql用户运行命令。后来发现上图这样是正常的,mysqld_safe后就出现pid和sock文件。我测试了很多遍,最开始我以为备份后的数据文件没有pid造成的,所以一直测试。备份恢复后启动不成功。
2024-05-23 17:36:40
328
1
原创 mysql实战——xtrabackup全量备份/增量备份及恢复
恢复的机器必须有my.cnf配置文件,再配置文件中配置好datadir目录即数据问目录,数据目录也必须为空,若不为空则会报错。可以看到第一次增量备份后新增的表空间被恢复了。可以看到inc4是第一次增量备份生成的文件。增量备份需要获取全量备份的to_lsn。如上图to_lsn=18374406。可以看到test2表空间。
2024-05-23 13:48:09
4170
原创 mysql实战——XtraBackup二进制包安装
解压后会有6个目录,bin目录下均是二进制可执行文件。具体原因是因为没有配置环境变量,添加下面内容。2、安装xtrabackup。1、二进制包下载网站。
2024-05-22 17:11:13
532
原创 mysql实战——Mysql8.0高可用之双主+keepalived
1、 采用keepalived作为高可用方案时,两个节点最好都设置成BACKUP模式,避免因为意外情况下相互抢占导致两个节点内写入相同的数据而引发冲突;2、 把两个节点的auto_increment_increment(自增步长)和auto_increment_offset(字增起始值)设置成不同值,其目的是为了避免master节点意外宕机时,可能会有部分binlog未能及时复制到slave上被应用,从而会导致slave新写入数据的自增值和原master上冲突,因此一开始就错开;
2024-05-22 15:20:28
3141
原创 mysql实战——mysql5.7升级到mysql8.0
楼主只改了for8.0下的配置,别的和mysql5.7相同,还改动了datadir路径和basedir路径。1、上传mysql8.0压缩包到/usr/local目录下。# 最后几个for8.0的参数要格外注意。3、前期配置修改完了,下面执行升级程序。# 修改mysql服务启动项配置。2、更改配置文件my.cnf。# 修改basedir目录。
2024-05-21 12:20:39
3273
原创 mysql实战——mysql5.7保姆级安装教程
输出以上即初始化成功,记住最后一行的密码这是mysql生成的随机密码,等会登录需要。按下面内容粘贴复制,如果你的安装路径不同,就把basedir和datadir修改了。# 默认使用“mysql_native_password”插件认证。(1)运行以下命令,添加mysql软连接并重启mysql服务。# 设置mysql客户端连接服务端时默认使用的端口。# 设置mysql数据库的数据的存放目录。# 创建新表时将使用的默认存储引擎。# 设置mysql客户端默认字符集。# 设置mysql的安装目录。
2024-05-21 10:53:22
551
原创 mysql实战——异步复制(双主双从)
主库1 192.168.1.76主库2 192.168.1.78从库1 192.168.1.71从库2 192.168.1.72搭建前要确定好四台主机uuid号是否相同,请改成互不相同。
2024-05-20 11:52:55
1049
1
原创 Got fatal error 1236 from master when reading data from binary log
主从复制报错error1234解决方法:主库运行flush logs;从库运行stop slave;两个进程启动成功。
2024-05-17 15:28:22
655
原创 mysql实战——异步复制(gtid复制)
报错原因:GTID_MODE=off,应该为on,配置文件没有重新启动发挥作用。之后我重启了下机器,让/etc/my.cnf文件配置成功。都是用的 caching_sha2_password这种。重启后发现io进程:connecting,还没开启成功。主库 192.168.1.76。从库 192.168.1.78。最后发现是因为现在的mysql8.0的。可以发现从库运行语句报错。解决方法:主从库依次运行。发现io进程没有开启。2、主库创建复制用户。
2024-05-17 15:22:54
433
原创 MySQL实战——主从异步复制搭建(一主一从)
有可能你的备库的操作系统是主库备份过去的,所以uuid相同,这种情况只要改变其中一个库的uuid即可。可以在从库验证下创建的复制用户后是否有效以及主从库之间的网络是否流畅。主库和从库的my.cnf中的server-id设置的相同了,改正即可。主库 192.168.1.76。从库 192.168.1.77。若是相同,改变其中一个库的uuid。注意:改变之后一定要重启服务。至此主从异步复制搭建完成。(1)判断uuid是否相同。2、在主库创建复制用户。5、查看主从复制的状态。
2024-05-16 18:03:09
415
1
原创 SQL优化的步骤和方法
这几天看到群里高手发的sql优化的基本思路步骤:增加过滤条件,创建合适索引,简化复杂sql,减少io扫描。下面将对sql优化的步骤和方法进行介绍。
2024-03-08 09:24:31
1316
原创 undo日志详解
上一节详细的说了redo日志,redo日志的功能就是把增删改操作都记录着,如果断电导致内存中的脏页丢失,可以根据磁盘中的redo日志文件进行恢复。redo日志被设计出来是为了保证数据库的持久性,undo日志设计出来是为了保证数据库的原子性。一个事务开启之后,做增删改操作,会记录redo日志,但是如果后悔了进行回滚,redo日志是做不到回退的,这时候就需要undo日志了。总结:记住一句话,redo日志保证了数据库的持久性,undo日志保证了数据库的原子性。
2024-02-22 10:40:59
1749
原创 数据库事务id
事务可以分为只读事务和读写事务。~start transaction read only语句开启只读事务只读事务不可以对普通的表进行增删改,但是可以对临时表做增删改操作。~start transaction read write语句开启读写事务,或者使用begin、start transaction语句默认开启读写事务。
2024-02-21 09:41:26
637
原创 redo日志——log buffer与磁盘的交互详解
上面没有介绍怎么确定哪些redo日志可以被覆盖,log buffer刷盘机制有一个就是脏页刷入之前,先将redo日志刷入磁盘,这些就没有必要刷入了,但是伴随着别的机制所以磁盘中可能存在脏页还没有刷入的redo日志,这些是有用的,不能被覆盖,而恢复就是从这个点之后进行顺序恢复,注意这个点之后的redo日志对应的脏页可能被刷入磁盘了,这点我们不能确定,不确定就全刷,mysql也有机制判断是否被刷入。终点我们想当然的觉得终点很容易确定,就是最后的block,但是计算机怎么确定是最后的block呢?
2024-02-20 16:25:57
1335
原创 redo日志详细介绍
前面介绍了buffer pool,我们知道内存中的脏页并不是产生就被立即刷入磁盘,而是达到某些条件才会刷入。那这就会导致一个问题,内存中还有脏页这时候断电,重启会导致内存丢失脏页,这样之前的操作就白做了,为了解决这个问题引入redo日志,目的就是记录所有操作,故障后通过redo日志进行恢复buffer pool中的脏页。对于悲观插⼊来说,由于需要新申请数据⻚,还需要改动⼀些系统⻚⾯,⽐⽅说要修改各种段、区的统计信息信息,各种链表的统计信息。总共需要记录的redo⽇志有⼆、三⼗条。
2024-02-19 15:13:45
1386
原创 buffer pool和查询缓存的区别
查询缓存和BufferPool完全是两个东西。查询缓存位于server层,BufferPool是Innodb数据引擎中的核心组件。
2024-01-23 17:41:00
641
原创 InnoDB的Buffer Pool
最近最少使用的原则去淘汰缓存页。当我们需要访问某个页的时候,LRU链表发生了这个情况:1)如果该页不在buffer pool,在把该页从磁盘加载到buffer pool中的缓存页时,就把该缓存页对应的控制块作为节点塞到LRU链表的头部。2)如果该页已经在buffer pool中,直接把控制块移动到头部。上面的两种情况反映出了两个问题:1)加载到buffer pool的页不一定被用到2)用的少的页面把热点页面挤掉。1)InnoDB想操作系统申请一段连续的内存空间作为缓存。
2024-01-22 22:26:56
1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人