MySQL主从复制环境搭建

准备工作

虚拟机:ubuntu 20.04

MySQL:虚拟机和本地各安装一台MySQL5.7

主从复制原理

主从复制的流程:两个日志(binlog二进制日志和relay log日志)和三个线程(master的一个线程和slave的二个线程)

  1. 主库的更新操作写入binlog二进制日志中,由binlog转储线程将二进制日志的内容发送到从服务器。
  2. slave从服务器执行start slave命令,创建一个IO线程和一个SQL线程。
  3. IO线程接收master的binary log并复制到中继日志中,SQL线程从中继日志中读取事件,并重放其中的事件更新slave从服务器中的数据,使其与master的数据一致。
  4. 中继日志通常会位于OS缓存中,只要该线程与I/O线程保持一致,中继日志的开销会很小。

主从复制采取的是半同步复制策略,事务线程不用等待所有的从库复制成功响应,只要一部分复制成功响应回来就行,比如一主二从的集群,只要数据成功复制到任意一个从库上,主库的事务线程就可以返回给客户端。即使出现主库宕机,至少还有一个从库有最新的数据,不存在数据丢失的风险。

主从复制配置

虚拟机Linux环境上的MySQL作为主服务器,本地windows环境的MySQL作为从服务器。

查看主从服务器的IP地址

在linux命令行输入ifconfig,记录IP地址,例如192.168.18.131

在windows命令行输入ipconfig,记录VMware Network Adapter VMnet8对应的IP地址,例如:192.168.18.1。

虚拟机是从VMware Network Adapter VMnet8对应的IP地址接收对应的数据的

master配置:

  1. 开启二进制日志

    打开my.cnf配置文件:

    1
    # sudo vim /etc/mysql/my.cnf

    添加配置项:

    1
    2
    3
    4
    5
    [mysqld]
    server-id=1 # 全局唯一的server-id
    expire_logs_days=7 # 过期时间
    log-bin=mysql-bin # logbin日志名
    bind-address=0.0.0.0 #允许来自任意地址的连接

    重启MySQL:

    1
    # sudo service mysql restart
  2. 创建一个用于主从通信用的账号

    1
    2
    3
    create user 'mslave'@'192.168.18.1' identified by '12345@mysql';
    grant replication slave on *.* to 'mslave'@'192.168.18.1' identified by '12345@mysql';
    flush privileges;
  3. 查看mslave用户是否创建成功

    1
    2
    use mysql;
    select user,host from user;
  4. 获取binlog的日志文件名和position

    1
    # show master status;

slave配置:

  1. 配置全局唯一的server-id

    • 在MySQL配置文件my.ini中修改server-id为2
    • 重启mysql57服务
  2. 使用master创建的账户读取binlog同步数据

    1
    2
    3
    4
    5
    6
    CHANGE MASTER TO MASTER_HOST='192.168.18.131',
    MASTER_PORT=3306,
    MASTER_USER='mslave',
    MASTER_PASSWORD='12345@mysql',
    MASTER_LOG_FILE='mysql-bin.000002',
    MASTER_LOG_POS=482;
  3. 开启主从复制start slave

  4. show slave status\G命令查看主从复制状态,确保显示的内容中没有error出现;

  5. show processlist查看master和salve相关线程的运行状态

此时,在主服务器创建一个新的数据库,从服务器就能实时同步查询到了。

注意配置细节,在输入命令时,不要在密码后面误打空格造成连接失败。

参考文章

  • 施磊. 后台开发MySQL技术

MySQL主从复制环境搭建
http://zhcan.online/MySQL主从复制环境搭建/
作者
ZHCANO
发布于
2024年3月24日
许可协议