设为首页 收藏本站
查看: 750|回复: 0

[经验分享] mysql基于mysql-proxy和amoeba的读写分离以及tcpdump+wireshark工具验证(上)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-29 08:14:53 | 显示全部楼层 |阅读模式



                                                      
mysql基于mysql-proxy和amoeba的读写分离
以及tcpdump+wireshark工具验证


【实验部署准备】
1,首先对后端节点部署主从关系。
2,然后前端MySQL-proxy对后端进行读写分离。
3.后端各节点都要授权
4.
三个节点保持时间一致
[iyunv@node3 ~]# crontab -e          #####时间一致性

*/3 * * * */usr/sbin/ntpdate 172.16.0.1 &> /dev/null
wKioL1TGeSvQ4ZV8AADCn56DkgE923.jpg

###############################对后端节点做主从复制#################################################
############注意对于mysql的安装这里不再介绍,直接进入配置。
###########################修改主节点配置文件########################################################
1
2
3
4
5
6
7
8
9
10
11
[iyunv@director2 ~ ]#vim /etc/mysql/my.cn
[mysqld]
42 thread_concurrency= 8
43 innodb_file_per_table = on
44 datadir = /mydata                ###############库目录
45 skip_name_resolve = on           ###############不反解主机名
59 log-bin=mysql-bin                ###############启用二进制日志
67 server-id   = 1                  ###############唯一ID

[iyunv@director2 ~ ]# chkconfig --list mysqld            #####保证mysqld的开启自启动
mysqld  0:off        1:off        2:on        3:on        4:on        5:on        6:off



############################授权一个有复制权限的用户给从节点######################################
1
2
3
4
mysql>grant replication client,replication slave on *.* to 'cpuser'@'172.16.249.141' identified by "magedu";
Query OK, 0 rows affected (0.08 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)



###########################从节点准备##############################################################
1
2
3
4
5
6
[iyunv@node2 ~ ]# groupadd -g 306 mysql
[iyunv@node2 ~ ]# useradd -g 306 -u 306 mysql
[iyunv@node2 ~ ]# mkdir /mydata
[iyunv@node2 ~ ]# cd /mydata/
[iyunv@node2 / ]# chown -R mysql:mysql /mydata/
[iyunv@node2 / ]# chmod -R a+w /mydata/



###########################把mysql文件传输给从节点#################################################
1
2
3
4
5
6
7
8
[iyunv@node2 mysql ]#mkdir /etc/mysql
[iyunv@node2 mysql ]# scripts/mysql_install_db --user=mysql--datadir=/mydata ###初始化
[iyunv@director2 ~ ]# scp /etc/mysql/my.cnf 172.16.249.141:/etc/mysql/   ###把主节点的配置文件拷贝过来
[iyunv@node2 / ]# vim /etc/mysql/my.cnf       ####编辑从节点的配置文件
59 #log-bin=mysql-bin                       ####从节点不启用二禁止日志
67 server-id   = 20                         ##server-id保持唯一
68 relay-log = relay-bin                    ####从节点开启中继日志
69 read-only =on                            ####只读模式开启(注意:这个只能限制普通用户)



方法二:此处也可以直接施加读锁。在mysql> lock tables testdb read;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> show variables like 'relay%';        #####中继日志开启了
+-----------------------+---------------------+
| Variable_name         | Value               |
+-----------------------+---------------------+
|relay_log              | relay-bin           |
|relay_log_index        |                     |
|relay_log_info_file    | relay-log.info      |
|relay_log_purge        | ON                  |
|relay_log_recovery     | OFF                 |
|relay_log_space_limit  | 0                   |
+-----------------------+---------------------+
mysql> show variables like "read%";   
#############只读模式开启
+----------------------+-----------------------+
|Variable_name         | Value                 |
+----------------------+-----------------------+
|read_buffer_size      | 1048576               |
|read_only             | ON                    |
|read_rnd_buffer_size  | 4194304               |
+----------------------+-----------------------+



#############################至此主从各单个节点配置结束#####################################
#############################配置从连接主节点################################################
#####主节点查看二进制文件的存储位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mysql> show
master status;
+----------------------+----------------+--------------+------------------------------+
| File                 | Position       | Binlog_Do_DB |Binlog_Ignore_DB              |
+----------------------+----------------+--------------+------------------------------+
| mysql-bin.000003     |      501       |              |                              |
+----------------------+----------------+--------------+------------------------------+
1 row in set (0.04
sec)
#######################建立主从连接######################################################
mysql>
change master to master_host='172.16.11.3',master_user='cpuser',master_password='magedu',master_log_file='mysql-bin.000003',master_log_pos=501;

mysql> show slave status\G;              #####查看当前从节点状态
***************************1. row ***************************
Slave_IO_State:
Waiting for master to send event
Master_Host:
172.16.249.141
Master_User: cpuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
mysql-bin.000003
Read_Master_Log_Pos:
501
Relay_Log_File:
relay-bin.000002
Relay_Log_Pos: 529
Relay_Master_Log_File:
mysql-bin.000003
Slave_IO_Running: Yes               ###IO线程启用
Slave_SQL_Running: Yes            ###SQL线程已经启用



