6)可以在从库启动是增加一些参数来提高其读的性能,例如--skip-innodb、--skip-bdb、--low-priority-updates以及--delay-key-write=ALL。当然这些设置也是需要根据具体业务需求来定得,不一定能用上
7)分摊读取。假如我们有1主3从,不考虑上述1中提到的从库单方面设置,假设现在1 分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不 承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白 了就是拿机器和带宽换性能。MySQL官方文档中有相关演算公式:官方文档 见6.9FAQ之“MySQL复制能够何时和多大程度提高系统性能”
8)MySQL复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整另外一台从库来以最快的速度恢复服务,因此不能光看性能,也就是说1主1从也是可以的。
============================================================
四:实验代码
1:MySQL-proxy实现读写分离
第一块:安装mysql-proxy
1:安装mysql-proxy ---安装前需要系统支持LUA语言环境。
[root@linuxidc62 ~]# rpm -ivh /mnt/Packages/lua-5.1.4-4.1.el6.x86_64.rpm
2:在linuxidc62上安装mysql-proxy: 上传mysql-proxy
[root@linuxidc62~ ]# tar zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@linuxidc62 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
3:修改系统命令环境变量:
[root@linuxidc62 ~]#export PATH=$PATH:/usr/local/mysql-proxy/bin/ #或者
[root@linuxidc62 ~]# vim /etc/bashrc #在最后添加以下内容 :
PATH=$PATH:/usr/local/mysql-proxy/bin/
[root@linuxidc62 ~]#source /etc/bashrc
4:mysql-proxy 脚本配置文件位置:
[root@linuxidc62 ~]# ls /usr/local/mysql-proxy/share/doc/mysql-proxy/* #下有各种各样的脚本
rw-splitting.lua #这个就是支持读写分离的脚本
5:修改配置文件 实现:读写分离
[root@linuxidc62 ~]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy
/rw-splitting.lua
改:
40 min_idle_connections = 2,
41 max_idle_connections = 8,
为:
min_idle_connections = 1,
max_idle_connections = 1,
#现改为最小1个最大1个。为了验证试验效果将他改成1 .就是当有一个链接的时候,就实现读写分离的功能。为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能。
第二块:搭建mysql服务器
1:linuxidc63上创建数据库和表,用于查看读写分离:
[root@linuxidc63 ~]#yum install mysql-server -y
[root@linuxidc63 ~]# service mysqld start
[root@linuxidc63 ~]# mysql
mysql> create database db;
mysql> use db;
mysql> create table test(id int);
mysql> insert into test values(6363);
mysql> grant all on db.* to user1@'%' identified by '123456' ;
#给普通用户 user1 登录访问数据库权限及密码
注:% 表示任意远程客户端 ,不包括localhost和本地IP地址
2:linuxidc64上创建数据库和表,用于查看读写分离:
[root@linuxidc64 ~]# yum install mysql-server -y
[root@linuxidc64 ~]# service mysqld start
[root@linuxidc64 ~]# mysql
mysql> create database db;
mysql> use db;
mysql> create table test(id int);
mysql> insert into test values(6464);
mysql> grant all on db.* to user1@'%' identified by '123456' ;
3:客户端测试普通用户登录mysql主从数据库
[root@linuxidc61 ~]# mysql -u user1 -p123456 -h 192.168.1.63
mysql> use db
[root@linuxidc61 ~]# mysql -u user1 -p123456 -h 192.168.1.64
mysql> use db
4:启动服务mysql-proxy服务
[root@linuxidc62 ~]# ls /usr/local/mysql-proxy/bin/
mysql-binlog-dump mysql-myisam-dump mysql-proxy