mysql主从配置

1、从《高性能mysql》书中讲解主从原理大致有三个步骤:

  在主库上把数据更改记录到二进制日志中(Binary Log)中,这些记录称为二进制日志事件。
  从库通过IO线程将主库上的日志复制到自己的中继日志(Relay Log)中。
  从库通过SQL线程读取中继日志中的事件,将其重放到自己数据上。
  原理图为:

  

 我的机器:

  主:192.168.0.191

  从:192.168.0.192

2、主库配置:

  修改my.conf:vi /etc/my.cnf  添加配置

# 服务的唯一编号
server-id = 1

# 开启mysql binlog功能
log-bin = mysql-bin

# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW

# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal

# 指定需要复制的数据库名为my_db
binlog-do-db = my_db

  

  重启mysql服务

  service mysqld restart

  创建从库同步数据的账号,进入mysql终端

  grant replication slave on *.* to 'my_user'@'192.168.0.192' identified by 'Ly.123456';

  flush privileges;

   查看主库状态:

  show master status\G;

  

   主库配置完成。

3、从库配置

  修改my.conf:vi /etc/my.cnf  添加配置

# 服务的唯一编号
server-id = 2

# 开启mysql binlog功能
log-bin = mysql-bin

# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW

# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal

# 指定需要复制的数据库名为my_db
replicate-do-db = my_db

  

  重启mysql服务

  service mysqld restart

  进入mysql终端  

  执行命令:change master to master_host='192.168.0.191',master_user='my_user',master_password='Ly.123456',master_log_file='mysql-bin.000003',master_log_pos=154;

  

   start slave;

  查看状态:show slave status \G

  

   如果两个都是yes就是ok。刚开始的时候,我的第一个显示是NO,如下:

   因为是,我是在虚拟机上先在主库所在机器装了mysql,然后克隆一台机器出来,做从节点,就导致了UUID是一样的。

  停掉两台mysql服务,删除auto.cnf

  

   启动mysql服务,再看看是不是两个都是yes,一定要仔细看master和slave的状态里的文件是否一致。

  这样就能进行数据同步了。

 来源:https://www.cnblogs.com/atcloud/p/10773855.html

posted @ 2020-04-28 16:31  蜗牛的信仰  阅读(219)  评论(0编辑  收藏  举报