使用代理软件mysql-proxy实现mysql的读写分离
实验:
172.16.1.10
客户端请求mysql-proxy,判断是写还是读
建立两次连接
是远程连接,要授予远程连接的权限
>use
db;
>create table test (id int);
>insert into test values
(10),(100);
>grant all on db.* to proxy@‘%‘ identified by
‘123‘;
在打开一个终端设置从服务器
和主服务器一样,只是值不一样
mysql
>create database
dn;
>use db
>create table test (id int);
>insert into test
values (10),(200);
>grant all on *.* to proxy@‘%‘ identified by
‘123‘; 密码和主服务器必须一样
指定一个代理服务器;172.16.1.10
测试
mysql -h 172.16.1.11
-u proxy -p123
mysql -h 172.16.1.12 -u proxy
-p123
使用lva的脚本语言,把lva的解释起和lvadevell装上,day4里面有mysql-proxy
把两个包装上
rpm
mysql-proxy-0.8.0*.rpm
rpm -ivh lua-5.0.2-1.el5.rf.i386.rpm
rpm
-ivh lua-devel-5.0.2-1.el5.rf.i386.rpm
tar zxvf
mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz -C /usr/local/src
cp -r
mysql-proxy-0.8.0-linux-rhel5-x86-32bit /usr/local/mysql-proxy
cd
/usr/local/mysql-proxy/share/doc/mysql-proxy
vim rw-splitting.lua
36 if
not proxy.global.config.rwsplit then
37 proxy.global.config.rwsplit =
{
38 min_idle_connections =
1, 最小空闲线程连接
39 max_idle_connections =
1, 最大线程连接,基本没用
mysqlproxy的启动方法
cd bin
./mysql-proxy
--help-proxy 查看帮助
mysql-proxy
--proxy-read-only-backend-addresses=172.16.1.12:3306
--proxy-backend-addresses=172.16.1.11:3306
--proxy-lua-script=/usr/share/doc/mysql-proxy/rw-splitting.lua --daemon
--user=nobody --log-level=debug
--log-use-syslog
-P 决定mysql用那个接口进行连接,指定mysql-proxy工作的时候允许访问的IP和接口 模拟成mysql,端口用3306,要保证自己本地的mysql不要运行,打开后端口冲突,mysql-proxy运行不起来
-r 只读的后端服务器 172.16.1.12
-b 读写的后端服务器 172.16.1.11
-s 工作的时候指定脚本的位置和名称,默认是没有的
版本小于5.1.12,会出现bug,要加上-bug
--deamon 以一个服务的形式去启动
什么算服务:被定义为服务的进程是没有终端的,不依赖于用户的终端。终端关掉,服务还是可以正常运行的
运行mysql-proxy
/usr/local/proxy/bin/mysql-proxy
-P 172.16.1.10:3306 -b 172.16.1.11:3306 -r 17.16.1.12:3306 -s
/usr/local/proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon
&
改变:# ulimit -n 10240 临时改变,永久改变,要改PAM
(ulimit -n
1
cat /etc/passwd
/etc/shadow
会出错)
测试:
模拟客户端,利用mysql命令往mysql-proxy发起连接
mysql
-h 192.168.1.15 -u proxy -p123
>use db;
>select * from
test;
>
另一个标签
mysql -h 192.168.1.15 -u proxy -p123
>use db;
>select * from test;
>
可以增大连接数目
>update
test set id=300; 改变数据
然后可以把140 14 搭建成主从的模式
ab复制(主从复制)
可以让mysql实现:
1.数据的备份(主服务器的数据全部同步到从服务器)
2.可以负载均衡减小主服务器的压力
3.真正实现mysql的读写分离
配置方法
主服务器:
1.cat
/etc/my.cnf
[mysqld]
log-bin=mysql_bin
server-id=1 不允许重复
2.grant
replication slave on *.* to ‘slave‘@‘172.16.1.10‘ identified by ‘king123‘;
授权,指定从服务器只能复制binlog,从服务器的ip
mysql>show master
status查看主服务器的运行状态
在从上使用slave用户登录测试:
3.mysql -u slave -p123 -h
192.168.1.14
4.mysqldump --all-database > db_backup.sql
(主服务执行全备)
5.mysql> show master
status;找到当前的日志文件和位置号
从:(可以不用开启binlog功能)
6.mysql -uroot -p123 <
db_backup.sqlb 将主服务的全备脚本拷贝到主服务器并且导入主服务器
7.cat
/etc/my.cnf
[mysqld]
server-id=2 和主服务器不重复就可以
master-host=192.168.1.131
主服务器ip
master-user=slave 登录时账号
master-password=123
mysql读取配置文件时,知道是以从服务器的形式运行
8.从服务器从主服务器读取binlog产生问题时
mysql -u root
-p
mysql> change master to
mysql>
master_host=‘192.168.1.131‘,
mysql> master_user=‘slave‘,
mysql>
master_password=‘123‘,
mysql> master_log_file=‘主服务器日志文档‘,
mysql>
master_log_pos=更新版本号;
9.启动从服务器
mysql> slave start 或者是start
slave,启动从服务器
mysql>show slave status 查看从服务器状态
本文出自 “小郑技术博客” 博客,请务必保留此出处http://ko178.blog.51cto.com/220419/1734544
原文地址:http://ko178.blog.51cto.com/220419/1734544