最近公司有个异地多机房数据同步需求,mysql原生支持双主同步,所以只能另寻他法,于是找到了Percona XtraDB Cluster。这个可以理解为给Mysql打了个补丁,以便支持多主同步。
测试环境:centos 6.5
IP分配:
192.168.0.154(DB) 192.168.0.152(DB) 192.168.0.153(DB) 192.
某些情况下需要向数据库中插入媒体文件,mysql中插入媒体文件时,数据字段应该是blob。而对于postgresql,则是bytea。这里注意的是打开文件时候应该用"rb wb"这种模式,示例如下:
import psycopg2
#省略部分代码...
def ins_pictures(self, name, position, explain, href, uploaddate, img, show_id):
'''向pictures表中插入数据(显示位置,说明,上传时间,图片的2进制)
'''
strs = r"insert into pictures(p_name,p_position,p_explain,p_href,p_uploaddate,p_show,p_img,show_id) values (%(name)s,%(position)s,%(explain)s,%(href)s,%(uploaddate)s,'0',%(img)s,%(show_id)s)"
self.
想把mysql数据迁移到postgresql,推荐使用py-mysql2pgsql,使用pip安装即可。
安装完毕后执行py-mysql2pgsql后会在当前目录生成一个yaml文件,根据实际情况修改,例如:
# if a socket is specified we will use that
# if tcp is chosen you can use compression
mysql:
hostname: localhost
port: 3306
socket: /var/lib/mysql/mysql.
数据库9.3.5,系统fedora20,不同系统操作略有不同。
使用yum 命令安装即可:sudo yum install postgresql,postgresql-server
安装完毕后系统中会创建一个postgres的用户,切换到这个用户后进行数据库的初始化:
initdb --encoding=UTF-8 --no-locale -D /var/lib/pgsql/data/
或者使用postgresql-setup initdb 命令。
关于介绍以及缺点等网上介绍很多,这里记录一下我遇到的问题:
首先就是使用yum install安装后的mongodb无法设定开机启动。其次,即使修改了/etc/monggdb.conf文件的相关路径,运行时还必须手动指定dbpath参数才可运行。
于是按照官方指南说明的方法,添加了mongodb的源,安装yum install mongo-10gen mongo-10gen-server之后chkconfig mongod on才能设定成为开机启动。不过使用service mongod start启动、停止、重起服务会出现假死。但是不影响使用。
今天把django从1.5.5升级到了1.6.2,结果使用mysql-python查询数据库时候就报了这个错误:“not all arguments converted during string formatting”
貌似这个问题应该和django没什么关系,正好今天就看看mysql-python的源码吧。想看如何解决的请直接跳到最后。
查询部分简化后如下:
posistion = "top"
order = r"select id,p_name,p_explain,p_href from pictures where p_position = %s and p_show = 1 order by -id"
self.