目录…. 1

早期准备

最初准备

序章

文书档案格式:…. 一

准备4台机器,系统为CentOS release 6.6
Ip分别为192.168.20.121、192.168.20.122、192.168.20.123、192.168.20.124
四台机械分别作为Atlas代理服务,master MySQL,slave MySQL 壹,slave MySQL

下载QiHoo360的Atlas 地址
安装Atlas

准备4台机器,系统为CentOS release 6.6

Atlas是360团伙弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Proxy的某些BUG,并且优化了成百上千事物。而且安装方便。

壹.介绍Atlas及架构图…. 二

下载获得Atlas-XX.el陆.x86_6四.rpm安装文件
sudo rpm –i Atlas-XX.el6.x86_64.rpm安装
安装在/usr/local/mysql-proxy
设置目录分析
bin
可实施文件
encrypt用来加密密码,前边会用到
mysql-proxy是MySQL自个儿的读写分离代理
mysql-proxyd操作Atlas
VERSION
conf
test.cnf配置文件
3个文件为贰个实例,实例名即文件名,运营供给带上那一个实例名
lib依赖包
log记录日志
起首命令:/usr/local/mysql-proxy/bin/mysql-proxyd [实例名] start
终止命令:/usr/local/mysql-proxy/bin/mysql-proxyd [实例名] stop
同理,restart为重启,status为翻动情形
布局文件表明

Ip分别为192.168.20.121、192.168.20.122、192.168.20.123、192.168.20.124

Atlas官方链接:https://github.com/Qihoo360/Atlas/blob/master/README\_ZH.md

2.试验环境…. 三

请查看官方文书档案

四台机器分别作为Atlas代理服务,master MySQL,slave MySQL 一,slave MySQL 2

Atlas下载链接:https://github.com/Qihoo360/Atlas/releases

三.实践案例…. 叁

数据库配置

下载QiHoo360的Atlas 地址

环境:

一.索引结构… ③

1台master二台slave,都要布局同样的用户名密码,且都要可以长距离访问分别进入三台服务器,创设同样的用户名密码,创立数据库test,设置权限

安装Atlas

系统

2.配置Mysql主从… 4

CREATE USER ‘test’@’%’ IDENTIFIED BY ‘test123’;
CREATE USER ‘test’@’localhost’ IDENTIFIED BY ‘test123’;
grant all privileges on test.* to ‘test’@’%’ identified by ‘test123’;
grant all privileges on test.* to ‘test’@’localhost’ identified by
‘test123’;
flush privileges;
着力数据库配置

下载得到Atlas-XX.el陆.x八6_6四.rpm安装文件

IP

三.装置配置Atlas. 八

配置master服务器

sudo rpm –i Atlas-XX.el6.x86_64.rpm安装

配置

4.启动Atlas. 12

找到MySQL配置文件my.cnf,1般在etc目录下修改配置文件

安装在/usr/local/mysql-proxy

CentOS 7.0

伍.查看读写分离效果… 一叁

[mysqld]

设置目录分析

192.168.1.40

 

1对别的布置

bin

Atlas代理服务

1.介绍Atlas及架构图

       Atlas源代码用C语言编写,它对于Web
Server也正是是DB,相对于DB也就是是Client,假若把Atlas的逻辑放到Web
Server程序里去处理,那样会大大扩展Web Server程序的复杂度,同时Web
Server和DB之间的耦合度也一定高,因为只要DB扩展/收缩服务,Web
Server就有希望要产生代码改动,若代码不改造,就得经过中间关系表与心跳机制来有限支撑Server之间的关系,那样会带来质量的消耗,而Atlas是架设在Web
Server与DB之间的二在那之中间件,Web
Server与DB之间的耦合关系放到了Atlas来处理,既做到了灵活也保留了质量,那也是Atlas存在的市场总值。

      
Atlas支持表的水准切分,援助读写分离,对数据实时性必要较高的品种能够在select语句前扩充/*master*/强制读主库

澳门金沙国际 1

主从复制配置

innodb_flush_log_at_trx_commit=1
sync_binlog=1

可实施文件

CentOS 7.0

二.试验环境

mysql master:192.168.200.101
mysql slave :192.168.200.102 
atlas :192.168.200.103

atlas有两个port,分别为

行事端口: proxy-address项配置,例如proxy-address =
0.0.0.0:1234代表客户端应该使用123四这些端口连接Atlas来发送SQL请求。

管理端口: admin-address项配置,例如admin-address =
0.0.0.0:23肆伍代表DBA应该利用234伍以此端口连接Atlas来实践运行管理操作。

二.安装Atlas

 注意:只可以设置在陆拾三人的Linux操作系统上,CentOS官方提议rpm安装方式

须求备份的数据库

binlog-do-db=test

encrypt用来加密密码,前面会用到

192.168.1.50

3.实施案例

不须求备份的数据库

binlog-ignore-db=mysql

mysql-proxy是MySQL自身的读写分离代理

主MySQL数据库

1.目录结构

 bin: 该目录存放atlas运行程序,还有加密脚本

 conf: 该目录则存放atlas.conf配置档,能够有多少个实例

 lib: 该目录存放程序的1对库文件及依赖文件

 log: 该目录则存放实例发生的日记

  安装地方:

   /usr/local/mysql-proxy

    配置文件:

    /usr/local/mysql-proxy/conf/test.cnf

        

 

