Linux宝塔Mysql读写分离配置,两台服务器,服务器存在多个库

Linux宝塔Mysql读写分离配置,两台服务器,服务器存在多个库

一、主库操作
#登录数据库,用root登录方便,用其他账号会提示权限不足,需要登录root给予权限
mysql -u root -p
密码

#创建一个账号,供从库用该账号登录主库('%'不用改,改了从库会登录不上)
grant replication slave on *.* to 'database_slave'@'%' identified by 'databasepwd';

#这个命令可以查看到服务器所有的数据库账号密码,包括你新增的,正常操作的话,不用执行这个命令
select user,host from mysql.user;

#查看主库的状态,这里是为了看主库的日志文件及从文件哪行开始读
#图中的file、Position复制出来,配置从库会用到
show master status;

在这里插入图片描述

#如上图就对了,如果出现下图,说明你主库没有开log-bin日志
在这里插入图片描述

#查看日志开启状态

show variables like '%log_bin%';

在这里插入图片描述

#如果你也是宝塔,找到软件商店->MySQL->设置->配置修改,打开注释、或者添加
log-bin=mysql-bin #启用二进制日志
server-id=1 #这个server-id 也可能需要修改,要保证主库、从库server-id不同

在这里插入图片描述

#如果是宝塔,每次改完配置需要重启MySQL,重载配置文件没有用,重启后还执行show master status,应该就对了

二、从库操作
#登录数据库,用root登录方便,用其他账号会提示权限不足,需要登录root给予权限
mysql -u root -p
密码

#停止slave服务
stop slave;

#Slave设置参数,主库host,主库上面新增的账号、密码,主库log-bin文件名,从日志哪行开始复制
Change master to master_host='110.242.68.4',master_user='database_slave',master_password='databasepwd',master_log_file='mysql-bin.000002',master_log_pos=21568709;

#启动slave服务
start slave;

#Slave服务状态查看
#图中 Slave_IO_Running: Yes,  Slave_SQL_Running: Yes,都为Yes才是正常了
show slave status\G

在这里插入图片描述

三、一些报错示例

1、登录不上主库
error connecting to master ‘database_slave@110.242.68.4:3306’ - retry-time: 60 retries: 1

(1)可能存在的问题,主库防火墙没关,关闭它
firewall-cmd --state
systemctl stop firewalld.service

(2)也可能是你在主库创建用户的时候,grant replication slave on . to ‘database_slave’@‘%’ identified by ‘databasepwd’;这里不是’%',也会登录不上,那就去主库从新添加用户

2、如果你是主库上存在多个库,你发现Last_SQL_Error:中出现了你不需要复制的库,去修改从库配置文件,在[mysqld]下面添加
#主从复制指定复制的主库库
replicate_do_db = supplier_cbecbas
#跳过所有错误 根据自身情况判断要不要开启
#slave-skip-errors=all
#跳过指定error no类型的错误 根据自身情况判断要不要开启
#slave-skip-errors=1062,1053,1146

3、每次改完配置记得重启MySQL,然后
stop slave; //停止从库复制
Change master to master_host=‘110.242.68.4’,master_user=‘database_slave’,master_password=‘databasepwd’,master_log_file=‘mysql-bin.000002’,master_log_pos=21568709;//如果你担心漏复制了一些sql,可以通过配置master_log_file、master_log_pos来更改复制的起始位置,重新执行一遍
start slave; //启动从库复制
show slave status\G //查看主从复制状态

### 如何在宝塔面板中设置MySQL读写分离 #### 配置环境准备 为了实现 MySQL读写分离,在 Linux CentOS7 上需预先完成如下组件的部署:Mysql5.7、php8.2 和 Nginx1.22.1。确保主服务器 IP 地址为 192.168.128.132 已经正确配置并运行着上述软件版本[^1]。 #### 主从复制基础架构搭建 创建用于连接到 Slave 数据实例所需的账户,这一步骤对于建立安全可靠的主从关系至关重要。通过此操作可以赋予特定权限给 slave 账号以便于数据同步过程顺利进行: ```sql CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES; ``` #### 设置主数据(Master) 编辑 Master 数据配置文件 `/etc/my.cnf` 或者位于其他路径下的相应配置文件来增加或调整以下参数以支持二进制日志记录功能以及唯一 server-id 属性: ```ini server-id = 1 log-bin = master-log binlog-format = ROW expire_logs_days = 10 max_binlog_size = 100M ``` 重启 MySQL 服务使更改生效,并锁定所有表防止任何更新活动干扰初始状态的数据传输工作;随后执行 `SHOW MASTER STATUS;` 获取当前 binlog 文件名及其位置信息作为后续配置依据之一。 #### 设置从数据(Slave) 同样地修改 Slave 端 my.cnf 中关于 server-id 参数设定确保其不同于Master端且在整个集群内保持独一无二性之后启动Slave进程加载之前获得的位置信息继续追加增量变更直至两者达到一致的状态为止。具体命令如下所示: ```sql CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position; START SLAVE; ``` 确认 Slave 正常运作可通过查询 `SHOW SLAVE STATUS\G;` 来验证 I/O Thread 及 SQL Thread 是否均为 Yes 表明成功建立了稳定有效的主从链路。 #### 实现读写分离逻辑处理机制 借助 ThinkPHP6 框架内置的支持多数据连接特性轻松达成业务层面上针对不同类型的SQL语句自动路由至相应的节点上去执行从而实现了负载均衡的效果同时也提高了系统的高可用性和性能表现。下面是一个简单的例子展示怎样定义多个数据源并在模型类里指定默认使用的DSN链接字符串: ```php // application/database.php return [ // 默认使用的数据连接配置 'default' => env('database.default', 'mysql_master'), // 多个数据配置 'connections' => [ 'mysql_master' => [ // ... 主配置 ... ], 'mysql_slave_1' => [ // ... 从配置 ... ] ], // 更多功能选项... ]; // Model 类中的使用方式 namespace app\model; use think\Model; class Example extends Model { protected $connection = 'mysql_slave_1'; // 使用从 } ``` 当应用程序访问该模型时,默认情况下会向名为 "mysql_slave_1" 的从属数据发出请求,而涉及到了 INSERT/UPDATE/DELETE 这样的写入型事务则应该被导向指向了 "mysql_master" 的主控方去完成实际的操作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值