当前位置:Gxlcms > 数据库问题 > mysql进阶学习二之搭建主从

mysql进阶学习二之搭建主从

时间:2021-07-01 10:21:17 帮助过:16人阅读

  我准备了两台主机,主节点是远程的centos7,从节点是本机windows

  主从复制的原理在上一篇已经说了:主节点中mysql创建一个用户,专门提供给从节点去复制主节点的binlog文件,然后从节点的io线程将获取到的文件内容复制到自己的中继日志中,最后从节点的SQL线程读取中继日志,同步数据;

 

2. 配置linux主节点

  (1)登录mysql,新建一个mysql账号:GRANT REPLICATION SLAVE ON *.* to ‘java‘@‘%‘ identified by ‘123456‘;  //这个账号名是java,密码是123456,所有远程都可以通过这个账号和密码去读主节点mysql中的binlog

  (2)修改my.cnf配置文件

    linux使用yum安装的话,可以使用vim /etc/my.cnf 打开mysql的配置文件:

# id唯一
server-id=1 
# 开启binlog,同时日志文件名为my_bin_log
log-bin=my_bin_log
# 主从复制需要同步到从节点的数据库
binlog-do-db=mydb
binlog_format=STATEMENT

 

  binlog_format有三种:

    statement表示每一条增删改的sql都会记录到bin_log中,如果sql包含函数now(),那么同步到从节点执行该sql会导致数据不一致;

    row表示记录最终每一行数据的变化,同步到从节点中的数据肯定一致;

    mixed表示混合模式,sql中有函数就使用row模式,没有函数就使用statement

 

  (3)查询主节点的binlog文件名和position;

    为什么要知道这个position呢?因为从节点就是从主节点的position这个位置开始同步的,主节点前面的其他操作都不会被同步,主从复制都搭建好了之后再创建数据库!!!

技术图片

  

  (4)重启主节点mysql服务: systemctl restart mysqld

 

3  配置windows从节点

  (1)修改从节点的配置文件my.ini

# 从节点配置
server-id=2
# 从节点需要同步的库,需要和主节点对应
replicate-do-db=mydb
# 开启从节点中继日志
relay-log=mysql-relay

 

  (2)重启从节点mysql服务:任务管理器->服务->mysql,右键,重新启动

  (3)登录mysql,配置从节点连接主节点,使用我们在主节点配置的用户,还有binlog文件名以及数据库

# 配置主节点的ip,用户名,密码,binlog文件名,position
change master to master_host=106.77.104.190,master_user=java,master_password=123456,master_log_file=my_bin_log.000001,master_log_pos=154; 

 

  (4)开启从节点主从复制功能:start slave;

  (5)查看从节点mysql服务状态:show slave status\G;

技术图片

 

4.测试

  (1)主节点创建其他名字的数据库,从节点不会同步

技术图片

 

  (2)主节点创建mydb数据库,从节点会自动同步

技术图片

 

  (3)主节点在mydb库中创建表,从节点会同步

技术图片

 

  (4)主节点向mydb库中插入数据,从节点会同步

技术图片

  

  修改和删除表中的数据,从节点也是会同步的,就不截图了,有兴趣的自己去试试;

mysql进阶学习二之搭建主从

标签:创建数据库   创建表   同步   star   master   system   span   mat   主从   

人气教程排行