千家信息网

MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?这些问题可能是我们日常工作会见到的。通过这些问题,希望你能收获更多。下面是揭开这些问题的详细内容。MySQL主从复制案例概述在企业网站中
千家信息网最后更新 2026年11月02日MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?

MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?这些问题可能是我们日常工作会见到的。通过这些问题,希望你能收获更多。下面是揭开这些问题的详细内容。

MySQL主从复制
案例概述
在企业网站中,后端MySQL数据库只有一台时,会有以下问题:

  • 单点故障服务不可用
  • 无法处理大量的并发数据请求
  • 数据丢失

    改造办法
  • 增加MySQL数据库服务器,对数据进行备份,形成主备
  • 确保主备MySQL数据库服务器数据是一样的
  • 主服务器宕机了,备份服务器继续工作,数据有保障
    MySQL的主从复制与读写分离是密切相关的

    更高级的解决方案
    通过主从复制的方式来同步数据,在通过读写分离提升数据库的并发能力

    Amoeba 变形虫
    案例实施
    1.所有服务器关闭firewalld或者进行规则设置
    2.建立时间同步环境
  • 在主服务器上安装ntp时间同步服务器
    • 使用yum安装ntp服务
    • 修改ntp.conf,设置主服务器为时间同步源
  • 在从服务器上进行时间同步
    • 使用yum安装ntpdate并进行时间同步
      在三台数据库服务器上安装mysql
  • 编译安装mysql
  • 优化调整
  • 初始化数据库
  • 启动mysql服务并进行root用户密码设置
    配置mysql master主服务器
  • 修改/etc/my.cnf配置文件,增加服务器id,配置二进制日志选项
  • 登录mysql服务,授权所有的从服务器复制二进制日志的权限

    配置两台从服务器
  • 修改/etc/my.cnf配置文件,增加服务器id,配置二进制日志选项
  • 登录mysql,配置主从同步

    实操
    实验环境:准备5台centos 7系统的虚拟机
    一台主服务器、两台从服务器、一台amoeba、一台客户机
    实验拓扑图:

    三台mysql服务器先都安装ntp、ntpdate
    用于哦配置时间同步
    [root@master ~]# yum install ntp -y[root@slave1 ~]# yum install ntp ntpdate -y[root@slave2 ~]# yum install ntp ntpdate -y

    修改ntp配置文件
    在主服务器下设置ntp配置文件,然后开启ntpd,关闭防火墙

    [root@master ~]# vim /etc/ntp.confserver 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst'server 127.127.247.0       //设置本地是时钟源,这里的127.127指自己的192.168'fudge 127.127.247.0 stratum 8      //设置时间环的时间层级(时间环)为8[root@master ~]# systemctl start ntpd[root@master ~]# systemctl stop firewalld[root@master ~]# setenforce 0[root@master ~]# systemctl enable ntpdCreated symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

    配置从服务器slave1,直接开启ntpd服务,进行时间同步,去匹配主服务器(ip地址)时间

    [root@slave1 ~]# systemctl start ntpd[root@slave1 ~]# systemctl stop firewalld[root@slave1 ~]# setenforce 0[root@slave1 ~]# systemctl enable ntpdCreated symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.[root@slave1 ~]# /usr/sbin/ntpdate 192.168.247.1608 Jan 18:39:26 ntpdate[114393]: the NTP socket is in use, exiting

    slave1同步完成,接下来同步slave2

    [root@slave2 ~]# systemctl start ntpd[root@slave2 ~]# systemctl enable ntpdCreated symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.[root@slave2 ~]# systemctl stop firewalld[root@slave2 ~]# setenforce 0[root@slave2 ~]# /usr/sbin/ntpdate 192.168.247.1608 Jan 18:40:38 ntpdate[82655]: the NTP socket is in use, exiting

    接下来就是安装MySQL和优化的过程
    由于过程冗杂,详细过程请查看本人之前博客:
    https://blog.51cto.com/14557905/2458283

安装mysql完毕,并且做完一系列优化
开始做主从同步
1.修改主服务器配置文件

