Yii2 配置主从库,主从切换

读写分离,主从切换,是基本所有的高可用系统必备的,可以买云服务器多节点自动保证数据主从不同,主主同步等。现在在YII中引入配置

①在config/ind_db.php配置中配置主从数据库

return [
    'class' => 'yii\db\Connection',

    'serverRetryInterval' => 10,//在[[主服务器]]和[[从服务器]]中列出的死服务器的重试间隔(以秒为单位)。
    'slaves' => [ //主库列表  配置单项
        ['dsn' => 'mysql:host=XXXX;port=23367;dbname=XXX',],
    ],
    'slaveConfig' => [ //主库通用配置
        'username' => 'root',
        'password' => 'XXX',
        'attributes' => [
            PDO::ATTR_TIMEOUT => 5
        ]
    ],
    'masters' => [ //从库列表  配置单项
        ['dsn' => 'mysql:host=localhost;port=3306;dbname=XXX'],
    ],
    'masterConfig' => [ //从库通用配置
        'username' => 'root',
        'password' => '123456',
        'attributes' => [
            PDO::ATTR_TIMEOUT => 60
        ]
    ],
    'charset' => 'utf8',
    'tablePrefix' => 'xcxmall_',
];

当然里面可以配置多主多从那些,需要时再配置。

②使用,当然你可以再其中判断库是否可用等的业务逻辑

//查从库
$model = ShareOrder::find()->where(['order_id' => 303130, 'type' => 0])->one();
        $data = [
            'order_id'=>303130,
            'type'=>0,
        ];
       //查主库
        $users = ShareOrder::getDb()->useMaster(function($db) use ($data) {
            /** @var $db \yii\db\Connection */
            return $db->createCommand("SELECT * FROM " . ShareOrder::tableName() . " where `order_id` =:order_id  AND `type`=:type", [
                ':order_id' => $data['order_id'],
                ':type' => $data['type'],
            ])->queryOne(\PDO::FETCH_OBJ);
        });
        print_r($users);die;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值