MySQL主从复制

MySQL 主从复制

MySQL主从负载至少需要2台数据库服务器,其中一台为master库,另外一台为slave库,MySQL主从数据同步时一个异步复制的过程,要实现负载首先需要在master 上开启bin-log 日志功能,bin-log日志用于记录在master 库中执行的增、删、修改、更新操作的SQL语句,真个过程需要开启3个现成,分别是master开启IO 线程,slave开启IO线程和SQL 线程,具体主从同步原理如下:

  • slave上执行slave start,slave IO 线程会通过在master 创建的授权用户连接上master,并请求master从指定的文件和位置之后发送bin-log 日志内容;
  • master接收到来着slave IO 线程的请求后,master IO 线程根据slave发送的指定bin-log日志position 点之后的内容,然后返回给slave 的IO 线程
  • 返回的信息中除了bin-log 日志内容外,还有master 最新的bin-log 文件名以及在bin-log中下一个指定更新position 点
  • slave IO线程接收到信息后,将接收到的日志内容依次添加到sloave段的relay-log文件的最末端,并将读取到的master 端的bin-log的文件名和position 点记录到master.info 文件中,一遍在下次读取的时候能告知master从相应的bin-log文件名及最后一个position 点开始发起请求
  • slave SQL 线程检测到relay-log中内容有更新,会立刻解析relay-log 日志中的内容,将解析后的SQL 语句在slave 里执行,执行成功后slave 库与master库数据保持一致

主从复制实现过程:

一、准备2台服务器:
master: 172.17.27.127
slave:172.17.191.75
MySQL 8.0 版本
二、配置主库(master):
1.修改 MySQL 配置文件:/etc/my.cnf

[mysqld]
# 唯一服务器ID
server-id = 1

# 开启 binlog(必须!)
log-bin = mysql-bin

# MySQL 8.0 推荐设置
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON

  1. 重启mysql
systemctl restart  mysql

重启mysql 服务时如果报下面的错误,说明没有创建mysql 用户,创建一下mysql用户就可以

[root@master ~]# journalctl -xe
Dec 13 14:13:36 nodea100-2 systemd[40128]: Failed at step USER spawning /usr/bin/mysqld_pre_systemd: No such process
-- Subject: Process /usr/bin/mysqld_pre_systemd could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- The process /usr/bin/mysqld_pre_systemd could not be executed and failed.
--
-- The error number returned by this process is 3.
Dec 13 14:13:36 nodea100-2 systemd[1]: mysqld.service: control process exited, code=exited status=217
Dec 13 14:13:36 nodea100-2 systemd[1]: Failed to start MySQL Server.
-- Subject: Unit mysqld.service has failed
......

[root@master ~]# groupadd -g 27 mysql
[root@master ~]# useradd -u 27 -g mysql -s /sbin/nologin -d /var/lib/mysql mysql
[root@master ~]# chown -R mysql:mysql /var/lib/mysql
[root@master ~]# systemctl restart mysqld


  1. 创建复制专用用户
-- 登录 MySQL
mysql -u root -p

-- 创建用户(允许从 172.17.191.75 连接)
CREATE USER 'repl'@'172.17.191.75' IDENTIFIED BY '-----';

-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.17.191.75';

-- 刷新权限
FLUSH PRIVILEGES;

  1. 记录当前 bin-log 位置:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值