zoukankan      html  css  js  c++  java
  • Mysql集群

    数据库管理,概念可以查看【微服务集群】

    • 主从
    • 分库
    • 分表

    主从

    原理

    • 主库db的更新事件(update、insert、delete)被写到binlog
    • 从库发起连接,连接到主库
    • 主库创建一个binlog dump thread线程,把binlog的内容发送到从库
    • 从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log.
    • 还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db.

    前提
    停止对master数据库的操作,把master中的数据库全部导入到slave,使两边数据库完全一致。

    配置master

    • 修改master的配置文件/etc/my.cnf,使用二进制日志,指定server-id,重启服务
    [mysqld]
    log_bin=mysql-bin //[必须]启用二进制日志
    server-id=10//[必须]服务器唯一ID,默认是1,一般取IP最后一段
    
    • 登陆主服务器mysql命令行,创建一个用于从服务器复制的用户
    # "."表示对所有库的所有操作,“%”表示所有客户端都可能连,也可用具体客户端IP代替,如192.168.33.11
    
    mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '主数据库密码'; 
    
    • 查看配置,其中file、position字段需要记录下值
    mysql>show master status;
    # 输出
    # file: mysql-bin.000001
    # position: 437
    

    配置slave

    • 修改配置文件/etc/my.cnf,使用二进制日志,指定server-id,重新启动服务
    [mysqld]
    log_bin=mysql-bin
    server-id=11
    
    • 将slave指向master,登陆从服务器mysql命令行,使用之前创建的用户和master的日志文件及其位置。slave中使用被授权用户信息及日志文件信息,进行指向master。这时已经建立了和master的联系,明确了从哪儿读取日志文件
    //注意不要断开,“437”无引号
    
    mysql>change master to master_host='192.168.33.10',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=437;
    
    • 启动slave
    mysql>start slave;
    
    • 查看slave状态,Slave_IO_Running: Yes IO线程状态,必须YES;Slave_SQL_Running: Yes SQL线程状态,必须YES
    mysql> show slave statusG;
    

    这种方式是需要哨兵监听的,没研究过

    分库分表

    • redis的分库是根据hash值判断的,是自动的
    • mysql需要自己处理
    • 处理方式有,写个程序去取出所有数据,然后hash取模存入对应的分库里
    • 问题在于这次是除以2,下次加一个就是除以3,每次都得大量数据迁移,就得停机
    • 如何自动化的分库分表
    • 方法一,用时间分,从现在起之后的所有数据都存到新库里,不用hash值取分了,但是这样所有的攻击都会到一个库上,受力不均匀
    • 方法二,用一致性hash算法,具体查看【无分类/特殊算法】
  • 相关阅读:
    远程监控基础知识和故障排除
    感慨颇多
    物联网操作系统Hello China移植mile stone之一:移植基础版本V1.76发布
    iOS5系统API和5个开源库的JSON解析速度测试
    (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0)
    [工具]Mac平台开发几个网络抓包工具(sniffer)
    [工具]Mac下非常好用的快捷终端Dterm
    【IOS】在SDK中打开其他接入应用的解决方案
    [开源]在iOS上实现Android风格的控件Toast
    [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档
  • 原文地址:https://www.cnblogs.com/pengdt/p/13062310.html
Copyright © 2011-2022 走看看