zoukankan      html  css  js  c++  java
  • CentOs Mysql主从复制与读写分离proxy

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

    Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。

    因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。

    原理架构图

    开始搭建主从复制

    服务器二台:

    分别安装二台Mysql数据库

    1:安装命令

    yum –y install mysql-server

    2:配置登陆用户的密码

    演示此操作

    3:配置允许第三方机器访问本机Mysql

    演示此操作

    场景描述:

    主数据库服务器:192.168.1.112,MySQL已经安装,并且无应用数据。
    从数据库服务器:192.168.1.115,MySQL已经安装,并且无应用数据。

    Mysql配置

    1) vim /etc/my.cnf

    2)

    3) 接下来确认slave和master的上的server_id是否正确。可以分别在slave和master上运行 SHOW VARIABLES LIKE 'server_id'; 来查看server_id是否和你配置的一样。

    4) 分别重新启动master,slaver的二台mysql服务

    5) 登陆

    6) 输入

    7) Mysql>  SHOW VARIABLES LIKE 'server_id'; 

    8) 来查看server_id是否和你配置的一样。

    9) master输入

    10) Mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 | 106 | | |
    +------------------+----------+--------------+------------------+

    11) 记录下 FILE 及 Position 的值,在后面进行从服务器操作的时候需要用到。

    12) 配置从服务器

    change master to 

    master_host='192.168.0.104',

    master_user='root',

    master_password='root',

    master_log_file='mysql-bin.000001',

    master_log_pos=106;

    13) 正确执行后启动Slave同步进程

    14) 启动slave

    mysql> start slave;

    15) 查看slave状态

    mysql> show slave statusG

    其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

    测试主从复制

    1:先确定主,从库上没有任何自定义表

    2:主服务器上的操作
    在主服务器上创建数据库itcast_db
    mysql> create database itcast_db;

    在主服务器上创建表itcast_tb
    mysql> create table itcast_tb(id int(3),name char(10));

    在主服务器上的表itcast_tb中插入记录
    mysql> insert into itcast_tb values (01, "itcast01");

    3:从服务器上查看是否已经同步?

    总结:搭建过程中可能引起失败的原因

    1:server_id 配置的一样或是配置的没有更新到Mysql数据中来

    2:防火墙拦截了3306端口

    3:用户与密码不正确

    4:Mysql不允许其它机器访问

    开始搭建读写分离

    准备:

    服务器三台:

    1:安装二台Mysql数据库(已经安装)

    2:安装mysql-proxy,mysql

    场景描述:
    数据库Master主服务器:192.168.1.112
    数据库Slave从服务器:  192.168.1.115
    MySQL-Proxy调度服务器:192.168.1.101

    以下操作,均是在192.168.1.101即MySQL-Proxy调度服务器上进行的。

    检查Lua是否已经安装

    MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua。

    rpm -ql lua 

    安装Mysql-Proxy

     

    tar xzvf mysql-proxy-0.8.4.tar.gz –C /user/local/src

    cd /user/local/src/mysql-proxy-0.8.4/bin

    ./mysql-proxy –help-all

    修改读写分离脚本rw-splitting.lua

    修改默认连接,进行快速测试,不修改的话要达到连接数为4时才启用读写分离
    vim /opt/mysql-proxy/scripts/rw-splitting.lua
    =============================
    -- connection pool
    if not proxy.global.config.rwsplit then
    proxy.global.config.rwsplit = {
    min_idle_connections = 1, //默认为4
    max_idle_connections = 1, //默认为8
    is_debug = false
    }
    end

  • 相关阅读:
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Navicat查询哪些表有指定字段名
  • 原文地址:https://www.cnblogs.com/robbinluobo/p/8294822.html
Copyright © 2011-2022 走看看