MySQL的读写别离的几种挑选ITeye - 亚美娱乐

MySQL的读写别离的几种挑选ITeye

2019-01-10 20:35:22 | 作者: 德昌 | 标签: 别离,读写,效劳 | 浏览: 2984

脚本参数详解:
==============================================
PROXY_PATH=/opt/mysql-proxy/bin //界说mysql-proxy效劳二进制文件途径

PROXY_OPTIONS="--admin-username=root \ //界说内部办理效劳器账号
--admin-password=password \ //界说内部办理效劳器暗码
--proxy-read-only-backend-addresses=192.168.10.131:3306 \ //界说后端只读从效劳器地址
--proxy-backend-addresses=192.168.10.130:3306 \ //界说后端主效劳器地址
--admin-lua-script=/opt/mysql-proxy/lib/mysql-proxy/lua/admin.lua \ //界说lua办理脚本途径
--proxy-lua-script=/opt/mysql-proxy/scripts/rw-splitting.lua" \ //界说lua读写别离脚本途径

PROXY_PID=/opt/mysql-proxy/run/mysql-proxy.pid //界说mysql-proxy PID文件途径

$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS \
--daemon \ //界说以看护进程形式发动
--keepalive \ //使进程在反常封闭后能够主动康复
--pid-file=$PROXY_PID \ //界说mysql-proxy PID文件途径
--user=mysql \ //以mysql用户身份发动效劳
--log-level=warning \ //界说log日志等级,由高到低别离有(error|warning|info|message|debug)
--log-file=/opt/mysql-proxy/log/mysql-proxy.log //界说log日志文件途径
==============================================

cp mysql-proxy /opt/mysql-proxy/init.d/
chmod +x /opt/mysql-proxy/init.d/mysql-proxy

mkdir /opt/mysql-proxy/run
mkdir /opt/mysql-proxy/log

mkdir /opt/mysql-proxy/scripts

装备并运用rw-splitting.lua读写别离脚本
最新的脚本咱们能够从最新的mysql-proxy源码包中获取
cd /opt/install

wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1.tar.gz

tar xzvf mysql-proxy-0.8.1.tar.gz
cd mysql-proxy-0.8.1
cp lib/rw-splitting.lua /opt/mysql-proxy/scripts

修正读写别离脚本rw-splitting.lua
修正默许衔接,进行快速测验,不修正的话要到达衔接数为4时才启用读写别离
vim /opt/mysql-proxy/scripts/rw-splitting.lua
=============================
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, //默许为4
max_idle_connections = 1, //默许为8
is_debug = false
}
end
=============================

修正完成后,发动mysql-proxy
/opt/mysql-proxy/init.d/mysql-proxy start

3.5 测验读写别离作用
创立用于读写别离的数据库衔接用户
登陆主数据库效劳器192.168.10.130,经过命令行登录办理MySQL效劳器
/opt/mysql/bin/mysql -uroot -pnew-password
mysql GRANT ALL ON *.* TO proxy1@192.168.10.132 IDENTIFIED BY password;
由于咱们装备了主从复制功用,因而从数据库效劳器192.168.10.131上现已同步了此操作。

为了明晰的看到读写别离的作用,需求暂时封闭MySQL主从复制功用
登陆从数据库效劳器192.168.10.131,经过命令行登录办理MySQL效劳器
/opt/mysql/bin/mysql -uroot -pnew-password

封闭Slave同步进程
mysql stop slave;
Query OK, 0 rows affected (0.00 sec)

衔接MySQL-Proxy
/opt/mysql/bin/mysql -uproxy1 -ppassword -P4040 -h192.168.10.132

登陆成功后,在first_db数据的first_tb表中刺进两条记载
mysql use first_db;
Database changed
mysql insert into first_tb values (007,’first’);
Query Ok, 1 row affected (0.00 sec)
mysql insert into first_tb values (110,’second’);
Query Ok, 1 row affected (0.00 sec)

查询记载
mysql select * from first_tb;
=============================
+------+------+
| id | name |
+------+------+
| 1 | myself |
+------+------+
1 rows in set (0.00 sec)
=============================
经过读操作并没有看到新记载

