今天,写写mysql兄弟公司maridb开发的一个读写分离,既然是兄弟,那也适用于mysql。

1、安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
 

2、下载软件

cd /usr/local
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.14.tar.gz

3、添加mysql用户和用户组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

4、解压安装mysql

 
# 创建数据目录
mkdir -p /data/mysql

# 解压boost
tar xzf boost_1_59_0.tar.gz # 解压mysql,编译安装
tar xzf mysql-5.7..tar.gz
cd mysql-5.7.
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDOWNLOAD_BOOST= \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE= \
-DWITH_PARTITION_STORAGE_ENGINE= \
-DWITH_FEDERATED_STORAGE_ENGINE= \
-DWITH_BLACKHOLE_STORAGE_ENGINE= \
-DWITH_MYISAM_STORAGE_ENGINE= \
-DENABLED_LOCAL_INFILE= \
-DENABLE_DTRACE= \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1 make
make install

# 复制到启动项
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on

# 复制配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf # 安装
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

5、添加环境变量

cd ~

vi .profile_bash

PATH=/usr/local/mysql/bin:$PATH

export PATH

6、mysql主从复制(利用gtid特性)

# 关闭selinux和防火墙
systemctl stop firewalld.service
vi /etc/selinux/config
# 配置每个节点配置文件my.cnf
# 添加如下
log-bin=mysql-bin
server-id=
gtid_mode=ON
log_slave_updates
enforce_gtid_consistency
(注:除了server-id每个节点不一样,其它都一样,也必须加,以一般主从复制区别,多了下面的3个参数)
# 主节点添加复制账号
grant replication slave on *.* to 'backup'@'%'identified by'backup';

# 从节点执行
change master to master_host='192.168.10.140', master_user='backup', master_password='backup',master_port=,master_auto_position=;
start slave;

7、maxscale安装

安装依赖
yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -y

MaxScale 的下载地址:

https://downloads.mariadb.com/files/MaxScale

rpm -ivh maxscale-beta-2.0.-.centos..x86_64.rpm
在开始配置之前,需要在 master和backup 中为 MaxScale 创建两个用户,用于监控模块和路由模块。

创建监控用户

mysql> create user scalemon@'%' identified by "123456";

mysql> grant replication slave, replication client on *.* to scalemon@'%';

创建路由用户 

mysql> create user scaleroute@'%' identified by "123456";

mysql> grant select on mysql.* to scaleroute@'%';

用户创建完成后,开始配置

vi /etc/maxscale.cnf
[root@maxscale1 ~]# cat /etc/maxscale.cnf
# MaxScale documentation on GitHub:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Documentation-Contents.md # Global parameters
#
# Complete list of configuration options:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Getting-Started/Configuration-Guide.md [maxscale]
threads=
log_info=
logdir=/tmp/ # Server definitions
#
# Set the address of the server to the network
# address of a MySQL server.
# [server1]
type=server
address=192.168.10.140
port=
protocol=MySQLBackend [server2]
type=server
address=192.168.10.141
port=
protocol=MySQLBackend [server3]
type=server
address=192.168.10.142
port=
protocol=MySQLBackend # Monitor for the servers
#
# This will keep MaxScale aware of the state of the servers.
# MySQL Monitor documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Monitors/MySQL-Monitor.md [MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2,server3
user=scalemon
passwd=
monitor_interval= # Service definitions
#
# Service Definition for a read-only service and
# a read/write splitting service.
# # ReadConnRoute documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadConnRoute.md # [Read-Only Service]
# type=service
# router=readconnroute
# servers=server1
# user=myuser
# passwd=mypwd
# router_options=slave # ReadWriteSplit documentation:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Routers/ReadWriteSplit.md [Read-Write Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=scaleroute
passwd=
max_slave_connections=% # This service enables the use of the MaxAdmin interface
# MaxScale administration guide:
# https://github.com/mariadb-corporation/MaxScale/blob/master/Documentation/Reference/MaxAdmin.md [MaxAdmin Service]
type=service
router=cli # Listener definitions for the services
#
# These listeners represent the ports the
# services will listen on.
# # [Read-Only Listener]
# type=listener
# service=Read-Only Service
# protocol=MySQLClient
# port= [Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port= [MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default

启动

maxscale --config=/etc/maxscale.cnf
查看
注意:这里用的是最新的2.0版本,登录已经不像老版本maxadmin --user=admin --password=mariadb这样了,而是像下面一样:
[root@maxscale1 ~]# maxadmin -S /tmp/maxadmin.sock
MaxScale> list services
Services.
--------------------------+----------------------+--------+---------------
Service Name | Router Module | #Users | Total Sessions
--------------------------+----------------------+--------+---------------
Read-Write Service | readwritesplit | |
MaxAdmin Service | cli | |
--------------------------+----------------------+--------+---------------
命令也有变化,请自行翻墙到Google查看
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168.10.140 | | | Master, Running
server2 | 192.168.10.141 | | | Slave, Running
server3 | 192.168.10.142 | | | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
测试
在其它远程客户端连接maxscale所在服务器的数据库
mysql -h 192.168.10.140 -P4006 -uscalemon -p
mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| maxscale1 |
+------------+
row in set (0.00 sec) 关了一个slave后
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168.10.140 | | | Master, Running
server2 | 192.168.10.141 | | | Slave, Running
server3 | 192.168.10.142 | | | Down
-------------------+-----------------+-------+-------------+--------------------

