Tags
- Airchina
- Android
- Anti-Spam
- Bluetooth
- bugs
- ChinaSouthern
- Django
- DNS
- Enterprise
- fastcgi
- Hainanair
- HAM
- HongKong
- InnoDB
- IPTV
- iSCSI
- kubernetes
- large-scale
- lighty
- Linux
- Logging
- Macao
- Meituan
- MM
- MySQL
- nginx
- Oracle
- Outdoor
- Percona
- Photo
- postfix
- Python
- RedHat
- Sentry
- systemd
- Traffic
- Travel
- Virtualization
- xtrabackup
- 信用卡
- 奥运
- 美食
- 规范化
- 软件工程
Meta
Blogroll
Mine
Tag Archives: MySQL
django database router是个好东西
今天给sentry加了MySQL读写分离机制,记录一下: DATABASES里,(sentry的脾气比较怪)保留名为default的配置,写master数据库的参数;新增一个名为slave的配置,使用只读用户名密码,或开启服务器端read only 然后增加一个类,带四个函数: class DatabaseRWSplitRouter(object): def db_for_read(self, model, **hints): return ‘slave’ def db_for_write(self, model, **hints): return ‘default’ def allow_relation(self, model1, model2, **hints): return True def allow_migrate(self, db, app_label, model_name=None, **hints): if db == ‘slave’: return None else: return True … Continue reading
遇到 xtrabackup-1.6.4-313 的 bug 了
在 MySQL replica 的 master 上执行备份,完毕后没能正确检测 master binlog 相关信息,因而没能在输出和信息文件中正确记录。已经报告了bug并回退到 1.6.3-292 版本
xtrabackup_binlog_pos_innodb 和 xtrabackup_binlog_info
用过 xtrabackup 工具的 innobackupex 脚本备份数据的人可能会注意到,–apply-log 处理过的备份数据里有两个文件说明该备份数据对应的 binlog 的文件名和位置。但有时这俩文件说明的位置可能会不同。 经过实验和询问 Percona 公司,结论如下: 1 对于纯 InnoDB 操作,备份出来的数据中上述两个文件的内容是一致的 2 对于 InnoDB 和非事务存储引擎混合操作,xtrabackup_binlog_info 中所示的 position 应该会比 xtrabackup_pos_innodb 所示的数值大。此时应以 xtrabackup_binlog_info 为准;而后者和 apply-log 时 InnoDB recovery log 中显示的内容是一致的,只针对 InnoDB 这部分数据 另外,今天发现 InnoBASE/MySQL/Oracle 公司出品的 MySQL Enterprise Backup(原 … Continue reading
MySQL 备份、版本兼容性二三事
最近几天在筹备多做一个 slave 数据库,所以就用 InnoDB Hot Backup 工具把原来的 slave 库备份了一份,拷贝过来,执行了一段 binlog 之后卡住了,然后发现上述工具对 ARCHIVE 存储引擎的表没有考虑,没把数据文件复制过来。于是改用 Percona 出品的 xtrabackup 工具,其 innobackupex 脚本考虑的比较周全。这样总算搞到一份相对完整的备份。 搞到备份数据之后,我又想尝鲜,于是装了 Percona Server (即 MySQL 的一个增强 fork)的 5.5 版本,结果发现无法操作上述 ARCHIVE 存储引擎的表。查了查 MySQL 5.1 的文档,说从 5.0 到 5.1 之间,ARCHIVE存储引擎变了存储格式,不可能兼容,要求 dump/restore 操作。服了…… 考虑到 … Continue reading
bind + mydns 大容量智能 DNS 的方案简述
大体上就是 bind 上启用 view 功能,然后把请求转发给后端的多个 mydns。不过遇到的问题是,如果用 zone {type “forward”;} 的话,会导致 bind 给出的解析结果里缺少 AA 标志位,而且还会带上 ADDITIONAL SECTION,而这个 ADDITIONAL SECTION 指向的恰恰是 bind 自己,于是有时会造成循环。 怎么让 bind 认同自己事实上的权威地位,成了方案的关键。想了几个小时,终于明白了只有 master 和 slave 才能给出带 AA 标志位的应答。master试过了肯定是不行的,因为必须有 file 参数。后来试了试 slave,竟然只需要 masters 参数即可。 最终方案是两横两纵的: 1 一个域有两个 NS 服务器 … Continue reading
很不幸,又遇到bug了——MySQL replication故障
我就说 RedHat 的软件质量不好,还总有人不信。这次又找到证据了。 RHEL5.4/5.5 里带的 mysql-server 包 # rpm -qi mysql-server Name : mysql-server Relocations: (not relocatable) Version : 5.0.77 Vendor: Red Hat, Inc. Release : 4.el5_4.2 Build Date: Sat 30 Jan 2010 03:11:47 AM CST 存在 replication 时,slave 跟不上 … Continue reading
怒了,mysql真是太过分了,竟然改开发接口
今天编译 Courier-authlib 0.62.2 版本,编译出来都是残废,不支持 MySQL 查询。后来看了 config.log,发现其需要的 mysql_connect 函数在 libmysqlclient 库中找不到。nm 了一下那个库,还真的是没有。 后来到 http://dev.mysql.com 翻文档,说这个函数改成 mysql_real_connect 了。MySQL 真是太过分了,就不知道留个接口给老的代码吗? 这件事也教育我们:没事不要自己编译,浪费时间和精力。
请随手删除无用的文件和设置
今天我们部门把一个数据库迁移到另外一台服务器了,但我仍发现原数据库有很多写入操作,干扰mysql master-slave工作,找了很多遍,还是没找到问题所在。后来直接把旧的库删除了,问题马上就暴露出来了。 回想到前年在aka公司,公司的服务器上有十几个ipip隧道,也不知道指向哪里的;服务器上还有几十个服务的配置文件,也不知道还有用没有。单单为了搞清楚那台服务器是干什么的,就花了我两三天的时间。看来这行业手脚不干净的人还是挺多的。 最后喊一句口号:请随手删除无用的文件和设置,践行规范化系统管理。
忘记看mount –bind导致数据库丢失一例
Ubuntu 8.04 Server 原来MySQL的datadir是/var/lib/mysql/目录。因为/var分区比较小,我在一个LVM卷里创建了和库同名的两个目录,并用mount –bind把它绑在原来的数据目录的库目录上: mount –bind LVM/mysql/db1 /var/lib/mysql/db1 mount –bind LVM/mysql/db2 /var/lib/mysql/db2 某一天,/var/lib/mysql/下保存的InnoDB日志占满了/var分区的所有空间。无奈,我只好把数据库目录整个挪到LVM去。因为设置mount –bind的时间太久,我都忘记这个事了。于是我先删除了LVM/mysql目录(因为这个目录看起来比较旧)然后把/var/lib/mysql目录挪过来。于是,丢失了所有的数据……
感受AppArmor
ubuntu 8.04 server 今天 /var/ 分区装满了,于是把 /var/lib/mysql/ 目录给挪到别处,结果重启动 MySQL 失败。日志显示 mysqld 会尝试创建一个 hostname.lower-test 文件,以确定对 datadir 目录有写权限 我 su 到 mysql 用户,进目录,发现可以创建文件 于是想到可能是安全框架的问题。找了一下 /etc/apparmor.d/usr.sbin.mysqld 文件里写着/usr/sbin/mysqld可以访问的目录和权限。把新的目录加进去,就正常了