zoukankan      html  css  js  c++  java
  • mysql1.6(主从同步,数据读写分离)

    目录:   一,主从同步

                  二,数据读写分离

              

    一,mysql主从同步。

    1.1什么是主从同步

    1.2主从同步的工作原理

    1.3配置主从同步,并验证配置

    1.4 主从同步结构模式

    1.5主从同步常用配置参数

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    1.1什么是主从同步?

    让其他的Mysql数据库服务器和正在被访问的数据库服务器上的数据保持一致。

    1.2主从同步工作原理?

    IO线程:把主库binlog日志里的sql命令保存到本机的中继日志文件里    

    SQL线程:执行本机中继日志文件里sql命令,把数据写进本机的数据库服务器里。

    1.3配置主从同步 并验证配置

    主库的配置步骤:

    (1)用户授权: grant replication slave on *.* to plj@“192.168.4.52” identified by "123456";

    (2)使用binlog日志:

    vim /etc/my.cnf

    [mysqld]

    server_id=51
    log-bin=/binlogdir/master51
    binlog_format="mixed"

    mkdir /binlogdir          

     chown mysql /binlogdir/    

     systemctl restart mysqld

    (3)查看正在使用的binlog文件信息

     mysql-> show  master  status;

    环境准备:关闭防火墙,selinux,确保主库的数据和从库的数据要一致。

    保留初始4个库。

    从库的配置步骤

    测试主库用户授权:mysql  -h192.168.4.51   -uplj  -p123456

    指定server_id

    vim  /etc/my.cnf  s

    [mysqld]

    server_id=52
    log_bin=/mylog/slave52

    数据库管理配置主库信息

    mkdir /mylog

    chown -R mysql  /mylog

    systemctl restart mysqld  ; mysql -uroot -p123456

    发起同步操作:

    mysql-> change  master  to master_host='主服务器IP',

             -> master_user='plj', (被授权用户名)

             -> master_password='密码' ,(被授权用户密码)

             -> master_log_file='日志文件',  //可以在主上面show master status

             -> master_log_pos=偏移位置;  //可以在主上面show master status

    start  slave  开启服务 //如果以后要更改信息要先stop slave在去修改。

    查看本机IO线程和SQL线程

    mysql -> show  slave  statusG;

    mysql->stop  slave;

    mysql->start slave;

                   Last_IO_Error:IO进程报错信息

                   Last_SQL_Error:SQL进程报错信息

    在库下的数据库目录下多处来的文件:

    master.info   记录主库信息

    主机名-relay-bin.编号   中继日志文件

    主机名-relay-bin.index  索引文件(记录已有的中继日志文件)

    relay-log.info     记录中继日志信息

    主库:show processlist;

    可以看到有个binlog dump 这个程序每次新进sql命令都会通知从库上面的I/O线程去实现同步更新。

    实现最终效果:从库实现增,删,改的实时同步。对主库上的所有操作

    在从库上都会有对应数据。

    暂时关闭从库: stop slave ;  show slave status;

    取消从库定义:删除主目录下面的几个文件

                             rm -rf  master.info  relay-log.info mysql52-relay-bin.*

                             重起服务******************************************************************************************1.4主从同步的结构模式

    一主一从

    一主多从

    主从从

    主主结构

    1.5主从同步常用配置参数(/etc/my.cnf)

    主库的配置参数(在主库的设置对所有的从生效)

    binlog_do_db=库名列表 用,间隔符号  #只允许同步的库

    binlog_ignore_db=库名列表 用,间隔符号  #只不允许同步的库

    从库的配置参数(只有对从库自己生效)

    log_slave_updates //允许级联复制

    relay_log=文件名  //指定中继日志文件的名字

    replicate_do_db=库名列表 用,间隔符号  #只同步的库

    replicate_ignore_db=库名列表 用,间隔符号  #只不同步的库

    *************************************************************************************

    二,数据读写分离(maxscale软件+一主一从结构)

    mysql中间件(和mysql服务一起提供服务的软件)

    实现读写分离的软件:mycat   mysql-proxy   maxscale

    2.1什么是数据读写分离

    把客户端访问数据时的查询请求和写入请求

                                分别给不同的数据库服务器处理。

    2.2为什么要做读写分离

    减轻单台服务器的并发访问压力同时提高硬件的利用率。

    3.3配置读写分离

    (1)配置主从同步(一主一从  51(主)  52 (从))

    (2)配置代理服务器55

    1,把数据库服务停止并设置开机不运行,禁用selinux 和firewalld

    2,装包  修改配置文件  用户授权 启动服务   查看端口号

    rpm -Uvh maxscale-2.1.2-1.rhel.7.x86_64.rpm 

    cp /etc/maxscale.cnf  /root/

    vim /etc/maxscale.cnf

    9 [maxscale]
    10 threads=auto   //用来自动匹配cpu的线程

    18 [server1]   :定义监听主机1
    19 type=server
    20 address=192.168.4.51
    21 port=3306
    22 protocol=MySQLBackend
    23
    24 [server2]   :定义监听主机2
    25 type=server
    26 address=192.168.4.52
    27 port=3306
    28 protocol=MySQLBackend

    36 [MySQL Monitor]
    37 type=monitor
    38 module=mysqlmon
    39 servers=server1,  server2  //定义监听主机
    40 user=scalemon    //监听主机的登陆用户
    41 passwd=123456
    42 monitor_interval=10000

    53 #[Read-Only Service]   //注释行
    54 #type=service
    55 #router=readconnroute
    56 #servers=server1
    57 #user=myuser
    58 #passwd=mypwd
    59 #router_options=slave

    64 [Read-Write Service]
    65 type=service
    66 router=readwritesplit
    67 servers=server1,  server2  //额外添加主机
    68 user=maxscale    //用来检测客户机登陆用户是否存在的用户
    69 passwd=123456        
    70 max_slave_connections=100%

    86 #[Read-Only Listener]  //注释掉这些行
    87 #type=listener
    88 #service=Read-Only Service
    89 #protocol=MySQLClient
    90 #port=4008

    92 [Read-Write Listener]
    93 type=listener
    94 service=Read-Write Service
    95 protocol=MySQLClient
    96 port=4006
    97
    98 [MaxAdmin Listener]
    99 type=listener
    100 service=MaxAdmin Service
    101 protocol=maxscaled
    102 socket=default
    103 port=4016 //额外添加行

    在主从数据库上授权:

    grant replication slave,replication client on *.* to 

    -> scalemon@'%' identified by "123456";  //授权给maxscale软件连接用户监听权限

    grant select on mysql.* to maxscale@'%' identified by "123456"; //授权maxscale软件maxscale     用户查询权限,用来检测代码登陆用户是否存在。  

    测试:mysql  -h51/52主机IP  -u授权用户 -p密码 去测试是否可以登陆

    3,访问管理端口查看主从同步状态信息及数据库服务的状态

    maxscale -f /etc/maxscale.cnf   //启动服务 

    netstat  -antpul | grep maxscale  //查看进程

    ps -C maxscale   //查看进程pid  

    停止服务:killall  -9  maxscale

    #maxadmin -uadmin -pmariadb -P4016

    list servers //查寻读写分离客户机的运行状态。

    3.4测试配置?在客户端测试配置

    注意:tony手动去主服务授权对一个库.*授权all权限.

    #mysql  -h192.168.4.55  -P4006  -utony  -p123456

    mysql -> 使用一个查询语句/一个写入命令。

    测试是否读写分离,读在52服务器,写在51服务器。

    3.5配置分离结构有什么缺点?

    单点故障,数据量大的时。数据传输会有瓶颈。

    3.6数据读写分离拓扑结构

                       4.254

                           |

                           |

                          55(安装maxscale软件)

    +++++++++++++++++++++++++++

          51主                      52从

  • 相关阅读:
    PHP fread() 函数
    PHP fputs() 函数
    PHP fputcsv() 函数
    PHP fpassthru() 函数
    分区表基本类型
    C# const 和 readonly 有什么区别
    win2d 画出好看的图形
    win2d 画出好看的图形
    win2d 渐变颜色
    win2d 渐变颜色
  • 原文地址:https://www.cnblogs.com/yunsshcy/p/8690652.html
Copyright © 2011-2022 走看看