参考,我是开启翻墙的

 
 

maxscale读写分离的更多相关文章

  1. docker环境 mysql读写分离 mycat maxscale

    #mysql读写分离测试 环境centos 7.4 ,docker 17.12 ,docker-compose mysql 5.7 主从 mycat 1.6 读写分离 maxscale 2.2.4 读 ...

  2. MaxScale:实现MySQL读写分离与负载均衡的中间件利器

    1. MaxScale 是干什么的? 配置好了 MySQL 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡 是MySQL集群的 ...

  3. Maxscale安装-读写分离(1)

    前言 关于MySQL中间件的产品也很多,之前用过了360的Atlas.玩过MyCat.这边我选择 Maxscale的原因就是功能能满足需求,也看好他的未来发展. 其实有关于如何安装 Maxscale的 ...

  4. Mysql - 读写分离与读负载均衡之Maxscale

    一.概述 常见的高可用方案如MMM和MHA等都将重点放在主库上,一旦主库出现故障,通过这些方案能将主库故障进行转移. 本文将给大家介绍一款由mariadb公司出品的中间件Maxscale,该中间件能实 ...

  5. Centos7安装maxscale 实现mysql的读写分离

    安装依赖 yum install -y novacom-server.x86_64 libaio.x86_64 libaio-devel.x86_64 网站下载 https://downloads.m ...

  6. MHA + Maxscale 数据库的高可用和读写分离

    MySQL 常见发行版本 MySQL 标准化.自动化部署 深入浅出MySQL备份与恢复 深入理解MySQL主从复制 MySQL构架设计与容量规划 MHA Maxscale MySQL 常见发行版本 M ...

  7. 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡【转载】

      文章 原始出处 :http://sofar.blog.51cto.com/353572/1601552 ============================================== ...

  8. 基于Keepalived高可用集群的MariaDB读写分离机制实现

    一 MariaDB读写分离机制 在实现读写分离机制之前先理解一下三种主从复制方式:1.异步复制:MariaDB默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库 ...

  9. Atlas+Keepalived实现MySQL读写分离、读负载均衡

    一.基础介绍 ========================================================================================== 1. ...

随机推荐

  1. ADO.NET复习总结(2)--连接池

    1. 2. 3.示例:在一百次循环中,执行数据库连接的打开和关闭,使用stopwatch查看所用的时间. using System; using System.Collections.Generic; ...

  2. Linux pmstat命令

      mpstat是linux一款实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU ...

  3. JAVA 锁之 Synchronied

    ■ Java 锁 1. 锁的内存语义 锁可以让临界区互斥执行,还可以让释放锁的线程向同一个锁的线程发送消息 锁的释放要遵循 Happens-before 原则(锁规则:解锁必然发生在随后的加锁之前) ...

  4. 重温MFC

    1. Button控件 2. 旋转和高级编辑控件 3. 标签控件和属性页 4. 列表控件 5. 树控件 6. 进度条控件和滑动条控件 7. 滚动条 8.工具栏和状态栏

  5. mysql5.7安装配置,常用命令,常见问题

    1.安装配置 参考:http://www.cnblogs.com/Fiona20170420/p/6738185.html 1. 下载 2. 解压缩 3. 添加path环境变量,路径指向mysql所在 ...

  6. Struts2 (二)

    1 自定义结果视图 1.1 自定义一个类实现com.opensymphony.xwork2.Result接口. package com.xuweiwei.action; import com.open ...

  7. PHP date函数详解

    在页面的最前页加上date_default_timezone_set(PRC);   /*把时间调到北京时间,php5默认为格林威治标准时间*/date ()a:   "am"或是 ...

  8. 【转】VMware 克隆 Linux 系统后找不到 eth0 网卡问题

    [问题描述] 使用 VMware 虚拟机的克隆功能,快速复制已安装好的 Linux 系统. 克隆完成之后,发现没有 eth0 网卡. [解决方法] 1. 编辑 /etc/udev/rules.d/70 ...

  9. Mysql高可用架构(主从同步)

    做高可用的优势 1.成本低 2.解决单点故障 3.不容易遇到性能瓶颈 一 .Mysql主从同步架构搭建案例 优点如下:·在业务繁忙阶段,在从服务器上可以执行查询工作(即我们常说的读写分离),降低主服务 ...

  10. js中的语句

    java语句与js的语句一样.1.判断if else/switch <script type=text/javascript> function fun1(){ var num = 10; ...