mysql主从复制1064_mysql主从同步和读写分离

Mysql读写分离实验

需要三台服务器

192.168.254.11 Mysql master ---read/write

192.168.254.12 Mysql slave ---read

192.168.254.13 Mysql Proxy

预安装mysql

准备工作

要做读写分离,先做主从同步

在master上

Vi /etc/mysql/my.cnf

如果有注销:

bind-address127.0.0.1

如果没有添加:

Log-bin

Server-id=1

重启mysql服务

/etc/init.d/mysqld restart

登录mysql

Mysql –uroot –p

创建一共享账号

Grant all on *.* to ‘root’@’%’ identified by ‘root113’

查看并记录当前二进制日志状态

Show master status;

ce655ce23897d74af1deed3e734421cb.png

在slave上

Vi /etc/mysql/my.cnf

如果有注销:

bind-address127.0.0.1

如果没有添加:

Log-bin

Server-id=10##这个值需要比master大,没有其他的机器使用

重启mysql服务

/etc/init.d/mysqld restart

登录mysql执行同步语句

Msyql –uroot –p

Change master to

Master_host=’192.168.254.11’,

Master_user=’root’,

Master_password=’root113’,

Master_log_file=’mysql-bin.000021’,

Master_log_pos=106;

Start slave

Show slave status\G

Slave_IO_Runningyes

Slave_SQL_Runningyes

创建一个共享账号,这里不需要主要是后面读写分离时用到

Grant all on *.* to ‘root’@’%’ identified by ‘root113’

Quit

如果主数据库有数据:

取消主数据库表锁定

Flush tables with read lock;

查看主数据库状态

Show master status

记录file和positon值

复制主数据库的数据文件/var/lib/mysql到从服务器

取消表锁定

Unlock tables;

到这里mysql主从同步就完成了

可以在master上随便做点操作试试,看slave是否有同步

做读写分离

在proxy主机上

需要软件mysql-proxy,下载地址:

这里下载源码的安装了几次不成功,emerge也没法安装,只能下在编译好的数据包了

Tar zxvf mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit.tar.gz –C /usr/local

Mv mysql-proxy-0.8.4-linux-glibc2.3-x86-32 mysql-proxy

Export PATH=$PATH:/usr/local/mysql-proxy/bin

Echo “PATH=$PATH:/usr/local/mysql-proxy/bin” >> /etc/profile

启动mysql-proxy

mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy"--proxy-backend-addresses="192.168.254.11:3306"--proxy-read-only-backend-addresses="192.168.254.12:3306"--proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"--plugins=admin --admin-username="admin"--admin-password="admin"--admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

88dac9b459422e96562b2322dc716f38.png

这里我们看到已经启动,端口4040(4041是管理端口)

测试

开台测试机器

通过mysql proxy连接

Mysql –uroot –proot113 –h 192.168.254.13 –port=4040

登录管理端口

Mysql –uadmin –padmin –h 192.168.254.13 –port=4041

## 这个用户名密码是mysql-proxy启动时设置的

4d1e4febcbfade76166af89862ebc4c6.png

正常状态

备注:刚开始测试时会遇到下图情况,这个是正常的,主要是默认mysql-proxy做分离的最小值是4个链接,所以测试时没有转到slave机器上

f6b993533081e02274e09881cb6e0b71.png

修改方法

vi /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

修改min_idle_connections值和max_idle_connections值

6bbcc43b229f30456abf43014c5b935e.png

Mysql-proxy启动参数

--help-all:获取全部帮助信息;

--proxy-address=host:port:代理服务监听的地址和端口;

--admin-address=host:port:管理模块监听的地址和端口;

--proxy-backend-addresses=host:port:后端mysql服务器的地址和端口;

--proxy-read-only-backend-addresses=host:port:后端只读mysql服务器的地址和端口;

--proxy-lua-script=file_name:完成mysql代理功能的Lua脚本;

--daemon:以守护进程模式启动mysql-proxy;

--keepalive:在mysql-proxy崩溃时尝试重启之;

--log-file=/path/to/log_file_name:日志文件名称;

--log-level=level:日志级别;

--log-use-syslog:基于syslog记录日志;

--plugins=plugin:在mysql-proxy启动时加载的插件;

--user=user_name:运行mysql-proxy进程的用户;

--defaults-file=/path/to/conf_file_name: 默认使用的配置文件路径;其配置段使用[mysql-proxy]标识;

--proxy-skip-profiling: 禁用profile;

--pid-file=/path/to/pid_file_name:进程文件名;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值