#########################测试结果#########################################
######主节点创建库
1
2
3
4
5
mysql> create database testdb;
Query OK, 1 row affected (0.03 sec)
mysql> use testdb;
Database changed
从节点已经同步了:



wKioL1TGfOqA9_JnAADQRIF4s8E235.jpg
#################################创建一个表###############################################
1
2
mysql> create table students(id tinyint unsigned not null auto_increment unique key);
Query OK, 0 rows affected (0.25 sec)



wKiom1TGfD-DJMlIAACj8t--Q7s792.jpg
#######################主从配置测试完毕#####################################
#####################开始配置mysql-proxy####################################
wKioL1TGfYHDydCUAADfh7G-vkI005.jpg
##但是要注意,因为这个文件是不包含读写分离脚本的。因此,我们还需要下载一个mysql-proxy把里面的读写分离脚本复制过来就好了.
1
2
3
4
5
6
7
8
9
[iyunv@node2 ~ ]# yuminstall mysql-proxy -y
[iyunv@node2 lua ]#tar xf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
[iyunv@node2mysql-proxy ]# pwd
/root/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit/share/doc/mysql-proxy
[iyunv@node2mysql-proxy ]# cp rw-splitting.lua /usr/lib64/mysql-proxy/lua/
[iyunv@node2mysql-proxy ]# cd /usr/lib64/mysql-proxy/lua/   
[iyunv@node2 lua ]# chown -R root:mysql-proxy *        ## ####修改文件属主属组
[iyunv@node2 lua ]# chmod a+x rw-splitting.lua         ###给脚本执行权限
[iyunv@node2 ~ ]# vim /etc/mysql-proxy.cnf             ###修改配置文件



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  1 [mysql-proxy]
  2 daemon = true
  3 pid-file = /var/run/mysql-proxy.pid
  4 log-file = /var/log/mysql-proxy.log
  5 log-level = debug
  6 max-open-files = 1024
  7 plugins = admin,proxy
  8 user = mysql-proxy
  9 #
10 #Proxy Configuration
11 proxy-address =0.0.0.0:3306                    ####用于连接后端msyql的账号和端口
12 proxy-backend-addresses = 172.16.11.3:3306     ####后端写节点
13 proxy-read-only-backend-addresses =172.16.249.141:3306 ####后端读节点,多个用逗号分隔
14 proxy-lua-script =/usr/lib64/mysql-proxy/lua/rw-splitting.lua ####读写分离用到的脚本
15 #proxy-skip-profiling = true
16 #
17 # Admin Configuration
18 admin-address =0.0.0.0:4041                     ####管理端口和地址
19 admin-lua-script =/usr/lib64/mysql-proxy/lua/admin.lua  ####管理端口用到的脚本
20 admin-username = admin                          ####管理的账号
21 admin-password = admin                          ####管理的密码



#############################启动mysql-proxy#######################################
1
2
3
4
5
[iyunv@node2 lua ]#netstat -tunlp
tcp        0     0 0.0.0.0:4041               
0.0.0.0:*                   LISTEN      2019/mysql-proxy   
tcp        0     0 0.0.0.0:3306               
0.0.0.0:*                   LISTEN      2019/mysql-proxy



注意:如果先要前端的代里可以连入后端还要求各后端都给予授权。
######master:
1
2
3
4
5
6
7
8
9
10
mysql> grant all on *.* to 'admin'@'%' identified by 'admin';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
######slave:
mysql> grant all on *.* to 'admin'@'%' identified by 'admin';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows
affected (0.00 sec)



##############################这时连入测试#####################################
1
[iyunv@node2 ~ ]# mysql -uadmin -padmin -h172.16.249.106 --port=3306



##########测试写
wKiom1TGfbnQ-_xyAACB3S3XynU802.jpg
#########主节点已经有了
wKioL1TGfrDDG1k6AADD2VlshQk303.jpg
##########测试读
1
2
[iyunv@node2 ~ ]#mysql -uadmin -padmin -h172.16.249.106 -e 'show databases;'
[iyunv@node2 ~ ]#mysql -uadmin -padmin -h172.16.249.106 --port=4041



######UP就说明读写已经全部启用了##################################################
wKiom1TGfibT94I2AADWHLpAPSc617.jpg
################################或者我们可以抓包验证###########################
[iyunv@node3 ~]#tcpdump -i eth0 -w ~/mysql.pkg port 3306
wKioL1TGfz7yLqtuAADn4s8qL80825.jpg
wKiom1TGfoiC6GwPAADboXka3sA694.jpg
wKioL1TGf6CCv422AAClS20EK04023.jpg





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41624-1-1.html 上篇帖子: MySQL 字符集问题 下篇帖子: Mysql-porxy 读写分离与Tcpdumo抓包工具 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表