mysql quit
退出MySQL-Proxy

下面,别离登陆到主从数据库效劳器,比照记载信息
首要,查看主数据库效劳器
mysql select * from first_tb;
=============================
+------+------+
| id | name |
+------+------+
| 1 | myself |
+------+------+
| 007 | first |
+------+------+
| 110 | second |
+------+------+
3 rows in set (0.00 sec)
=============================
两条新记载都现已存在

然后,查看从数据库效劳器
mysql select * from first_tb;
=============================
+------+------+
| id | name |
+------+------+
| 1 | myself |
+------+------+
1 rows in set (0.00 sec)
=============================
没有新记载存在

由此验证,咱们现已完成了MySQL读写别离,现在一切的写操作都悉数在Master主效劳器上,用来防止数据的不同步;
别的,一切的读操作都分摊给了其它各个Slave从效劳器上,用来分管数据库压力。

经历共享:
1.当MySQL主从复制在 show slave status\G 时呈现Slave_IO_Running或Slave_SQL_Running 的值不为YES时,需求首要经过 stop slave 来中止从效劳器,然后再履行一次本文 2.1与2.2 章节中的进程即可康复,但假如想尽或许的同步更多的数据,能够在Slave大将master_log_pos节点的值在之前同步失效的值的根底上增大一些,然后重复测验,直到同步OK。由于MySQL主从复制的原理其实便是从效劳器读取主效劳器的binlog,然后依据binlog的记载来更新数据库。

2.MySQL-Proxy的rw-splitting.lua脚本在网上有许多版别,可是最准确无误的版别仍然是源码包中所顺便的lib/rw-splitting.lua脚本,假如有lua脚本编程根底的话,能够在这个脚本的根底上再进行优化;

3.MySQL-Proxy实际上十分不稳定,在高并发或有过错衔接的情况下,进程很简单主动封闭,因而翻开--keepalive参数让进程主动康复是个比较好的方法,但仍是不能从根本上解决问题,因而一般最保险的做法是在每个从效劳器上装置一个MySQL-Proxy供本身运用,尽管比较低效但却能确保稳定性;

4.一主多从的架构并不是最好的架构,一般比较优的做法是经进程序代码和中间件等方面,来规划,比方设置对表数据的自增id值差异增加等方法来完成两个或多个主效劳器,但必定要注意确保好这些主效劳器数据的完整性,不然作用会比多个一主多从的架构还要差;

5.MySQL-Cluster 的稳定性也不是太好;

6.Amoeba for MySQL 是一款优异的中间件软件,相同能够完成读写别离,负载均衡等功用,而且稳定性要大大超越MySQL-Proxy,主张我们用来代替MySQL-Proxy,乃至MySQL-Cluster。

 

详解Mysql Proxy Lua读写别离设置

 

旧址如下:

Mysql Proxy Lua读写别离设置是本文要介绍的内容,主要是来了解Mysql Proxy的Mysql 别离设置,为了未来读写别离的需求, 先行对MySQL官方的Mysql Proxy产品进行了开始测验. 以下是测验进程,二进制版Mysql Proxy能够去下载。

1、设置阐明

Master效劳器: 192.168.41.196   Slave效劳器: 192.168.41.197   Proxy效劳器: 192.168.41.203 

2、装置Mysql Proxy

在Proxy效劳器上装置即可. 假如源码方法装置, 需提早装置pkg-config,libevent,glibc,lua等依靠包, 十分费事, 主张直接运用二进制版.

# cd /u01/software/mysql   # tar -zxvf Mysql Proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz -C /usr/local   # cd /usr/local   # ln -s Mysql Proxy-0.8.1-linux-rhel5-x86-32bit Mysql Proxy   # vi + ~/.bash_profile   export PATH=$PATH:/usr/local/Mysql Proxy/bin/   # . ~/.bash_profile 

3、Mysql Proxy选项阐明

# Mysql Proxy help-all 

办理功用选项:

admin-address=host:port 指定一个mysqo-proxy的办理端口, 缺省是4041;   admin-username= string  username to allow to log in
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章