起步二进制文件 log-bin=mysql-bin

mysql-proxyd操作Atlas

CentOS 7.0

2.配置Mysql主从

整套主机关闭防火墙和S埃利nux

[root@zha ~]# /etc/init.d/iptables stop

iptables: Setting chains to policy ACCEPT: filter    [  OK  ]

iptables: Flushing firewall rules:                   [  OK  ]

iptables: Unloading modules:                         [  OK  ]

[root@zha ~]# setenforce 0

setenforce: SELinux is disabled

 

修改主机名(200.十一)

[root@zha ~]# hostname master

[root@zha ~]# bash

[root@master ~]# vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master

(200.102)

[root@zha ~]# hostname slave

[root@zha ~]# bash

[root@slave ~]# vim /etc/sysconfig/network

(200.103)

[root@zha ~]# hostname Atlas

[root@zha ~]# bash

[root@Atlas ~]# vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=zha

骨干分别用yum安装mysql

[root@master ~]# yum -y install mysql mysql-server

[root@slave ~]# yum -y install mysql mysql-server

着力分别修改配置文件并运营服务

[root@master ~]# vim /etc/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-error=/var/lib/mysql/mysql.err

log=/var/lib/mysql/mysql_log.log

log-slow-queries=/var/lib/mysql/mysql_slow_queris.log

default-character-set=utf8

log-bin=mysql-bin

server-id=1

log-slave-updates

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

[client]

default-character-set=utf8

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

#注意server-id不可能平等

[root@master ~]# /etc/init.d/mysqld start

 

布置主从复制

master操作:

查看file和pos值

mysql> show master status;

+——————+———-+————–+——————+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB
|

+——————+———-+————–+——————+

| mysql-bin.000003 |      106 |              |                  |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

mysql>  grant replication slave on *.* to
‘replication’@’192.168.200.%’ identified by ‘123456’;

Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;

slave操作:

mysql> change master to
master_host=’192.168.200.101′,master_user=’replication’,master_password=’123456′,master_log_file=’mysql-bin.000003′,master_log_pos=106;

Query OK, 0 rows affected (0.09 sec)

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

 

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

(确定保证那俩线程为YES)

大旨配置完成!

 

服务器ID server-id=1

VERSION

192.168.1.41

三.装置配备Atlas

下载地址:https://github.com/Qihoo360/Atlas/releases

[root@Atlas ~]# rpm -ivh Atlas-2.2.1.el5.x86_64.rpm

Preparing…               
###########################################
[100%]

 1:Atlas     
            ###########################################
[100%]

[root@Atlas ~]# vim /usr/local/mysql-proxy/conf/test.cnf

#管住接口的用户名

admin-username = user

 

#治本接口的密码

admin-password = pwd

 

#Atlas后端接连的MySQL主库的IP和端口,可安装多项,用逗号分隔

proxy-backend-addresses = 192.168.200.101:3306

 

#Atlas后端连日来的MySQL从库的IP和端口,@前边的数字代表权重,用来作负载均衡,若省略则默感觉一,可安装多项,用逗号分隔

proxy-read-only-backend-addresses = 192.168.200.102:3305@1

 

#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user二为示范,将其替换为你的MySQL的用户名和加密密码!

pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=

 

#设置Atlas的周转方式,设为true时为护理进度格局,设为false时为前台方式,壹般开采调试时设为false,线上运行时设为true,true前边不可能有空格。

daemon = true

 

#安装Atlas的周转格局,设为true时Atlas会运营八个进度,五个为monitor,贰个为worker,monitor在worker意外退出后会自动将其重启,设为false时唯有worker,未有monitor,一般开拓调节和测试时设为false,线上运转时设为true,true后边无法有空格。

keepalive = true

 

#工作线程数,对Atlas的属性有极大影响,可依照意况适当设置

event-threads = 8

 

#日志品级,分为message、warning、critical、error、debug三个等级

log-level = message

 

#日记存放的路径

log-path = /usr/local/mysql-proxy/log

 

#SQL日志的按钮,可安装为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默觉得OFF

#sql-log = OFF

 

#慢日志输出设置。当设置了该参数时,则日志只输出施行时间超越sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日记。

#sql-log-slow = 10

 

#实例名称,用于同一台机器上多个Atlas实例间的区别

#instance = test

 

#Atlas监听的办事接口IP和端口

proxy-address = 0.0.0.0:1234

 

#Atlas监听的治本接口IP和端口

admin-address = 0.0.0.0:2345

 

#分表设置,此例中person为库名,mt为表名,id为分表字段,三为子表数量,可安装多项,以逗号分隔,若不分表则不须要设置该项

#tables = person.mt.id.3

 

#暗中同意字符集,设置该项后客户端不再须求实践SET NAMES语句

charset = utf8

 

#同意连接Atlas的客户端的IP,能够是纯正IP,也得以是IP段,以逗号分隔,若不设置该项则允许持有IP连接,不然只允许列表中的IP连接

#client-ips = 127.0.0.1, 192.168.1

 

#Atlas前面挂接的LVS的情理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须安装,不然能够不安装

#lvs-ips = 192.168.1.1

改工作端口和管理端口ip为masterip

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0
重启数据库service mysql restart
跻身数据库,配置主从复制的权位

