MySQL主从复制

MySQL主从复制

1. 概念

MySQL主从复制是指一种数据库复制机制,其中一个数据库实例(主库)将其数据更改复制到一个或多个其他数据库实例(从库)。这是一种常见的数据库架构,用于提高可用性和性能。

  • 主库:数据的写入点,处理所有的写入请求。

  • 从库:只从主库接收数据的复制,不处理写入请求,通常用于负载平衡和数据备份。

2. 原理

step1二进制日志(Bin_Log)

主库将所有的写入操作(如 INSERT、UPDATE、DELETE)记录到二进制日志。

step2复制线程(I/O线程)

从库通过网络连接到主库,读取主库的二进制日志,并将这些操作应用到自己的数据库中。

step3执行线程(SQL线程)

从库解析和执行来自主库的二进制日志内容,进行数据同步。

3. 配置replication

3.1 准备环境

主从库两台服务器均需做好以下准备:

1、关闭防火墙和selinux

2、固定IP

3、修改主机名并配置主机名解析

hostnamectl set-hostname master         #主库master
hostnamectl set-hostname slave          #从库slave

cat >>/etc/hosts<<EOF
192.168.22.123  master
192.168.22.124  slave
EOF
#两台服务器均需配置主机名解析

4、安装MySQL实例

3.2 配置主库

step1开启二进制日志

cat >>/etc/my.cnf<<EOF
log_bin=/var/lib/mysql/mysql-binlog
server_id=1
EOF
systemctl restart mysqld

step2授权账号

登录MySQL数据库
grant replication slave on *.* to 'account'@'%' identified by "password";
flush privileges;
#account    账号名称,可以自行设置,但在从库必须配置对应的账号名称
#password   账号密码
#%          所有IP,可以指定从库IP或所在网段192.168.22.%

step3查看二进制文件名称及位置点

mysql> show master status;
+---------------------+----------+--------------+------------------+-------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |Executed_Gtid|
+---------------------+----------+--------------+------------------+-------------+
| mysql-binlog.000004 |      154 |              |                  |             |
+---------------------+----------+--------------+------------------+-------------+

3.2 配置从库

step1修改配置文件

cat >>/etc/my.cnf<<EOF
server_id=2
EOF
systemctl restart mysqld
#从库的server_id一定不能与主库相等,一主多从时每个库的server_id也要区分开来

step2配置主从

登录MySQL数据库
CHANGE MASTER TO
  MASTER_HOST='master',
  MASTER_USER='account',
  MASTER_PASSWORD='password',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-binlog.000004',
  MASTER_LOG_POS=154,
  MASTER_CONNECT_RETRY=10;
#account和password写在主库授权的账号和密码
#mysql-binlog.000004和154写在主库查看到的二进制文件名称及位置点

step3启动并查看状态

mysql>start slave;              #启动主从复制
mysql> show slave status\G      #查看状态
​
#主要关注以下内容,IO线程和SQL线程运行状态yes,并且无错误码时,代表主从复制配置成功
Slave_IO_Running: Yes       IO线程运行状态
Slave_SQL_Running: Yes      SQL线程运行状态
Last_Errno: 0               最后的错误码
Last_Error:                 上次错误
Seconds_Behind_Master: 0    主从复制延迟时间
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
从服务器已读取所有中继日志;正在等待更多更新

4. 生产环境配置主从复制

当主库正在运行并且已经有数据时,如何配置主从。

step1主库授权账号,配置主机名解析,修改配置文件,kill -1重新加载配置文件

step2主库开启读锁,停止写入数据,可配置消息队列RabbitMQApache KafkaRedisActiveMQ等暂时储存写入信息。

step3使用逻辑备份或物理备份备份主库已有的数据,并将其加载到从库中,让主库与从库内容保持一致。

step4从库配置开启主从复制,关闭主库读锁,开始同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值