详细配置MYSQL主从数据库同步

主从同步的定义

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。
使用主从同步的好处:

  • 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能
  • 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
  • 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

主从同步的机制

在这里插入图片描述
Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。

在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。

每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以分别执行同一个二进制日志的不同部分,并且从服务器可以随时连接或者中断和服务器的连接。

主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的[mysqld]模块下有一个server-id配置项),另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址,日志文件名称和该日志里面的位置(这些信息存储在主服务器的数据库里

配置主从同步的基本步骤

有很多种配置主从同步的方法,可以总结为如下的步骤:

  1. 在主服务器上,必须开启二进制日志机制和配置一个独立的ID
  2. 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号
  3. 在开始复制进程前,在主服务器上记录二进制文件的位置信息
  4. 如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
  5. 配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

详细步骤

我的配置环境

主库系统:linux(centos7) mysql版本:5.7.24
从库系统:windows10 mysql版本:5.7.25
为避免主从同步版本不一致问题,我觉得应该从库版本>=主库版本,这样高版本会兼容低版本日志文件(未遇到过这种情况)

开始配置

备份主服务器原有数据到从服务器

mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db.sql

说明:

  • -u :用户名
  • -p :示密码
  • –all-databases :导出所有数据库
  • –lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改 ~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定
    在从Windows上的mysql进行数据还原
    将linux刚才生成的sql文件通过ftp工具导入到win,然后进入win的mysql执行sql文件进行数据还原,这样两个数据库的内容就是相同的啦
    编辑设置mysqld的配置文件,设置log_bin和server-id
    进入到linux系统,并配置数据库
sudo vim /etc/my.cnf

在这里插入图片描述
根据需求还可以配置如下字段
log_slave_updates=1
binlog-do-db=db_name # 需要同步的数据库
binlog-ignore-db=mysql # 被忽略的数据库
binlog_format=ROW
重启mysql服务

service mysql restart

登入主服务器linux的mysql,创建用于从服务器同步数据使用的帐号

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
FLUSH PRIVILEGES;

查看主数据库的二进制日志文件信息

SHOW MASTER STATUS;

在这里插入图片描述
File为使用的日志文件名字,Position为使用的文件位置,这两个参数须记下,配置从服务器时会用到
转到win10找到Windows中MySQL的配置文件my.ini
在这里插入图片描述
将server_id设置为2
在这里插入图片描述
重启windows的mysql服务(可在任务管理器-服务中设置)
进入windows的mysql中,设置连接到主服务器

change master to master_host='192.168.137.135', master_user='slave', master_password='slave',master_log_file='mysql_bin.000002', master_log_pos=590;

这里的file文件名、位置就是主服务器的日志文件名和位置
开启同步,并查看同步状态

start slave;
show slave status;

然后看到这两个Yes就很棒棒,表示已经成功啦(下面的图是我在navicat里用命令出来的,你也可以直接在命令行中执行命令)
在这里插入图片描述
成功
你在主库中新建个数据库,看一下从库中是不是也同步了呢
在这里插入图片描述
还是惯例,怎么样,哎,撒花花
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值