mysql -uroot -p123456
grant replication slave on . to ‘test’@’127.0.0.1’ identified by
‘test123’;
翻看主数据库音信,记住上边包车型大巴File与Position的音讯,它们是用来铺排从数据库的要紧新闻。

mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000002 | 17620976 | test | mysql |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
配置两台salve服务器

找到配置文件my.cnf修改配置文件如下

[mysqld]

由此Atlas实现MySQL读写分离,安排读写分离。conf

从MySQL数据库

4.启动Atlas

[root@Atlas ~]# /usr/local/mysql-proxy/bin/mysql-proxyd test
start

OK: MySQL-Proxy of test is started

假定报错:

/usr/local/mysql-proxy/bin/mysql-proxy: error while loading shared
libraries: libcrypto.so.6: cannot open shared object file: No such file
or directory

error: failed to start MySQL-Proxy of test

那么[root@Atlas ~]# yum provides */libcrypto.so.6   #探求包括
libcrypto.so.6 的安装包

意识缺点和失误那么些

openssl098e-0.9.8e-17.el6.centos.2.x86_64 : A

     …: compatibility version of a general

     …: cryptography and TLS library

Repo        : c6-media

Matched from:

Filename    : /usr/lib64/libcrypto.so.6

安装 [root@Atlas ~]# yum -y install
openssl098e-0.9.8e-17.el6.centos.2.x86_64

[root@Atlas ~]# ln -s  libcrypto.so.0.9.8e libcrypto.so.6 
#始建连接文件

 

给Atlas暗许用户授权

master和slave操作:

mysql>  grant replication slave on *.* to ‘user’@’192.168.200.%’
identified by ‘pwd’;

Query OK, 0 rows affected (0.04 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.12 sec)

局地其余布置

test.cnf配置文件

伍.查看读写分离效果

[root@Atlas ~]# cat /usr/local/mysql-proxy/log/test.log

2018-05-04 16:40:53: (message) proxy listening on port 0.0.0.0:1234

2018-05-04 16:40:53: (message) added read/write backend:
192.168.200.101:3306

2018-05-04 16:40:53: (message) added read-only backend:
192.168.200.102:3305

 

几台服务器不能够同一 server-id=2

