MySQL配置主从架构

11 篇文章 0 订阅
2 篇文章 0 订阅

首先主服务器与从服务器都需先安装MySQL, 安装可以参考这篇文章: 源码安装MySQL8.0

主从复制主要用途
  1. 读写分离, 降低单机的压力
  2. 数据实时备份, 当系统中某个节点故障, 可以方便故障切换
  3. 高可用
  4. 架构扩展
主从复制原理
  1. 主节点将所有写的操作( insert, create, delete, update, alter)记录到binlog中, 当从节点连接主节点, 主节点会创建一个log dump线程, 用于发送binlog内容
  2. 从节点将主节点的binlog日志复制到中继日志, 即当从节点运行 ‘start slave’, 会立即创建一个IO线程, 向主节点发送一个更新binlog请求, 以及接收主节点binlog dump内容, 保存到中继日志
  3. 从节点中的SQL线程, 读取中继日志内容, 解析成具体的操作并执行, 最终保持主从数据一致
主从复制配置
配置之前, 确保从数据库的数据与主数据库的数据一致
主服务器配置
  1. 开启binlog日志, 可以在配置文件中添加
    log-bin=mysql-bin; server-id=1; // 可以用IP的最后一段来设置, 但是各个节点不要重复
    配置其他参数:
    replicate-do-table: 只复制指定的表, 在从库使用
    replicate-ignore-table: 不复制指定的表, 在从库使用
    replicate-do-db: 只复制指定的库, 在从库使用
    replicate-ignore-db: 不复制指定的库, 在从库使用
# 进入目录
cd /etc/my.cnf
# 添加配置
log-bin=mysql-bin
server-id=117

可以进入mysql查看是否开启

show variables like '%log_bin%';
  1. 创建一个用于主从复制的用户并授权, 一主一从或一主多从
--选中数据库
use mysql;
--创建用户, 可以指定允许访问的IP或者所有%
create user 'username1'@'IP1' identified with mysql_native_password by 'password1'; --用户1, 对应从节点1
create user 'username2'@'IP2' identified with mysql_native_password by 'password2'; --用户2, 对应从节点2
--授权从节点的所有数据库的所有表
grant replication slave on *.* to 'username1'@'IP1'; --从节点1
grant replication slave on *.* to 'username2'@'IP2'; --从节点2
--刷新权限
flush privileges;
从服务器配置
  1. 建议开启binlog
  2. 配置
change master to master_host='主服务器IP',master_port=端口号,master_user='username',master_password='password',master_log_file='指定主服务器的binlog日志',master_log_pos=日志节点;
# 登录主服务器mysql后, 并查看主服务器的binlog日志, 获取日志和日志节点
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      156 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 执行, 从节点1, 用户名及密码与前面设置的用户对应
change master to master_host='主服务器IP',master_port=3306,master_user='username1',master_password='password1',master_log_file='mysql-bin.000001',master_log_pos=156;
# 执行, 从节点2, 用户名及密码与前面设置的用户对应
change master to master_host='主服务器IP',master_port=3306,master_user='username2',master_password='password2',master_log_file='mysql-bin.000001',master_log_pos=156;
  1. 开启
start slave;
  1. 查看状态
show slave status\G;
# 代表配置成功
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

若出现Slave_IO_Running:Connecting ; Slave_SQL_Running:Yes
查看错误信息:
Last_IO_Error: error connecting to master ‘slave@120.55.85.68:3306’ - retry-time: 60 retries: 1 message: Host ‘39.100.119.51’ is not allowed to connect to this MySQL server
权限有误, 需重新创建用户并授权

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码der

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值