[root@master mysql-5.6.26]# vim /etc/my.cnf//写在mysqld下log-bin=master-bin//上面是开启二进制文件log-slave-update=true//开启从服务器更新server-id       = 11//服务器id为11(id不可以重复)

重启服务

[root@master mysql-5.6.26]# service mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS! 

主服务器登陆mysql,给从服务器创建用户并且允许复制所有数据(ON . )

[root@master mysql-5.6.26]# mysql -uroot -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g.mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.247.%' IDENTIFIED BY 'abc123';//允许 复制,从服务器以myslave用户的身份,从192.168.247.0的网段,使用abc123的密码,去复制所有的数据库以及下面的表(*.*)Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;//刷新数据库Query OK, 0 rows affected (0.00 sec)mysql> show master status;//查看主服务器的位置点,从服务器的同步位置点就是下面的412+-------------------+----------+--------------+------------------+-------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| master-bin.000001 |      412 |              |                  |                   |+-------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

配置从服务器slave1,服务器id不能一致,开启中继日志,索引中继日志

[root@slave1 mysql-5.6.26]# vim /etc/my.cnf[mysqld]//写在mysqld下log-bin=mysql-binserver-id       = 22//另一台slave2 id 为23relay-log=relay-log-binrelay-log-index=slave-relay-bin.index[root@slave1 mysql-5.6.26]# service mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS! 

从服务器登陆mysql,添加主服务器(ip地址,使用主服务器的账户mysalve,输入主服务器账户的密码,确定同步的二进制文件,同步的位置点)

[root@slave1 mysql-5.6.26]# mysql -uroot -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g.mysql> change master to master_host='192.168.247.160',master_user='myslave',master_password='abc123',master_log_file='master-bin.000001',master_log_pos=412;//添加主服务器Query OK, 0 rows affected, 2 warnings (0.01 sec)

开启从服务器功能

mysql> start slave;Query OK, 0 rows affected (0.01 sec)

查看从服务器状态

mysql> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.247.160                  Master_User: myslave                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: master-bin.000001          Read_Master_Log_Pos: 412               Relay_Log_File: relay-log-bin.000002                Relay_Log_Pos: 284        Relay_Master_Log_File: master-bin.000001'             Slave_IO_Running: Yes         //显示slave功能已开启'            Slave_SQL_Running: Yes         //显示slave功能已开启          Exec_Master_Log_Pos: 412              Relay_Log_Space: 455             Master_Server_Id: 11                  Master_UUID: e9a82741-3223-11ea-af25-000c29524d89             Master_Info_File: /home/mysql/master.info                    SQL_Delay: 0          SQL_Remaining_Delay: NULL      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it           Master_Retry_Count: 864001 row in set (0.00 sec)

同步配置完成,接下来测试
主服务器,创建一个school数据库

mysql> create database school;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || school             || test               |+--------------------+5 rows in set (0.00 sec)

从服务器直接查看

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || school             || test               |+--------------------+5 rows in set (0.00 sec)

以上就是MySQL的主从复制介绍以及MySQL服务器实现主从同步的方法,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注行业资讯!

服务 服务器 同步 数据 配置 主从 数据库 文件 时间 二进制 日志 问题 接下来 位置 功能 密码 就是 用户 过程 进行时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 唐信互联网科技 成都互联网科技公司 科技创新互联网企业 互联网科技博客 佰商互联网科技有限公司 青岛中康互联网医疗科技有限公司 济南华为互联网科技产业总部基地 随着互联网科技发展 互联网科技有哪些公司 卡尔迅互联网科技有限公司 半导体行业属于互联网高科技类吗 神州科技互联网有限公司 昆明中奇联合互联网科技 科技互联网公司两年变化 恒生科技指数 中概互联网 北京品多多互联网科技有限公司 黑龙江互联网科技公司 优雇互联网科技有限公司 小牛互联网科技有限公司地址 广州百单互联网科技有限公司 重庆互联网络科技 深圳互联网络科技有限公司 互联网 的科技创新 科技与互联网哪个更好 注册互联网科技公司经营范围大全 互联网行业科技股 长沙互联网科技 玉溪新华互联网科技怎么选 河南商务圈互联网科技有限公司
0