• Mysql 集群环境搭建


    在上一篇文章中已经详细的写了关于Mysql的安装步骤。这一篇文章在上一篇文章的基础之上接着写集群的安装与部署。

    安装地址:https://www.cnblogs.com/ming-blogs/p/10962554.html

    MySQL从复制配置

    主节点服务器 地址 192.168.0.105

    从节点服务器 地址 192.168.0.107

    主节点服务器安装好之后,直接clone 一个即可,不需要重复安装2次。

    主节点服务器配置

    1.进入配置页面命令

       vi /etc/my.cnf 

    2.配置服务器id server_id 

    这里的server_id 尽量配置为服务器地址的后3位 以用来区分

      server_id=105

    3.开启日志文件(binLog)

      log-bin=mysql-bin 

    配置文件的地址应该在 : # Recommended in standard MySQL setup,否则配置不起作用

    如下图所示

    4.重启mysql服务 

    service mysqld restart

    验证是否已经配置成功

    5.show variables like '%server_id%';

    能够查询对应配置文件中的server_id 说明已经配置成功,如下图,则表示配置成功。server_id=105

     

    6.show master status;

    能够看到同步的文件,和行数说明已经配置成功。

    服务器节点

    1.进入配置页面命令

       vi /etc/my.cnf 

    2.配置服务器id server_id 

    这里的server_id 尽量配置为服务器地址的后3位 以用来区分

      server_id=105

    3.开启日志文件(binLog)

      log-bin=mysql-bin 

    4.添加需用同步的数据库

    binlog_do_db=test   

    5.重启mysql服务 

    service mysqld restart

    验证是否已经配置成功

    6.show variables like '%server_id%';

    能够查询对应配置文件中的server_id 说明已经配置成功

     

    7.从服务器同步主服务器配置

    master_host 主服务器地址

    master_user 主服务器用户名

    master_password 主服务器密码

    master_log_file 主服务器配置文件

    master_log_pos 主服务器读取配置文件的开始位置,也就是从第多少行开始读取。

    change master to master_host='192.168.0.105',master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=120;

    8.开始同步 

    start slave

    9.检查从服务器复制功能状态

    SHOW SLAVE STATUS

    如果二个从服务器是克隆主服务器的,这时候就会出现如下图的情况,二个服务器的server-uuid 是相同的,因为是克隆过来的。这时候运行  SHOW SLAVE STATUS  就会出现 Slave_IO_Running 为 No,而Slave_SQL_Running为Yes。说明IO同步出错,在Last_IO_Error 字段可以看到错误信息,如下。错误信息的意思就是server-uuid 重复了。也就是下图展示的效果。

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work。

    如果出现这种情况,需要将 /var/lib/mysql  文件下的生成uuid 的文件删除,然后再重新启动 mysql 服务,就会重新在生成一个 server-uuid,在下图2中 也 显示了这个重新生成的server-uuid。

    如果你的从服务器不是克隆主服务器而是重新安装的,那么就不会出现这种情况。直接运行  SHOW SLAVE STATUS 命令,如下图。则表示同步成功

     

     

     

    存放server-uuid的 地址,可以在 /etc/my.cnf 文件中查看,如下图。

     

    如何验证我们mysql 主从复制 集群搭建成功?

    在105节点主服务器)新建test数据库,如果107节点(从服务器)能够同步过来,则说明环境搭建成功。

    如下图,图一是没有创建test数据库之前,在105 服务器上创建一个test数据库,然后107关闭连接 再重新打开连接、或者直接刷新,发现test数据库已经同步过来了,如图2的效果。

     

    同样的,在105服务器节点中的test数据库中新建表test001,然后在107节点中刷新,test001表也同步了过来,如下图。

     

    这时候在105节点的test数据库中的test_001数据表添加数据,107 节点也会把数据同步过来,如下图。

     

    但是这时候我修改105节点数据库中数据表(test_001)的数据的时候,107节点的数据并没有更新过来,如下图。

     

    这个问题,将在下一篇读写分离博客中写出来。

     

    如果同步执行出错,作如下修改。

    show variables like '%server_id%';

    show master status;

    STOP SLAVE;

    set GLOBAL sql_slave_skip_counter=1;

    start slave;

    SHOW SLAVE STATUS;

  • 相关阅读:
    【数据库】事务,ACID,CAP和一致性
    线程,进程。多进程,多线程。并发,并行的区别
    mysql 集群 数据同步
    如何读取一个表的表类型,以及读取一个表中字段的类型.
    网络攻击技术开篇——SQL Injection
    MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
    程序员找工作那些事(一)幸存者偏差
    程序员
    preg_replace的一些细节
    HDU 1258 Sum It Up(dfs 巧妙去重)
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/10963011.html
Copyright © 2020-2023  润新知