首先从官网下载源码进行安装:
1 | wget http://download.redis.io/releases/redis-3.2.1.tar.gz |
默认安装到/usr/local/bin
目录。
首先从官网下载源码进行安装:
1 | wget http://download.redis.io/releases/redis-3.2.1.tar.gz |
默认安装到/usr/local/bin
目录。
有2种数据类型,一种重复率高、一种重复率低,选择这2种类型哪个建立索引好?为什么?
之前确实没考虑过这个问题,但觉得既然是使用空间换时间,数据结构本身重复率那么高索引的作用应该就不大了吧。
后来结束到家查看资料后,发现这个名词叫做”离散率”。对于DBA这个问题应该是最最基础的了。
阅读全文把博客服务器搬到香港之后,发现这个供应商的服务器经常自动重启,不过mysql、nginx都设定了开机自启动,所以也就没当事。结果今天出了大问题:服务器ip可以ping的通,但博客就是无法访问,登录到服务器一看,我擦——整个数据盘不见了!由于把网站放在了/home目录下,而现在home目录空荡荡的啥也没有。
阅读全文今天升级系统后,发现postgresql无法启动了,报错/etc/ssl/private/ssl-cert-snakeoil.key: Permission denied
。
一看就是权限问题,首先看这个文件是什么权限:
1 | # ls -al /etc/ssl/private/ssl-cert-snakeoil.key |
既然说是权限问题,那么看看postgres用户在不在ssl-cert组中:
1 | # groups postgres |
组用户是有可读权限的啊?怎么报错呢?那么把权限改成666试试:
1 | # chmod 666 ssl-cert-snakeoil.key |
结果报错信息变成了
1 | 2015-05-27 09:16:30 HKT FATAL: private key file "server.key" has group or world access |
简单说就是这个文件拥有者必须是数据库用户或root,而且组用户没有写权限,其他用户无权访问。
那么就只能先把权限改回640,并且把用户修改成postgres了:
1 | # chmod 640 ssl-cert-snakeoil.key |
再起动服务,保错信息变成:
1 | FATAL: could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem": Permission denied |
同理把pem文件拥有者变成postgres即可,之后就可以成功启动服务了。
某些情况下需要向数据库中插入媒体文件,mysql中插入媒体文件时,数据字段应该是blob。而对于postgresql,则是bytea。这里注意的是打开文件时候应该用”rb wb”这种模式,示例如下:
1 | import psycopg2 |
这里需要注意使用Binary进行转换后才能成功插入到数据库中。
想把mysql数据迁移到postgresql,推荐使用py-mysql2pgsql,使用pip安装即可。
安装完毕后执行py-mysql2pgsql后会在当前目录生成一个yaml文件,根据实际情况修改,例如:
1 | # if a socket is specified we will use that |
至于下面的只迁移某些表、不迁移某些表、只要结构、只要数据等根据自己需要修改。
修改完毕后保存,再执行py-mysql2pgsql -v 开始自动迁移。
数据库9.3.5,系统fedora20,不同系统操作略有不同。
使用yum 命令安装即可:sudo yum install postgresql,postgresql-server
安装完毕后系统中会创建一个postgres的用户,切换到这个用户后进行数据库的初始化:
1 | initdb --encoding=UTF-8 --no-locale -D /var/lib/pgsql/data/ |
或者使用postgresql-setup initdb 命令。
紧接着启动服务:pg_ctl -D /var/lib/pgsql/data start
为了方便下面的操作,我重置了postgres用户的密码:
1 | sudo passwd -d postgres |
再把postgres用户赋予执行sudo的权限,设置开机自启动:
1 | systemctl start postgresql.service |
这时使用psql命令就可以进入数据库终端了。
进入数据库终端之前我们先建立一个数据库:createdb mytest
不过每次想查看数据库都需要切换用户比较麻烦,所以再建立一个和平时使用的账户同名的角色:
1 | CREATE ROLE myuser WITH SUPERUSER LOGIN PASSWORD '123456'; |
这里我为了省事直接把这个用户设置为超级用户,其他细节看官方文档即可。
然后切换回平时使用的账户进行链接即可:psql -h localhost -U myuser mytest
(注意大U)
如果上面创建角色时是超级用户或者有相应的权限,也可以直接执行createdb命令创建数据库。
两个用到的配置文件位置:
1 | _/var/lib/pgsql/data/postgresql.conf_ 端口及IP配置 |
这样初期准备工作就做好了。
君以国士待我,我必以国士报君。
野生程序猿