叁个文件为3个实例,实例名即文件名,运转必要带上这么些实例名

  1. 数据库的配置

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0
跻身数据库,配置从数据库的新闻,那里输入刚才记录下来的File与Position的消息,并且在从服务器上实践(实施的时候,#行不要复制进去):

lib依赖包

亟需进入50与四壹数据库中配置用户名与密码,用户必须是长距离能够访问的用户,配置格局如下:

master数据库的ip

mysql> change master to master_host=’192.168.20.122′,

# master的用户名         master_user='buck',         # 密码         master_password='hello',         # 端口         master_port=3306,         # master数据库的`File `         master_log_file='mysql-bin.000002',         # master数据库的`Position`         master_log_pos=17620976,         master_connect_retry=10;

起头进度

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
反省主从复制状态,要见到下列Slave_IO_Running、Slave_SQL_Running的音信中,四个都是Yes,才证实为主连接正确,借使有贰个是No,必要重新鲜明刚才记录的日志消息,停掉“stop
slave”重新展开配置基本连接。

mysql> show slave status G;

  1. row **

         Slave_IO_State: Waiting for master to send event                Master_Host: 192.168.246.134                Master_User: buck                Master_Port: 3306              Connect_Retry: 10            Master_Log_File: mysql-bin.000002        Read_Master_Log_Pos: 17620976             Relay_Log_File: mysqld-relay-bin.000002              Relay_Log_Pos: 251      Relay_Master_Log_File: mysql-bin.000002           Slave_IO_Running: Yes          Slave_SQL_Running: Yes            Replicate_Do_DB:         Replicate_Ignore_DB:          Replicate_Do_Table:      Replicate_Ignore_Table:     Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table:                  Last_Errno: 0                 Last_Error:                Skip_Counter: 0        Exec_Master_Log_Pos: 17620976            Relay_Log_Space: 407            Until_Condition: None             Until_Log_File:               Until_Log_Pos: 0         Master_SSL_Allowed: No         Master_SSL_CA_File:          Master_SSL_CA_Path:             Master_SSL_Cert:           Master_SSL_Cipher:              Master_SSL_Key:       Seconds_Behind_Master: 0
    

Master_SSL_Verify_Server_Cert: No

         Last_IO_Errno: 0              Last_IO_Error:              Last_SQL_Errno: 0             Last_SQL_Error:

1 row in set (0.00 sec)

ERROR:
No query specified
Atlas配置

行使Atlas的加密工具对上边用户的密码进行加密

/usr/local/mysql-proxy/bin/encrypt test123
29uENYYsKLo=
配置atlas

那是用来报到到Atlas的领队的账号与密码,与之对应的是Atlas监听的保管接口IP和端口,也正是说须求安装管理员登入的端口,本领进入管理员分界面,暗中同意端口是23四伍,也得以钦命IP登入,钦命IP后,其余的IP无法访问管理员的通令分界面。方便测试,作者那里未有点名IP和端口登6。配置主数据的地址与从数据库的地点,那里配置的主数据库是12二,从数据库是1二3、1二四

log记录日志

第2进入到50的MySQL数据库中,成立用户“buck”设置密码为“hello”下列标红的是用户与密码。

Atlas后端连连的MySQL主库的IP和端口,可设置多项,用逗号分隔

proxy-backend-addresses = 192.168.20.122:3306

起步命令:/usr/local/mysql-proxy/bin/mysql-proxyd [实例名] start

mysql> grant all on *.* tobuck@’127.0.0.1′ identified by
“hello”;Query OK, 0 rows affected (0.00 sec)

Atlas后端接连的MySQL从库的IP和端口,@后边的数字代表权重,用来作负载均衡,若省略则私下认可为1,可安装多项,用逗号分隔

proxy-read-only-backend-addresses =
192.168.20.123:3306@1,192.168.20.124:3306@2
以此是用来布置MySQL的账户与密码的,正是地点成立的用户,用户名是test,密码是test1二三,刚刚使用Atlas提供的工具生成了对应的加密密码

pwds = buck:RePBqJ+5gI4=启动Atlas

root[@localhost /usr/local/mysql-proxy/bin]# ./mysql-proxyd test
start
OK: MySQL-Proxy of test is started
测试

跻身atlas的军管分界面

root[@localhost ~]#mysql -h127.0.0.1 -P2345 -uuser -ppwd
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.99-agent-admin

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

Other names may be trademarks of their respectiveowners.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input
statement.

mysql> select * from help;
+—————————-+———————————————————+
| command | description |
+—————————-+———————————————————+
| SELECT * FROM help | shows this help |
| SELECT * FROM backends | lists the backends and their state |
| SET OFFLINE $backend_id | offline backend server, $backend_id is
backend_ndx’s id |
| SET ONLINE $backend_id | online backend server, … |
| ADD MASTER $backend | example: “add master 127.0.0.1:3306”, … |
| ADD SLAVE $backend | example: “add slave 127.0.0.1:3306”, … |
| REMOVE BACKEND $backend_id | example: “remove backend 1”, … |
| SELECT * FROM clients | lists the clients |
| ADD CLIENT $client | example: “add client 192.168.1.2”, … |
| REMOVE CLIENT $client | example: “remove client 192.168.1.2”, … |
| SELECT * FROM pwds | lists the pwds |
| ADD PWD $pwd | example: “add pwd user:raw_password”, … |
| ADD ENPWD $pwd | example: “add enpwd user:encrypted_password”, …
|
| REMOVE PWD $pwd | example: “remove pwd user”, … |
| SAVE CONFIG | save the backends to config file |
| SELECT VERSION | display the version of Atlas |
+—————————-+———————————————————+
16 rows in set (0.00 sec)

mysql> 使用事业接口来走访

[root@localhost ~]#mysql -h127.0.0.1 -P1234 -utest -ptest123
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 34
Server version: 5.0.81-log MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

Other names may be trademarks of their respectiveowners.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input
statement.

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| test |
+——————–+
4 rows in set (0.00 sec)

mysql>
运用可视化管理工具Navicat登陆
小说权归作者全部。商业转发请联系小编得到授权,非商业转发请注脚出处。互连网+时代,时刻要维持学习,携手千锋PHP,Dream
It Possible。

悬停命令:/usr/local/mysql-proxy/bin/mysql-proxyd [实例名] stop

修改buck的访问权限,首先得进去mysql数据库,技术改改host权限的新闻

同理,restart为重启,status为翻动景况

# 进入数据库

布置文件表达

mysql> use mysql

请查看官方文书档案

Database changed

数据库配置

# 修改host权限为”%”

1台master二台slave,都要配备一样的用户名密码,且都要能够中远距离访问分别进入三台服务器,创设一样的用户名密码,成立数据库test,设置权限

mysql> update user set host = ‘%’ where user = ‘buck’;

CREATE USER ‘test’@’%’ IDENTIFIED BY ‘test123’;

Query OK, 1 row affected (0.00 sec)

CREATE USER ‘test’@’localhost’ IDENTIFIED BY ‘test123’;

Rows matched: 1  Changed: 1  Warnings: 0

grant all privileges on test.* to ‘test’@’%’ identified by ‘test123’;

查阅一下user表,看看修改成功了并未有。能够看来,buck的用户,host已经修改成都百货分号了。

grant all privileges on test.* to ‘test’@’localhost’ identified by
‘test123’;

mysql> select user, host from user;

flush privileges;

+——+———————–+

大旨数据库配置

| user | host                  |

配置master服务器

+——+———————–+

找到MySQL配置文件my.cnf,一般在etc目录下修改配置文件

| buck | %                    |

[mysqld]

| root | 127.0.0.1            |

# 一些别的安顿

|      | localhost            |

| root | localhost            |

#主从复制配置

|      | localhost.localdomain |

innodb_flush_log_at_trx_commit=1

| root | localhost.localdomain |

sync_binlog=1

+——+———————–+

#供给备份的数据库

6 rows in set (0.00 sec)

binlog-do-db=test

履新数据库音讯,假诺没更新数据库的新闻,修改不会即刻生效,那就须求重启数据库了。那边平昔更新数据库的音讯,能够幸免重启。

#不须求备份的数据库

mysql>  flush privileges;

binlog-ignore-db=mysql

Query OK, 0 rows affected (0.00 sec)

#开发银行贰进制文件log-bin=mysql-bin

宗旨MySQL都亟需创设3个数据库,笔者那开创的数据库是“test”,为了便于测试读写分离

#服务器IDserver-id=1

mysql> create database test;

# Disabling symbolic-links is recommended to prevent assorted security
risks

Query OK, 1 row affected (0.00 sec)

symbolic-links=0

【证明:50数据库与四一的数据库一样配备】

重启数据库service mysql restart

跻身数据库,配置主从复制的权杖

  1. 大旨数据库连接

mysql -uroot -p123456

配置基本服务器须求编写制定MySQL的配备文件,实际情况配置步骤如下:

grant replication slave on.to ‘test’@’127.0.0.1’ identified by
‘test123’;

主服务器 ( 192.168.1.50 ),使用vim进行布局

查阅主数据库消息,记住下边包车型地铁File与Position的音信,它们是用来布局从数据库的显要消息。

[mysqld]

mysql> show master status;

datadir=/data/mysql

+——————+———-+————–+——————+

socket=/var/lib/mysql/mysql.sock

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

user=mysql

+——————+———-+————–+——————+

#主从复制配置

| mysql-bin.000002 | 17620976 | test | mysql |

innodb_flush_log_at_trx_commit=1

+——————+———-+————–+——————+

sync_binlog=1

1 row in set (0.00 sec)

#急需备份的数据库

配备两台salve服务器

binlog-do-db=test

找到配置文件my.cnf修改配置文件如下

#不供给备份的数据库

[mysqld]

binlog-ignore-db=mysql

# 一些别的陈设

#起步二进制文件

log-bin=mysql-bin

# 几台服务器不能够一如既往server-id=贰

#服务器ID

# Disabling symbolic-links is recommended to prevent assorted security
risks

server-id=1

symbolic-links=0

# Disabling symbolic-links is recommended to prevent assorted security
risks

跻身数据库,配置从数据库的新闻,那里输入刚才记录下来的File与Position的新闻,并且在从服务器上施行(推行的时候,#行不要复制进去):

symbolic-links=0

# master数据库的ip

[mysqld_safe]

mysql> change master to master_host=’192.168.20.122′,

log-error=/var/log/mysqld.log

# master的用户名        master_user=’buck’,        # 密码       
master_password=’hello’,        # 端口        master_port=3306,     
  # master数据库的`File `       
master_log_file=’mysql-bin.000002′,        #
master数据库的`Position`        master_log_pos=17620976,       
master_connect_retry=10;

pid-file=/var/run/mysqld/mysqld.pid

运营进度

【主意:若未有配置binlog-do-db和binlog_ignore_db,表示备份全部数据库。】

mysql> start slave;

重启mysqld服务

Query OK, 0 rows affected (0.00 sec)

[root@localhost bin]# /etc/init.d/mysqld restart

自作者批评主从复制状态,要观望下列Slave_IO_Running、Slave_SQL_Running的音信中,七个都以Yes,才证实为主连接正确,假诺有三个是No,必要再行鲜明刚才记录的日志消息,停掉“stop
slave”重新进行布局基本连接。

进入数据库,配置主从复制的权限

mysql> show slave status G;

mysql> grant replication slave on *.* to ‘buck’@’127.0.0.1’
identified by ‘hello’;

**1. row********

Query OK, 0 rows affected (0.00 sec)

Slave_IO_State:WaitingformastertosendeventMaster_Host:192.168.246.134Master_User:buckMaster_Port:3306Connect_Retry:10Master_Log_File:mysql-bin.000002Read_Master_Log_Pos:17620976Relay_Log_File:mysqld-relay-bin.000002Relay_Log_Pos:251Relay_Master_Log_File:mysql-bin.000002Slave_IO_Running:YesSlave_SQL_Running:YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno:0Last_Error:Skip_Counter:0Exec_Master_Log_Pos:17620976Relay_Log_Space:407Until_Condition:NoneUntil_Log_File:Until_Log_Pos:0Master_SSL_Allowed:NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master:0

锁定数据库

Master_SSL_Verify_Server_Cert: No

mysql> flush tables with read lock;

Last_IO_Errno:0Last_IO_Error:Last_SQL_Errno:0Last_SQL_Error:

Query OK, 0 rows affected (0.00 sec)

1 row in set (0.00 sec)

查阅主数据库音信,记住上面的“File”与“Position”的新闻,它们是用来配置从数据库的根本新闻。能够见到下边一齐的数据库的“test”数据库,主从数据库借使数额不雷同,首先必要手动去联合一下数据,小编在Windows环境下只用Navicat复制的多少,那里就不演示了。

ERROR:

mysql> show master status;

No query specified

+——————+———-+————–+——————+

Atlas配置

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |

动用Atlas的加密工具对地点用户的密码进行加密

+——————+———-+————–+——————+

/usr/local/mysql-proxy/bin/encrypt test123

| mysql-bin.000001 | 589      | test        | mysql            |

29uENYYsKLo=

+——————+———-+————–+——————+

配置atlas

1 row in set (0.00 sec)

那是用来报到到Atlas的管理人的账号与密码,与之相应的是Atlas监听的管制接口IP和端口,也正是说须求设置管理员登陆的端口,技术跻身管理员分界面,默许端口是23四伍,也足以钦赐IP登入,钦定IP后,其余的IP不可能访问管理员的一声令下分界面。方便测试,作者那里未有点名IP和端口登录。配置主数据的地点与从数据库的地方,那里配置的主数据库是12二,从数据库是1贰叁、1贰肆

从劳动器 ( 1玖2.16八.一.4一),也急需采纳vim举行安排,只必要在[mysqld]上边进入server-id=2就能够,全体配置如下:

#Atlas后端总是的MySQL主库的IP和端口,可安装多项,用逗号分隔

[mysqld]

proxy-backend-addresses = 192.168.20.122:3306

datadir=/var/lib/mysql

#Atlas后端连连的MySQL从库的IP和端口,@前边的数字代表权重,用来作负载均衡,若省略则暗中同意为壹,可安装多项,用逗号分隔

socket=/var/lib/mysql/mysql.sock

proxy-read-only-backend-addresses =
192.168.20.123:3306@1,192.168.20.124:3306@2

user=mysql

其1是用来配置MySQL的账户与密码的,便是地点创设的用户,用户名是test,密码是test1二叁,刚刚使用Atlas提供的工具生成了相应的加密密码

server-id=2

pwds = buck:RePBqJ+5gI4=启动Atlas

# Disabling symbolic-links is recommended to prevent assorted security
risks

[root[@localhost](
./mysql-proxyd test start

symbolic-links=0

OK: MySQL-Proxy of test is started

[mysqld_safe]

测试

log-error=/var/log/mysqld.log

进入atlas的保管分界面

pid-file=/var/run/mysqld/mysqld.pid

[root[@localhost](
-h127.0.0.1 -P2345 -uuser -ppwd

进入数据库,配置从数据库的音信,那里输入刚才记录下来的“File”与“Position”的信息,并且在从服务器上实行:

Welcome to the MySQL monitor. Commands end with ; or g.

mysql> change master to master_host=’192.168.246.134′

Your MySQL connection id is 1

主服务器的IP

Server version: 5.0.99-agent-admin

master_user=’buck’

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

配置主服务器的用户名

Oracle is a registered trademark of Oracle Corporation and/or its

master_password=’hello’

Other names may be trademarks of their respectiveowners.

对应用户的密码

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input
statement.

master_port=3306

mysql> select * from help;

主服务器的mysql端口

+—————————-+———————————————————+

master_log_file=’mysql-bin.000001′

| command | description |

日志文件的称谓,需求与主服务器对应

+—————————-+———————————————————+

master_log_pos=589

| SELECT * FROM help | shows this help |

日记地点,供给与主服务器对应

| SELECT * FROM backends | lists the backends and their state |

master_connect_retry=20

| SET OFFLINE $backend_id | offline backend server, $backend_id is
backend_ndx’s id |

重连次数

| SET ONLINE $backend_id | online backend server, … |

mysql> change master to master_host=’192.168.1.50′,

| ADD MASTER $backend | example: “add master 127.0.0.1:3306”, … |

-> master_user=’buck’,

| ADD SLAVE $backend | example: “add slave 127.0.0.1:3306”, … |

-> master_password=’hello’,

| REMOVE BACKEND $backend_id | example: “remove backend 1”, … |

-> master_port=3306,

| SELECT * FROM clients | lists the clients |

-> master_log_file=’mysql-bin.000001′,

| ADD CLIENT $client | example: “add client 192.168.1.2”, … |

-> master_log_pos=589,

| REMOVE CLIENT $client | example: “remove client 192.168.1.2”, … |

-> master_connect_retry=20;

| SELECT * FROM pwds | lists the pwds |

Query OK, 0 rows affected (0.01 sec)

| ADD PWD $pwd | example: “add pwd user:raw_password”, … |

澳门金沙国际,运行进度

| ADD ENPWD $pwd | example: “add enpwd user:encrypted_password”, … |

mysql> start slave;

| REMOVE PWD $pwd | example: “remove pwd user”, … |

Query OK, 0 rows affected (0.00 sec)

| SAVE CONFIG | save the backends to config file |

反省主从复制状态,要察看下列标红的新闻中,五个都以Yes,才表达为主连接正确,借使有一个是No,须要重新规定刚才记录的日志音讯,停掉“stop
slave”重新张开安顿基本连接。

| SELECT VERSION | display the version of Atlas |

mysql> show slave status
\G;*************************** 1. row
***************************             
Slave_IO_State: Waiting for master to send event                 
Master_Host: 192.168.246.134                  Master_User: buck       
          Master_Port: 3306                Connect_Retry: 10         
    Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos:
589              Relay_Log_File: mysqld-relay-bin.000001             
  Relay_Log_Pos: 251        Relay_Master_Log_File:
mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running:
YesReplicate_Do_DB:          Replicate_Ignore_DB:           
Replicate_Do_Table:        Replicate_Ignore_Table:     
Replicate_Wild_Do_Table:  Replicate_Wild_Ignore_Table:           
        Last_Errno: 0                  Last_Error:                 
Skip_Counter: 0          Exec_Master_Log_Pos: 17620976             
Relay_Log_Space: 407              Until_Condition: None             
Until_Log_File:                Until_Log_Pos: 0         
Master_SSL_Allowed: No          Master_SSL_CA_File:           
Master_SSL_CA_Path:              Master_SSL_Cert:           
Master_SSL_Cipher:                Master_SSL_Key:       
Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No         
      Last_IO_Errno: 0                Last_IO_Error:               
Last_SQL_Errno: 0              Last_SQL_Error: 1 row in set (0.00
sec)ERROR: No query specified

+—————————-+———————————————————+

能够进去主数据库,运转以下命令,测试大旨服务的实效。

16 rows in set (0.00 sec)

mysql> use test;

mysql>使用工作接口来拜会

mysql> create table wl(id int(4),sex varchar(255),birthday date);

[root@localhost ~]#mysql -h127.0.0.1 -P1234 -utest -ptest123

跻身从库

Welcome to the MySQL monitor. Commands end with ; or g.

mysql> show tables;

Your MySQL connection id is 34

+—————-+

Server version: 5.0.81-log MySQL Community Server (GPL)

| Tables_in_test |

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

+—————-+

Oracle is a registered trademark of Oracle Corporation and/or its

| wl |

Other names may be trademarks of their respectiveowners.

+—————-+

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input
statement.

1 row in set (0.00 sec)

mysql> show databases;

mysql>

+——————–+

  1. Atlas配置

| Database |

下载Atlas会有多个本子,个中有个分表的本子,不过这一个必要其余的借助,作者那边不必要分表那种须要,所以安装普通的本子

+——————–+

Atlas (普通)
:Atlas-2.2.1.el6.x86_64.rpm

| information_schema |

Atlas (分表)
:Atlas-sharding_1.0.1-el6.x86_64.rpm

| mysql |

第二进入Linux的Home目录下,下载非分表的安装包

| performance_schema |

[root@localhost ~]# mkdir /demo/atlas

| test |

[root@localhost ~]# cd /demo/atlas[root@localhost home]#
wgethttps://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

+——————–+

下载好了后来,举办设置

4 rows in set (0.00 sec)

[root@localhost home]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm

mysql>

Preparing…               
###########################################
[100%]

选取可视化管理工科具Navicat登陆

1:Atlas                 
###########################################
[100%]

文章权归小编全数。商业转发请联系我获得授权,非商业转发请评释出处。网络+时代,时刻要保持学习,携手千锋PHP,Dream
It Possible。

设置好了,它会私下认可在”/usr/local/mysql-proxy”下给你转移四个文本夹,以及供给配备的文本,如下:

[root@localhost home]# ll /usr/local/mysql-proxy/total 16drwxr-xr-x.
2 root root 4096 Dec 28 10:47bindrwxr-xr-x. 2 root root 4096 Dec 28
10:47confdrwxr-xr-x. 3 root root 4096 Dec 28 10:47libdrwxr-xr-x. 2 root
root 4096 Dec 17  2014log

bin目录下放的都以可奉行文件

  1. “encrypt”是用来生成MySQL密码加密的,在计划的时候会用到

  2. “mysql-proxy”是MySQL自个儿的读写分离代理

三.
“mysql-proxyd”是360弄出来的,后边有个“d”,服务的启航、重启、甘休。都以用她来推行的

conf目录下放的是计划文件

  1. “test.cnf”唯有三个文件,用来布局代理的,能够动用vim来编排

lib目录下放的是部分包,以及Atlas的重视

log目录下放的是日记,如报错等错误消息的记录

进去bin目录,使用encrypt来对数据库的密码实行加密,小编的MySQL数据的用户名是buck,密码是hello,我须要对密码举办加密

[root@localhost bin]# ./encrypt 123456

/iZxz+0GRoA=

陈设Atlas,使用vim举行编辑

[root@localhost conf]# cd /usr/local/mysql-proxy/conf/

[root@localhost conf]# vim test.cnf

进入后,能够在Atlas举办配备,360写的中文注释都很详细,依据注释来布局音讯,当中相比根本,必要验证的布置如下:

那是用来报到到Atlas的指挥者的账号与密码,与之相应的是“#Atlas监听的管制接口IP和端口”,也正是说供给设置管理员登入的端口,手艺进来管理员分界面,暗中认可端口是2345,也得以钦赐IP登陆,钦命IP后,别的的IP无法访问管理员的吩咐界面。方便测试,作者那里没有点名IP和端口登陆。

#管制接口的用户名

admin-username = user

#治本接口的密码

admin-password = pwd

那是用来配置主数据的地点与从数据库的地点,那里配置的主数据库是13伍,从数据库是13肆

#Atlas后端连年的MySQL主库的IP和端口,可安装多项,用逗号分隔

proxy-backend-addresses = 192.168.1.50:3306

#Atlas后端接连的MySQL从库的IP和端口,@前面包车型客车数字代表权重,用来作负载均衡,若省略则暗中认可为1,可安装多项,用逗号分隔

proxy-read-only-backend-addresses = 192.168.1.41:3306@1

那个是用来布署MySQL的账户与密码的,笔者的MySQL的用户是buck,密码是hello,刚刚使用Atlas提供的工具生成了相应的加密密码

#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user一和user二为示范,将其替换为你的MySQL的用户名和加密密码!

pwds = buck:/iZxz+0GRoA=

那是安装工作接口与管理接口的,假使ip设置的”0.0.0.0”正是说任意IP都得以访问这么些接口,当然也足以钦赐IP和端口,方便测试本人那边未有点名,职业接口的用户名密码与MySQL的账户对应的,管理员的用户密码与地点配置的管理人的用户密码对应。

#Atlas监听的行事接口IP和端口

proxy-address = 0.0.0.0:1234

#Atlas监听的管住接口IP和端口

admin-address = 0.0.0.0:2345

启动Atlas

[root@localhost bin]# pwd

/usr/local/mysql-proxy/bin

[root@localhost bin]# ./mysql-proxyd test start

OK: MySQL-Proxy of test is started

测试一下Atlas服务器的MySQL状态,要认可它是倒闭状态,并且动用mysql命令,进不去数据库,前提是Atlas服务器也急需装mysql,直接运维 yum -y install mysql
就足以了。我们那里只要求mysql这么些命令好使,就足以了。

[root@localhost bin]# /etc/init.d/mysqld status

mysqld is stopped

[root@localhost bin]# mysql

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’ (2)

鲜明系统中自带的MySQL进不去了,使用如下命令,进入Atlas的管理情势“mysql
-h127.0.0.壹 -P2345 -uuser
-ppwd ”,能进来阐明Atlas平常运作着啊,因为它会把团结当成一个MySQL数据库,所以在不需求数据库环境的情状下,也得以进来到MySQL数据库格局。

[root@localhost bin]# mysql -h127.0.0.1 -P2345 -uuser -ppwd

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.0.99-agent-admin

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input
statement.

mysql>

能够访问“help”表,来看MySQL管理员形式都能做些什么。可以运用SQL语句来访问

mysql> select * from help;

+—————————-+———————————————————+

| command                    | description                             
              |

+—————————-+———————————————————+

| SELECT * FROM help        | shows this help                         
              |

| SELECT * FROM backends    | lists the backends and their state       
              |

| SET OFFLINE $backend_id    | offline backend server, $backend_id is
backend_ndx’s id |

| SET ONLINE $backend_id    | online backend server, …               
              |

| ADD MASTER $backend        | example: “add master 127.0.0.1:3306”,
…              |

| ADD SLAVE $backend        | example: “add slave 127.0.0.1:3306”, … 
              |

| REMOVE BACKEND $backend_id | example: “remove backend 1”, …       
                |

| SELECT * FROM clients      | lists the clients                       
              |

| ADD CLIENT $client        | example: “add client 192.168.1.2”, …   
              |

| REMOVE CLIENT $client      | example: “remove client 192.168.1.2”,
…              |

| SELECT * FROM pwds        | lists the pwds                           
              |

| ADD PWD $pwd              | example: “add pwd user:raw_password”,
…              |

| ADD ENPWD $pwd            | example: “add enpwd
user:encrypted_password”, …      |

| REMOVE PWD $pwd            | example: “remove pwd user”, …         
              |

| SAVE CONFIG                | save the backends to config file         
              |

| SELECT VERSION            | display the version of Atlas             
              |

+—————————-+———————————————————+

16 rows in set (0.00 sec)

mysql>

也得以选取工作接口来走访,使用命令“mysql -h12柒.0.0.一 -P123肆 -ubuck
-phello”

[root@localhost bin]# mysql -h127.0.0.1 -P1234 -ubuck -phello

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.0.81-log

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input
statement.

mysql>

您能够让数据库某一台down掉,来测试监察和控制的可用性。从那里能够见到大家的督察是好使的,啦啦啦啦!!

澳门金沙国际 2

一经工作接口能够进去了,就可以在Windows平台下,使用Navicat来连接数据库,填写对应的host,Port,用户名,密码就能够

澳门金沙国际 3

  1. 读写分离测试

这边测试读写分离供给采纳到Jmeter了,它是Java写第二套开源的压力测试工具,因为那几个比较便于。他有尤其测试MySQL的模块,供给选用MySQL的JDBC驱动jar包,配置非常粗略,东西很好很庞大很好用。

Jmeter下载地址:http://jmeter.apache.org/download\_jmeter.cgi

MySQL的JDBC 
:http://dev.mysql.com/downloads/connector/j/

下载下来后,分别都解压开来,张开Jmeter ( 在bin路面下的jmeter.bat )
,在测试安顿中,导致JDBC的jar包

澳门金沙国际 4

配置JDBC的驱动

澳门金沙国际 5

分别做询问与插入语句

澳门金沙国际 6

布置好了现在,就先运营查询操作,然后分别监察和控制主数据库与从数据库所在机器的流量,来规定是还是不是读写,使用“sar
-n DEV 1 一千0”命令来监督读写

先来测试写,近来数据Curry面一条音信都未有,开启配置好了的Jmeter,进行写入数据测试

澳门金沙国际 7

主数据库 ( 1玖二.16捌.一.50 )

从数量库 ( 1玖2.16八.壹.肆一 )

能够看来测试插入数据的操作时,主数据库的网卡流量十分大,从数据库的流量非常的小,是应为主数据是重大担负写入的,而从数据库重点是承受同步的。

澳门金沙国际 8

查阅数据库,发现已经插入了6W多条数据了。

澳门金沙国际 9

展开读取数据的测试,只须求施行查询就好,执行“select *from
sbtest;”来查询数据表

主数据库 ( 1玖二.168.一.50 )

从数据库 ( 1玖贰.16捌.1.4一 )

能够看出135(50)数据库的流量十分大,13四(肆一)未有何流量,那下就足以鲜明了数量是从数据库读取的。已经完结了读写分离。

澳门金沙国际 10

相关文章