MySQL 主从复制 实例讲解
113

MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。
  • 在本文中我们主要介绍 mysql 的主从复制,读写分离在以后的文章中会涉及到

实现MySQL主从复制需要进行的配置
  • 主服务器:
    • 开启二进制日志
    • 配置唯一的 server-id
    • 获得master二进制日志文件名及位置
    • 创建一个用于slave和master通信的用户账号
  • 从服务器:
    • 配置唯一的 server-id
    • 使用master分配的用户账号读取master二进制日志
    • 启用slave服务

  • 环境准备
    • 准备好两台云主机或者虚拟机
      • 我准备的为 京东云腾讯云 的两台主机 ,系统为centos 7.4
    • 主从数据库的版本最好可以一致
      • 本实例讲解中为 Mysql 5.7.22
    • 主从数据库的内容最好可以一致
      • 本次实例讲解中,Mysql 数据库都为空

  • 主数据库 master 配置

    • 修改 my.cnf 文件 在 [mysqld] 加上如下的配置
    [mysqld]
    log-bin=mysql-bin     #开启二进制日志
    server-id=1           #设置server-id
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    • 重启 mysql 如果是yum安装可以使用 systemctl restart mysqld
    • 登陆Mysql,创建用于同步的用户账号
    CREATE USER 'repl'@'139.199.***.***' IDENTIFIED BY 'YourPassword9#';
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'139.199.***.***';
    FLUSH PRIVILEGES;
    139.199.***.***  这里填上自己从服务器的 ip 
    • 查看master状态,记录二进制文件名 mysql-bin.000001 和位置 2930
    mysql>  SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |     2930 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    

  • 从数据库 slave 设置

    • 修改 my.cnf 文件 在 [mysqld] 加上如下的配置
    [mysqld]
    server-id=2           #设置server-id
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    • 重启 mysql 如果是yum安装可以使用 systemctl restart mysqld
    • 登陆Mysql,并执行同步SQL语句
    mysql> CHANGE MASTER TO
    ->     MASTER_HOST='116.196.***.***',             # 主服务器ip
    ->     MASTER_USER='repl',                        # 主服务器登陆名
    ->     MASTER_PASSWORD='YourPassword9#',          # 主服务器登陆密码
    ->     MASTER_LOG_FILE='mysql-bin.000001',        # 二进制文件的名称
    ->     MASTER_LOG_POS=2930;                       # 二进制文件的位置
    • 启动 slave 同步进程
    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
    
    • 查看 slave 状态
    mysql> show slave status\G;
    如果以下两项都是 yes 就表示主从同步设置成功了
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    

参考博客

本帖由系统于 5个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 4
北冥

好内容,有时间试试效果

5个月前

学习了 :+1:

5个月前

很好!

4个月前

如果主挂了,如何让从变成主

3周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!