zoukankan      html  css  js  c++  java
  • MySQL主从同步简单介绍&配置

    介绍:

    现在mysql集群基本上都是使用一主多从方式,实现读写分离(主库写、从库读)、负载均衡、数据备份,以前只是使用从未配置过,今天简单配置一下!

    mysql主从复制是通过binary log日志实现,具体实现流程如下:

      1.主库开启binlog日志,且主库将所有操作语句记录到binlog中,并允许从库远程连接权限

      2.从库开启I/O线程和SQL线程。I/O线程负责读取主库的binlog内容到relay log中;SQL线程负责从relay log中读取binlog内容并更新到从库中

    下面是从网上找了一张经典的主从复制流程图:

    注意事项:

      mysql主从库版本尽量保持一致,如不一致主库版本要低于从库版本

      mysql主从库尽量分布于不同服务器上,主库必须开启bin log日志

      主从库初始数据保持一致


    主库配置:

      1.设置bin log和server id

       vim /etc/my.cnf

       

       2.启动服务

       /usr/local/mysql/support-files/mysql.server start

       报错:The server quit without updating PID file (/usr/local/mysql/data/ubuntu1.pid)

       设置权限:chown -R mysql:mysql /var/log/mysql/             chmod -R 755 /usr/local/mysql/data/

      3.创建从库同步数据的账号

       mysql -u root -p

       

       3.获取主服务器二进制信息

       


    从库配置:

      1.设置server id,此server-id要小于主库server-id

       vim /etc/my.cnf

       

       从库bin log日志可不开启,视情况而定,用于测试先不开启

      2.启动服务

       /usr/local/mysql/support-files/mysql.server start

      3.设置连接连接到主库的信息

       

       4.开启同步

       start slave;

       show slave status G;

       

      正常情况下这两项都应该是Yes才对,奔溃了,o(╥﹏╥)o ,排错吧。。。


         1)在my.cnf文件中打开错误日志:vim /etc/my.cnf

          

         2)查看错误日志:cat /var/log/mysqld.log,看到有这条内容

          [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=ubuntu2-relay-bin' to avoid this problem

          然后在配置文件中增加relay-log选项,vim /etc/my.cnf

          

         3)重启myql依然是No,绞尽脑汁,想起来从库服务器环境是从主库复制过来的,主机名和主库主机名都是ubuntu1,好吧,修改主机名:vim /etc/hostname,改成ubuntu2

         4)重启主机,启动mysql,执行start slave;直接报错,从库同步启动失败了,然后网上查了需要reset slave再start slave,好吧,执行reset slave,在执行start slave,依然是No,继续崩溃o(╥﹏╥)o

         5)继续看错误日志,不看日志凭脑子想是想不出来的,从上往下一行行看,终于看到个ERROR

           

           查百度,原来是auto.cnf里的server-uuid和主库重复,原因还是从库服务器环境直接从主库复制的,文件在/usr/local/mysql/data/下,直接将auto.cnf文件删除,mysql启动时会检查,没有的话会自动创建。

          6)重启mysql,继续查看从库同步状态

          

          终于Yes了, O(∩_∩)O哈哈~


    测试:

      1.主库创建test库,test表,插入数据;

       

       2.从库查看是否有test库,test表,表中是否有相应数据

       

    同步正常!!!完成~

      

  • 相关阅读:
    hibernate 表配置文件如何设置表字段的默认值
    dtree的使用和扩展
    JS获取项目根目录
    前端 本地缓存图片
    数组去重 和 数组排序方法总结
    js数组去重的方法(转)
    vue 校验插件 veeValidate使用
    将本地已有项目上传到github
    vue 项目搭建笔记1
    css计数器 及 鼠标经过从中间扩散一个矩形(正方形长方形均可)
  • 原文地址:https://www.cnblogs.com/shier-dong/p/13561345.html
Copyright © 2011-2022 走看看