• ADADADADAD

    mysql主从集群配置[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:12:36

    作者:文/会员上传

    简介:

    先编辑master配置:vim /etc/my.cnf
    (加上红框部分。#server id部分:每个都有独一无二的id作为区分,这id可以用服务器ip后三位。#binary log:日志。#statement row mixed:三种监

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。


    先编辑master配置:

    vim /etc/my.cnf

    (加上红框部分。#server id部分:每个都有独一无二的id作为区分,这id可以用服务器ip后三位。#binary log:日志。#statement row mixed:三种监听方式)

    其中三种情况:监听语句变化,还是磁盘变化,还是混合模式?

    然后编辑slave的/etc/my.cnf:

    (设置id,建立中继日志)

    然后分别启动主和从:service mysqld start

    接下来,主和从要建立联系:

    登录mysql: 

    mysql -uroot -p

    master建立授权帐号(这个帐号允许你复制master的二进制日志。一个replication client帐号,一个replication slave帐号):

    (授权一个客户端帐号、一个从帐号。*.*:作用于所有库和表上,不像mongodb能单选某库某表。to 帐号repl,指定它发挥作用的ip:@192.168.%.%,即前缀是192.168都可以用。identitied by 'repl':指定密码为repl)

    到目前为止,主服务器的日志、帐号、从服务器的relaylog好了,只需要通知从服务器连过来:

    (master_log_file是当前master所用的二进制文件。master_log_pos是当前master的position。下面有查看方法)

    见识下二进制日志:

    目前用的最新的二进制日志是:

    (mater机器)

    看看当前master机器的状态:

    (确实当前用的是mysql-bin.000003,position 278的意思是:我主服务器已经写到278位置了,你从服务器注意哈)

    操作slave:

    (reset slave:重置slave。然后设置对应master的相关信息)

    查看slave的情况:show slave status \G

    启动slave:

    再查看状态就好了(第一行变成了waiting  for master to send event):

    接下来,不管在master是新建库、表,各种增删改查,在slave中都会看到相应的变化





    典型问题:

    有一业务场景,经过测试,读写比为1:20,请根据读写比,合理设置优化方案.

     

    读写比:

    写数据/读数据的比例,

    Insert/update/delelte     /  select

     

    不管具体技术,从"读写分离"的概念出发来推导一下基本的要素.


    通俗的说:读服务器就是指写服务器的数据镜像.

     

    从服务端看:要有N台从服务器和主服务器保持数据一致.

    从客户端看:比如有一条insert语句和一条select 语句,

    则要区分读/写语句,并且分别请求从/主服务器.

     

     


    服务器端读写分离的具体技术

    1:数据库集群技术

    集群由3个概念

    1:sql节点  sql node

    2:数据节点 data node

    3:管理节点 ndb managerment

     

    Sql语句发送"1sql节点", "1sql"节点发往"2数据节点",再由3管理节点完成数据节点的之间的同步.

     

    集群技术相对复杂,至少有3种节点,4台服务器才能完成.

     

     

    2:数据库复制 replication


    数据库复制 replication 的实现原理

    1:主服务器凡运行语句,都产生一个二进制日志 binlog

    2:从服务器不断读取主服务器的binlog

    3:从主服务读取到的binlog,转换为自身可执行的relaylog,

    4:执行relaylog

     

     

    实现步骤:

    1:首先确保主服务器打开二进制日志功能.

    这样,主服务器一旦有数据变化,立即产生二进制日志.

     

    2:从服务器也需要开启二进制日志和relay日志功能.

    这样可以从主服务器读取binlog,并产生relaylog

     

    3:在主服务器建立一个从服务器的账号,并授予数得上权限.

     

    4: 指定从服务对应的主服务器,开启从服务器.

     

     

    具体实施

    本人虚拟机下有两台linux,IP为199 200

    1: 200做从服务器

    2: 199mysql,做为主服务器.

    3: 保证主从3306端口互通.

    4: 配置主服务器,打开binlog

    #给服务器起一个唯一的id

    server-id=1

     #开启二进制日志

    log-bin=mysql-bin

    #指定日志格式

    binlog-format=mixd/row/statement
    重启mysql

    已经能够充当master服务器


    5: 配置从服务器打开binlog和relaylog

    重启从服务器

     

    6: 在主服务器上创建相应的复制账号

    7: 在从服务器通过语句指定要复制的主服务器(注意,可以一主多从,不可一从多主).

    8:启动从服务器功能

    ->start slave;

    8: 测试.

     

     


    常用语句:

    show master status ; 查看master的状态, 尤其是当前的日志及位置

    show slave stattus; 查看slave的状态.

    reset slave ;  重置slave状态.

    start slave ; 启动slave 状态(开始监听msater的变化)

    stop slave; 暂停slave状态;









    查看mysql帐号:

    mysql主从集群配置.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载