zoukankan      html  css  js  c++  java
  • mysql-8.0.12读写分离

    安装包下载地址:https://downloads.mysql.com/archives/proxy/

    环境

    proxy:172.16.1.20

    master:172.16.1.21

    slave1:172.16.1.22

    slave2:172.16.1.23

    本文选用mysql-proxy作为转发中间件, 版本为mysql-proxy-0.8.5-linux-el6-x86-64bit

    一:在开启主从复制的情况下,在master创建供 proxy连接的账号(这样就等于同时在所有mysql上创建了连接账号)

    mysql > create user 'rw'@'%' identified with mysql_native_password by 'tqw961110';

    mysql > grant all on *.* to 'rw'@'%';

    二:停用slave(所有mysql都执行一遍)

    mysql > stop slave;

    mysql > reset slave all;

    三:解压安装包并进入

    cd  /tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/

    mkdir  lua     创建存放lua脚本的目录

    mkdir  logs   创建存放日志的目录

    cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件

    cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本

    vim /etc/mysql-proxy.cnf #创建配置文件

    [mysql-proxy]
    user=root
    admin-username=rw                              #proxy的连接账号(主从都要有)
    admin-password=tqw961110                  #密码
    proxy-address=172.16.1.20:4040          #proxy运行的地址
    proxy-read-only-backend-addresses=172.16.1.22,172.16.1.23               #只读服务池
    proxy-backend-addresses=172.16.1.21                                                   #写服务池
    proxy-lua-script=/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/lua/rw-splitting.lua                  #读写脚本存放位置
    admin-lua-script=/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/lua/admin-sql.lua                   #管理脚本存放位置
    log-file=/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/logs/mysql.log                                       #日志存放位置
    log-level=info                        #定义log日志级别,由高到低分别有(error|warning|info|message|debug)

    daemon=true                         #以守护进程的方式运行
    keepalive=true                       #mysql-proxy崩溃时,尝试重启。

     

    四:修改读写脚本

    if not proxy.global.config.rwsplit then
    proxy.global.config.rwsplit = {
    min_idle_connections = 1,          #默认超过4个连接时才开始读写分离,这里修改为1.
    max_idle_connections = 1,         #默认8,改为1。

    is_debug = false
    }
    end

    启动proxy

    /tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/bin/mysql-proxy    --defaults-file=/etc/mysql-proxy.cnf

    查看日志

    已经将后端mysql加进连接池

    查看端口

    netstat -atunlp | grep 4040

    tcp        0      0 172.16.1.20:4040        0.0.0.0:*               LISTEN      33297/mysql-proxy

    测试读写性能

    在proxy服务器上登陆mysql(proxy服务器需要有mysql命令。可以yum -y install mysql)

    mysql  -h  172.16.1.20  -urw -ptqw961110  --port=4040

    分别在主从数据库插入数据

    create  database test;

    use test;

    create table test(id int(10),name varchar(20));

    insert into t values(1,'this_is_master'); !!!!在slave上则是执行 insert into t values(1,'this_is_slave');

    此时master与slave中的test库test表的内容是不同的。

    在proxy服务器上

    use test;

    select * from test;

     

    显示的是slave的内容

    再在proxy服务器上插入数据试试

    insert into t values(1,'this_is_proxy');

    select * from test;

     

    显示的依旧是slave的内容

     

    但是在master服务器上查看内容

    select * from test;

    已经可以看到从proxy插入的数据

    经测试,写操作只会在master上进行,而读操作只会在slave上进行。

    至此,mysql读写分离成功。

    若想关闭proxy

    killall  -9  mysql-proxy

     

  • 相关阅读:
    LeetCode 230. 二叉搜索树中第K小的元素(Kth Smallest Element in a BST)
    LeetCode 216. 组合总和 III(Combination Sum III)
    LeetCode 179. 最大数(Largest Number)
    LeetCode 199. 二叉树的右视图(Binary Tree Right Side View)
    LeetCode 114. 二叉树展开为链表(Flatten Binary Tree to Linked List)
    LeetCode 106. 从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inorder and Postorder Traversal)
    指针变量、普通变量、内存和地址的全面对比
    MiZ702学习笔记8——让MiZ702变身PC的方法
    你可能不知道的,定义,声明,初始化
    原创zynq文章整理(MiZ702教程+例程)
  • 原文地址:https://www.cnblogs.com/QicongLiang/p/9822396.html
Copyright © 2011-2022 走看看