MySql主从复制Laravel和TP读写分离配置

需要用到2个数据库一主一从

首先配置主数据库:

找到my.cnf

进入

[mysqld]下添加

log-bin=mysql-bin

server-id不能和从库一样

如下: 

 

登录Linux系统后,切换到MySQL安装目录。如果是宝塔cd ../www/server/mysql

登录MySQL服务:mysql -u root -p 回车输入密码在回车

创建一个用于从库访问主库的账号

创建一个账号,拥有所有权限

GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave' WITH GRANT OPTION;

 刷新权限

flush privileges;

重点:在这里重启两台mysql服务器~

查看主服务器的状态

show master status

如下: 

 

 记录两个值

切换从库

执行下列sql语句,链接主库

CHANGE MASTER TO 
master_host='主库IP',
master_port=3306,
master_user='slave',
master_password='slave',
master_log_file='主库状态中的记录值',
master_log_pos=主库状态中的记录值;

如果无法执行以上sql语句,可能是你之前配置过,在所有操作之前,一定要执行一下 stop slave 停止从库

启动从库

start slave;

查看从库状态

show slave status\G

 效果如下

结果之中,以上两个值必须为 YES,否则配置就是失败的

到目前为止,我们主从就配好了! 接下来我们来测试一下!

既然成功了 就需要读写分离

TP框架中的配置

tp6 主从复制database配置

<?php
 
return [
    // 默认使用的数据库连接配置
    'default'         => env('database.driver', 'mysql'),
 
    // 自定义时间查询规则
    'time_query_rule' => [],
 
    // 自动写入时间戳字段
    // true为自动识别类型 false关闭
    // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
    'auto_timestamp'  => true,
 
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
 
    // 时间字段配置 配置格式:create_time,update_time
    'datetime_field'  => '',
 
    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
            'type'            => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => env('database.hostname', '主库IP,从库IP'),
            // 数据库名
            'database'        => env('database.database', '库名,库名'),
            // 用户名
            'username'        => env('database.username', '主库用户名,从库库用户名'),
            // 密码
            'password'        => env('database.password', '主库密码,从库库密码'),
            // 端口
            'hostport'        => env('database.hostport', '主库端口号,从库端口号'),
            // 数据库连接参数
            'params'          => [],
            // 数据库编码默认采用utf8
            'charset'         => env('database.charset', 'utf8'),
            // 数据库表前缀
            'prefix'          => env('database.prefix', ''),
 
            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy'          => 1,
            // 数据库读写是否分离 主从式有效
            'rw_separate'     => true,
            // 读写分离后 主服务器数量
            'master_num'      => 1,
            // 指定从服务器序号
            'slave_no'        => '2',
            // 是否严格检查字段是否存在
            'fields_strict'   => true,
            // 是否需要断线重连
            'break_reconnect' => false,
            // 监听SQL
            'trigger_sql'     => env('app_debug', true),
            // 开启字段缓存
            'fields_cache'    => false,
        ],
 
        // 更多的数据库配置信息
    ],
];

Laravel读写分离

laravel 主从复制database配置中

'mysql' => [
            //从库
            'read' => [
                [
                    'host' => '从库IP',
                    'username'=>'账户',
                    'password'=>'密码',
                ]
            ],
            //主库
            'write' => [
                'host' => '主库IP',
                'username'=>'账户',
                'password'=>'密码',
            ],
            'sticky'    => true,
            'driver'    => 'mysql',
            'database'  => 'renting',
            'charset'   => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix'    => '',
        ],

*不要忽略细节 细节决定成败

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值