• mysql运维入门6:MySQL读写分离


    Amoeba

    • 以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy
    • 集中想用应用的请求,根据用户事先设置的规则,将SQL请求发送到特定的数据库上执行
    • 基于此可以实现负载均衡、读写分离、高可用性等需求
    • 强调的是amoeba配置的方便,基于XML的配置文件,用SQLJEP语法书写规则
    • 相当于一个SQL请求的路由器
    • 需结合mysql的replication等机制实现副本同步等功能
    • 对底层数据库连接管理和路由实现才用了可插拔机制

    MySQL-Proxy

    • 官方工具
    • 基于lua脚本

    基于程序读写分离

    • 写一个库,读一个库
    • 使用场景?

    MySQL-Proxy读写分离

     

    • 配置mysql读写分离 
    yum install mysql-server mysql mysql-devel  -y
    • master库的my.cnf
    [mysqld]  
    datadir=/var/lib/mysql  
    socket=/var/lib/mysql/mysql.sock  
    user=mysql 
    # Disabling symbolic-links is recommended to prevent assorted security risks  
    symbolic-links=0 
    log-bin=mysql-bin  
    server-id = 1
    auto_increment_offset=1    
    auto_increment_increment=2
    [mysqld_safe]  
    log-error=/var/log/mysqld.log  
    pid-file=/var/run/mysqld/mysqld.pid   
    replicate-do-db =all
    master my.cnf
    • slave库的my.cnf
    [mysqld]  
    datadir=/var/lib/mysql/
    socket=/var/lib/mysql/mysql.sock  
    user=mysql 
    # Disabling symbolic-links is recommended to prevent assorted security risks  
    symbolic-links=0 
    log-bin=mysql-bin  
    server-id = 2 
    auto_increment_offset=2    
    auto_increment_increment=2
    [mysqld_safe]  
    log-error=/var/log/mysqld.log  
    pid-file=/var/run/mysqld/mysqld.pid  
    master-connect-retry=60 
    replicate-do-db =all
    slave my.cnf
    • 主从同步授权
    • mysql-proxy安装
    wget wget https://downloads.mariadb.com/archives/mysql-proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz  
    useradd -r mysql-proxy
    tar zxvf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz -C /usr/local
    mv /usr/local/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy
    • 设置环境变量
    export PATH=$PATH:/usr/local/mysql-proxy/bin/
    echo "PATH=$PATH:/usr/local/mysql-proxy/bin"
    Mysql-proxy的相关参数如下:
    
    --help-all   :获取全部帮助信息;
    
    --proxy-address=host:port  :代理服务监听的地址和端口;
    
    --admin-address=host:port  :管理模块监听的地址和端口;
    
    --proxy-backend-addresses=host:port :后端mysql服务器的地址和端口;
    
    --proxy-read-only-backend-addresses=host:port :后端只读mysql服务器的地址和端口;
    
    --proxy-lua-script=file_name :完成mysql代理功能的Lua脚本;
    
    --daemon  :以守护进程模式启动mysql-proxy;
    
    --keepalive  :在mysql-proxy崩溃时尝试重启之;
    
    --log-file=/path/to/log_file_name :日志文件名称;
    
    --log-level=level :日志级别;
    
    --log-use-syslog :基于syslog记录日志;
    
    --plugins=plugin:在mysql-proxy启动时加载的插件;
    
    --user=user_name  :运行mysql-proxy进程的用户;
    
    --defaults-file=/path/to/conf_file_name : 默认使用的配置文件路径;其配置段使用[mysql-proxy]标识;
    
    --proxy-skip-profiling : 禁用profile;
    
    --pid-file=/path/to/pid_file_name :进程文件名;
    • 启动mysql-proxy
    mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.1.14:3306" --proxy-read-only-backend-addresses="192.168.1.15:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"
    • 查看端口及测试
    netstat -ntpl |grep mysql-proxy
    mysql -h192.168.1.14 -uadmin -p -P4041
    select * from backends;

    • 使用4040端口进行数据写入和测试即可

    问题:

    mysql-proxy成为单点,解决方案?

  • 相关阅读:
    JabberNet -Jabbber .net客户端框架(XMPP协议)
    百度,腾讯,抖音,头条等互联网平台广告投放策略分析
    C# HttpWebRequest post提交数据
    eclipse汉化babel语言包安装
    C#技巧记录——持续更新
    ffmpeg 抓取屏幕
    WPF inkcanvas选中笔迹缩放、旋转,放大缩小画布、移动画布
    wpf虚线画刷
    wpf获取元素四个角对应的point
    wpf 装饰类
  • 原文地址:https://www.cnblogs.com/jenvid/p/8413430.html
Copyright © 2020-2023  润新知