前几天为了上读写分离功能, MySQL5.1直接升到5.6  (而且5.1也不维护了)。。
 
新增的只读实例 找了半天才在管理控制台看到  常规实例点开+号,展开才能看到。 不是类型筛选(筛选只有一个选项常规实例)
 
自定义了django db router:
import random
class MasterSlaveRouter(object):
    
    def db_for_read(self, model, **hints):
        return random.choice(['slave1', 'slave2', 'slave3'])
    def db_for_write(self, model, **hints):
        return 'default'
    def allow_relation(self, obj1, obj2, **hints):
        return True
    def allow_syncdb(self, db, model):
        return True
 
settings.py 添加的配置如下:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'xxxxxxx',                      # Or path to database file if using sqlite3.
        'USER': 'xxxxxx',                      # Not used with sqlite3.
        'PASSWORD': 'xxxxxx',                  # Not used with sqlite3.
        'HOST': 'xxxxx.mysql.rds.aliyuncs.com',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
        'OPTIONS': {
            'use_unicode': 'utf-8',
            'init_command': 'SET storage_engine=INNODB',
        }
    },
    'slave1': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'xxxx',                      # Or path to database file if using sqlite3.
        'USER': 'xxxxx',                      # Not used with sqlite3.
        'PASSWORD': 'xxxxxx',                  # Not used with sqlite3.
        'HOST': 'xxxxxxxxx.mysql.rds.aliyuncs.com',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
        'OPTIONS': {
            'use_unicode': 'utf-8',
            'init_command': 'SET storage_engine=INNODB',
        }
    }
}
DATABASE_ROUTERS = ['epub360.db_router.MasterSlaveRouter']
搞定, 这个功能对django版本好像是>=1.2 ,应该都能用吧,还是挺方便的。    python代码贴出来,格式就不对了。复制了还要自己改真心麻烦。
 
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
-------------------------
我们看能不能优化下,@xiaofanqie