mysql主从复制(一主一从)搭建(超详细)

准备两个虚拟机

 

解决uuid:

 生成的uuid复制到auto.cnf中即可 

  1. 各自安装好mysql, 版本必须一致
  2. 查询mysql的配置  vim /etc/my.cnf                                    避免复制的虚拟机 导致mysql的serverId一致                                                                            例如135为主机   136为从机配置如下
  3. 配置主服务

    1. 编辑 /etc/my.cnf
    2. log-bin=mysql-bin
      
      server-id=1
      
      binlog-do-db=2007javaa
      
      binlog_ignore_db=mysql

      注意要把此项配置放在my.cnf的[mysqld]下面

    3. 重启mysql                                                                                                                    systemctl restart mysql
    4. 创建一个允许从数据库来访问的用户账号(mysql中操作)                                                        #创建账号                                                                                                                         create user 'username'@'从机ip' identified by '123456';                                                   #授权                                                                                                                                 grant all privileges on *.* to 'username'@'从机ip' with grant option;                                 #刷新                                                                                                                              FLUSH PRIVILEGES;                                                              

      create user bw@'192.168.58.136' identified by 'root'; 
      grant all privileges on *.* to 'bw'@'192.168.58.136' with grant option; 
      FLUSH PRIVILEGES;
      注意新创建的用户不可以是root 因为root已经存在

    5.  使用如下命令查看主服务器(mysql中操作)

      show master status\G

      如果是empty 查看log-bin

      show variables like '%log_bin%';                 

    6. 可以看到log_bin是OFF.

      解决方法:

      在mysql 配置文件 /etc/my.cnf中

      [mysqld]下添加:

      log-bin=mysql-bin

      但是我们上面已经配置过这个了,那就是配置的/etc/my.cnf没有生效

      #查看是否有设置使用指定目录的my.cnf文件,如果没有则是加载默认文件/etc/my.cnf

      ps aux|grep mysql|grep 'my.cnf'

      #查看mysql默认使用my.cnf文件目录以及优先级,排在前面的优先级高

      mysql --help|grep 'my.cnf'

      修改的位置不对,由于是测试环境的mysql,所以是直接使用mysqld去启动MySQL服务的,

      而不是使用mysqld_safe脚本去启动的,所以修改参数的时候需要对应好才会生效。

      配置要放在[mysqld]下才会生效                               生效后查看的结果:                                                            记住file  和 position  下一步操作需要此值

        

       从服务器配置和操作

    7. 编辑/etc/my.cnf文件,添加如下内容:                                                                          server-id=2                                                                                                                        注意:不可跟主服务器的一样
    8. 重启从服务器                                                                                                                      service mysqld restart
    9. 如果之前有启动过slave,要先关闭,如果是第一次就忽略。(mysql中操作)                   stop slave;
    10. 执行如下代码(mysql中操作)                                                                                         change master to master_host=‘主服务器ip’,                                                    master_user=‘刚在主服务器创建的用户名’,                                              master_password=‘刚在主服务器创建的用户密码’,                                          master_port=3306,                                                                                        master_log_file=‘刚查看主服务器下的File值’,                                                            master_log_pos=刚查看主服务器下的Position值

      change master to master_host='192.168.58.135',
      master_user='bw',
      master_password='root',
      master_port=3306,
      master_log_file='mysql-bin.000001',
      master_log_pos=120;

    11. 执行如下代码(mysql中操作)                                                                                         show slave status\G  能看到如下结果即可                                 说明成功! 如果有其中一个为NO 都不成功!
    12. 测试

      使用navicat链接主服务器和从服务器

      在主服务器中创建数据库和表 从服务器会自动同步数据

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值