MySQL5.6主从复制(读写分离)教程

MySQL5.6 Replication主从复制(读写分离) 配置一体化版,mysql主从读写分离

MySQL5.6主从复制(读写分离)教程

1、MySQL5.6发端主从复制有二种办法:

听新闻说日志(binlog);
依赖GTID(全局专门的学问标示符)。

急需稳重的是:GTID情势不支持有时表!所以一旦您的政北京工人球场系要用到一时表的话就不要考虑这种方法了,至少目前新型版本MySQL5.6.12的GTID复制依旧不协助一时表的。

于是本课程首假如报告大家怎样通过日记(binlog)方式做主从复制!

2、MySQL官方提供的MySQL Replication教程:

先是步:计划干活

主服务器: 192.168.1.100
从服务器: 192.168.1.101

MySQL软件版本:

MySQL-server-advanced-5.6.18-1.el6.x86_64.rpm
MySQL-cient-advanced-5.6.18-1.el6.x86_64.rpm

其次步:在主服务器和从服务器上安装MySQL数据库软件

设置方式,请参见

MySQL数据库软件设置到位后,不要急着做mysql运转操作。提议把mysql初步化生成的/usr/my.cnf
(就算是从源文件编写翻译安装时,路线应该是在/usr/local/mysql/mysql.cnf)删除,然后把优化好的mysql
安顿文件my.cnf放到/etc下。
其三步:修改主数据库的布署文件/usr/my.cnf
复制代码 代码如下:
[mysqld]
 
server-id=1
log-bin=mysqlmaster-bin.log
sync_binlog=1

innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 
lower_case_table_names=1
log_bin_trust_function_creators=1

第四步:修改从数据库配置文件/usr/my.cnf
 
复制代码 代码如下:
server-id=2
log-bin=mysqlslave-bin.log
sync_binlog=1
innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names=1
log_bin_trust_function_creators=1

第五步:在主数据库和从数据库服务器上各自推行以下命令重新起动主数据库和从数据库
复制代码 代码如下:
[[email protected]
~]# service mysql restart
[[email protected]
~]# service mysql restart

第六步:在主数据库上创建用于主从复制的账户

复制代码 代码如下:
[[email protected]
~]# mysql -uroot -p
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’192.168.1.101’
IDENTIFIED BY ‘111111’;
Query OK, 0 rows affected (0.00 sec)

注意:以上命令中的IP地址,是从数据库服务器的IP地址。

第七步:主数据库锁表(禁止再插入数据以赢得主数据库的的二进制日志坐标)
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
 

第八步:查看主数据库的情景(并记下下File字段和Position字段的值,在布局从服务器时有用到)

mysql> show master status;
+————————+———-+————–+——————+——————-+
| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB
| Executed_Gtid_Set |
+————————+———-+————–+——————+——————-+
| mysqlmaster-bin.000004 |      327 |              |                 
|                  |
+————————+———-+————–+——————+——————-+
1 row in set (0.00 sec)

第九步:创建主数据库的快速照相文件
[[email protected]
~]# cd /usr/bin/
# ./mysqldump -uroot -p -h127.0.0.1 -P3306 –all-databases –triggers
–routines –events >>/mnt/windows/all.sql
地点命令中的蟹青部分,是三个分享目录,这几个目录能够而且被主数据库服务器和从数据库服务器访谈到。
只要未有这么的分享目录,能够将all.sql放在其余任何目录下,然后选取scp命令复制到远程从数据库服务器的某部目录中
那条命令的举行时间依据数据量的例外,会有所不一致,假若主数据库的数据量不小,恐怕供给相当短日子,那么在这种气象下,就最佳在晚间并未有事情的时候进行那一个操作,不然第七步中的锁表操作会对专门的工作种类产生不小的熏陶
第十步:解锁主数据库的锁表操作
[[email protected]
~]# mysql -uroot -p    (本命令在主数据库服务器上实行)
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
第十一步:在从数据库服务器上导入第七步制造的快速照相文件到从数据库中
[[email protected]
~]# mysql -uroot -p -h127.0.0.1 -P3306 < /mnt/windows/all.sql
第十二步:在从数据库服务器上安装主数据库服务器向从数据库服务器同步
[[email protected]
~]# mysql -uroot -p
mysql> change master to master_host =
‘192.168.1.100’,master_user=’repl’,master_password=’111111′,master_log_file=’mysqlmaster-bin.000004′,master_log_pos=327;
留心:灰黄部分的值,是在第八步中查出来的,这里不可能弄错了
第十三步:运转从数据库复制线程
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
第十四步:查询从数据库的复制线程状态

复制代码 代码如下:
mysql> show slave status \G
*************************** 1. row
***************************
              Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.100
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysqlmaster-bin.000004
          Read_Master_Log_Pos: 327
              Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 289
        Relay_Master_Log_File: mysqlmaster-bin.000004
          Slave_IO_mysql主从读写分离,MySQL主从复制与读写分离。Running: Yes
        Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
          Replicate_Do_Table:
      Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                  Last_Errno: 0
                  Last_Error:
                Skip_Counter: 0
          Exec_Master_Log_Pos: 327
              Relay_Log_Space: 462
              Until_Condition: None
              Until_Log_File:
                Until_Log_Pos: 0
          Master_SSL_Allowed: No
          Master_SSL_CA_File:
          Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
              Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
              Last_SQL_Errno: 0
              Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
            Master_Server_Id: 1
                  Master_UUID: 2e5e1b22-f0a9-11e3-bbac-000c297799e0
            Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting
for the slave I/O thread to update it
          Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
    Last_SQL_Error_Timestamp:
              Master_SSL_Crl:
          Master_SSL_Crlpath:
          Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
1 row in set (0.00 sec)

如果Slave_IO_Running和Slave_SQL_Running两项都为yes,就表示主从复制配置成功了.
上面能够初叶测量试验配置是或不是成功了,首先在主数据库的test数据库中新建一张表,然后插入几条数据,然后到从数据库看看是或不是同步过来了。
专注:当从数据库有恢宏的询问时,能够权且将从数据库的复制线程关闭掉,等查询量降下来了,再张开,那样也不会扬弃数据。

附:多个优化好后的主数据库配置文件和从数量配置文件内容如下:

复制代码 代码如下:
# For advice on how to change settings please see
#

[client]
port=3306
socket=/usr/local/mysql/mysql.sock
default-character-set=utf8
 
[mysqld]
sync_binlog=1
server-id=1
port=3306
socket=/usr/local/mysql/mysql.sock
pid-file=/home/mysql/temp/my3306.pid
user=mysql
datadir=/home/mysql/data
tmpdir=/home/mysql/temp/
log-bin=/home/mysql/data/mysqlmaster-bin
log-error=/home/mysql/logs/error.log
slow_query_log_file=/home/mysql/logs/slow.log
binlog_format=mixed
slow_query_log
long_query_time=10
wait_timeout=31536000
interactive_timeout=31536000
max_connections=500
max_user_connections=490
max_connect_errors=2
character_set_server=utf8
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 5M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU’s*2 for thread_concurrency
thread_concurrency = 4
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
expire-logs-days=10
skip-slave-start
skip-name-resolve
lower_case_table_names=1
log_bin_trust_function_creators=1
 
# InnoDB
innodb_data_home_dir=/home/mysql/data
innodb_log_group_home_dir=/home/mysql/logs
innodb_data_file_path=ibdata1:128M:autoextend
innodb_buffer_pool_size=2G
innodb_log_file_size=10M
innodb_log_buffer_size=8M
innodb_lock_wait_timeout=50
innodb_file_per_table
innodb_flush_log_at_trx_commit=1
 
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 

 
 
三个优化好的从数据库的布署文件如下:

复制代码 代码如下:
# For advice on how to change settings please see
#

[client]
port=3306
socket=/usr/local/mysql/mysql.sock
default-character-set=utf8
 
[mysqld]
sync_binlog=1
server-id=2
port=3306
socket=/usr/local/mysql/mysql.sock
pid-file=/home/mysql/temp/my3306.pid
user=mysql
datadir=/home/mysql/data
tmpdir=/home/mysql/temp/
log-bin=/home/mysql/data/mysqlslave-bin
log-error=/home/mysql/logs/error.log
slow_query_log_file=/home/mysql/logs/slow.log
binlog_format=mixed
slow_query_log
long_query_time=10
wait_timeout=31536000
interactive_timeout=31536000
max_connections=500
max_user_connections=490
max_connect_errors=2
character_set_server=utf8
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 5M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU’s*2 for thread_concurrency
thread_concurrency = 4
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
expire-logs-days=10
#skip-slave-start
skip-name-resolve
lower_case_table_names=1
log_bin_trust_function_creators=1
 
# InnoDB
innodb_data_home_dir=/home/mysql/data
innodb_log_group_home_dir=/home/mysql/logs
innodb_data_file_path=ibdata1:128M:autoextend
innodb_buffer_pool_size=2G
innodb_log_file_size=10M
innodb_log_buffer_size=8M
innodb_lock_wait_timeout=50
innodb_file_per_table
innodb_flush_log_at_trx_commit=1
 
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
 
[myisamchk]
key_buffer_size = 256K
sort_buffer_size = 256K
read_buffer = 256K
write_buffer = 256K
 
[mysqlhotcopy]
interactive-timeout
 
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
 
[myisamchk]
key_buffer_size = 256K
sort_buffer_size = 256K
read_buffer = 256K
write_buffer = 256K
 
[mysqlhotcopy]
interactive-timeout

Replication主从复制(读写分离)
配置一体化版,mysql主从读写分离 MySQL5.6主从复制(读写分离)教程
1、MySQL5.6伊始主从复制有三种方式:…

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)推行
Mysql作为当下世界上应用最常见的无需付费数据库,相信全数从事系统运营的程序员都自然接触过。但在实质上的生产意况中,由单台Mysql作为独立的数据库是一心不能够满足实际供给的,无论是在安全性,高可用性以及高并发等种种方面。
因而,一般的话都以经过
主从复制(Master-Slave)的点子来一齐数据,再经过读写分离(MySQL-Proxy)来升高数据库的面世负载本事这样的方案来展开安插与推行的。
正如图所示:

MySQL主从复制与读写分离

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践

Mysql作为当前世界上选取最广大的无需付费数据库,相信全部从事系统运营的程序员都必将接触过。但在事实上的生产条件中,由单台Mysql作为独立的数据库是一心不能够满意实际供给的,无论是在安全性,高可用性以及高并发等各个方面。

进而,一般的话都以由此主从复制(Master-Slave)的章程来一起数据,再通过读写分离(MySQL-Proxy)来进步数据库的出现负载技艺那样的方案来拓展配备与实施的。

如下图所示:
图片 1

上边是作者在实质上中国人民解放军海军工程大学业作进度中所整理的笔记,在此分享出去,以供我们仿效。

一、MySQL的装置与铺排
现实的装置进程,提出参照他事他说加以考察笔者的这一篇文章:
值得一说的是,笔者的安装进程都是源码包编写翻译安装的,何况有所的布置与数据等都统一规划到了/opt/mysql目录中,由此在一台服务器上安装完毕现在,能够将总体mysql目录打包,然后传到其他服务器上解包,便可即刻使用。

二、MySQL主从复制
场馆描述:
主数据库服务器:192.168.10.130,MySQL已经安装,而且无使用数据。
从数据库服务器:192.168.10.131,MySQL已经安装,况兼无使用数据。

2.1 主服务器上进行的操作
启动mysql服务
/opt/mysql/init.d/mysql start

通过命令行登入管理MySQL服务器
/opt/mysql/bin/mysql -uroot -p’new-password’

授权给从数据库服务器192.168.10.131
mysql> GRANT REPLICATION SLAVE ON *.* to ‘rep1’@’192.168.10.131’
identified by ‘password’;

查询主数据库状态
Mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000005 | 261 | | |
+——————+———-+————–+——————+

笔录下 FILE 及 Position 的值,在末端实行从服务器操作的时候须求用到。

2.2 配置从服务器
修改从服务器的布置文件/opt/mysql/etc/my.cnf
将 server-id = 1修改为 server-id =
10,并保险那个ID未有被其他MySQL服务所使用。

启动mysql服务
/opt/mysql/init.d/mysql start

透过命令行登陆管理MySQL服务器
/opt/mysql/bin/mysql -uroot -p’new-password’

实行同步SQL语句
mysql> change master to
master_host=’192.168.10.130’,
master_user=’rep1’,
master_password=’password’,
master_log_file=’mysql-bin.000005’,
master_log_pos=261;

没错施行后运行Slave同步进度
mysql> start slave;

基本同步检查

1、MySQL5.6方始主从复制有三种方法:

图片 2

mysql> show slave status\G

**************** 1. row
*******************
Slave_IO_State:
Master_Host: 192.168.10.130
Master_User: rep1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000005
Read_Master_Log_Pos: 415
Relay_Log_File: localhost-relay-bin.000008
Relay_Log_Pos: 561
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: YES
Slave_SQL_Running: YES
Replicate_Do_DB:
……………省略若干……………
Master_Server_Id: 1

依据日志(binlog);
基于GTID(全局职业标示符)。

image.png

1 row in set (0.01 sec)

其中Slave_IO_Running 与 Slave_SQL_Running
的值都必须为YES,才表明状态正常。

假如主服务器已经存在使用数据,则在进行主从复制时,需求做以下管理:
(1)主数据库进行锁表操作,不让数据再展开写入动作
mysql> FLUSH TABLES WITH READ LOCK;

(2)查看主数据库状态
mysql> show master status;

(3)记录下 FILE 及 Position 的值。
将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,提出通过tar归档压缩后再扩散从服务器解压。

(4)撤消主数据库锁定
mysql> UNLOCK TABLES;

2.3 验证主从复制效果

主服务器上的操作
在主服务器上开创数据库first_db
mysql> create database first_db;
Query Ok, 1 row affected (0.01 sec)

在主服务器上创立表first_tb
mysql> create table first_tb(id int(3),name char(10));
Query Ok, 1 row affected (0.00 sec)

在主服务器上的表first_tb中插入记录
mysql> insert into first_tb values (001,’myself’);
Query Ok, 1 row affected (0.00 sec)

在从服务器上查看

亟待注意的是:GTID方式不援救一时表!所以假诺您的事情系列要用到临时表的话就无须思考这种办法了,至少方今最新版本MySQL5.6.12的GTID复制还是不帮忙临时表的。

下边是小编在实际职业进度中所整理的笔记,在此分享出去,以供我们参照他事他说加以考察。
一、MySQL的安装与布置
具体的设置进程,建议参照他事他说加以考察小编的这一篇小说:http://heylinux.com/archives/993.html
值得一提的是,笔者的设置过程都以源码包编写翻译安装的,并且具备的配置与数量等都统一规划到了/opt/mysql目录中,因而在一台服务器上安装达成之后,能够将总体mysql目录打包,然后传到别的服务器上解包,便可马上利用。二、MySQL主从复制
场景描述:
主数据库服务器:192.168.10.130,MySQL已经设置,况兼无使用数据。
从数据库服务器:192.168.10.131,MySQL已经设置,况兼无使用数据。2.1
主服务器上举办的操作

启动mysql服务

mysql> show databases;

+——————–+
| Database |
+——————–+
| information_schema |
| first_db |
| mysql |
| performance_schema |
| test |
+——————–+

故此本学科重借使报告大家哪些通过日记(binlog)格局做主从复制!

/opt/mysql/init.d/mysql start

5 rows in set (0.01 sec)

数据库first_db已经自动生成

mysql> use first_db
Database chaged

2、MySQL官方提供的MySQL Replication教程:

透过命令行登陆处理MySQL服务器

mysql> show tables;

+——————–+
| Tables_in_first_db |
+——————–+
| first_tb |
+——————–+

/opt/mysql/bin/mysql -uroot -p'new-password'

1 row in set (0.02 sec)

数据库表first_tb也早已自行创设

先是步:图谋工作

授权给从数据库服务器192.168.10.131

mysql> select * from first_tb;

+——+——+
| id | name |
+——+——+
| 1 | myself |
+——+——+

主服务器: 192.168.1.100
从服务器: 192.168.1.101

mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.10.131' identified by ‘password’;

1 rows in set (0.00 sec)

笔录也早已存在

透过,整个MySQL主从复制的进度就造成了,接下去,大家开始展览MySQL读写分离的装置与布署。

三、MySQL读写分离
气象描述:
数据库Master主服务器:192.168.10.130
数据库Slave从服务器:192.168.10.131
MySQL-Proxy调治服务器:192.168.10.132

以下操作,均是在192.168.10.132即MySQL-Proxy调治服务器 上进行的。

3.1 MySQL的设置与计划
现实的装置进程与上文一样。

3.2 检查系列所需软件包
由此 rpm -qa | grep name 的不二等秘书籍阐明以下软件包是否已整整设置。
gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel*
libmcrypt* libtool* flex* pkgconfig*
libevent* glib*

若贫乏相关的软件包,可通过yum -y
install格局在线安装,或直接从系统装置光盘中找到并透过rpm -ivh格局安装。

3.3 编写翻译安装lua
MySQL-Proxy的读写分离紧假使由此rw-splitting.lua脚本完毕的,由此须要安装lua。

lua可透过以下情势获得

从rpm.pbone.net寻觅相关的rpm包
download.fedora.redhat.com/pub/fedora/epel/5/i386/lua-5.1.4-4.el5.i386.rpm
download.fedora.redhat.com/pub/fedora/epel/5/x86_64/lua-5.1.4-4.el5.x86_64.rpm

那边我们提出选拔源码包进行安装
cd /opt/install
wget
tar zvfx lua-5.1.4.tar.gz
cd lua-5.1.4

vi src/Makefile
在 CFLAGS= -O2 -Wall $(MYCFLAGS) 这一行记录里增进-fPIC,改造为 CFLAGS=
-O2 -Wall -fPIC $(MYCFLAGS) 来制止编写翻译进程中冒出谬误。

make linux
make install

cp etc/lua.pc /usr/lib/pkgconfig/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig

3.4 安装配置MySQL-Proxy
MySQL-Proxy可透过以下网站获得:

推荐应用已经编写翻译好的二进制版本,因为使用源码包举办编写翻译时,最新版的MySQL-Proxy对automake,glib以及libevent的本子皆有相当高的渴求,而这么些软件包都以系统的基本功套件,不建议强行进行更新。
再正是那几个曾经编写翻译好的二进制版本在解压后都在联合的目录内,因而建议选拔以下版本:
32位RHEL5平台:

64位RHEL5平台:

测量试验平台为LANDHEL5 叁十个人,由此挑选31人的软件包
wget

tar xzvf mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz
mv mysql-proxy-0.8.1-linux-rhel5-x86-32bit /opt/mysql-proxy

创立mysql-proxy服务管理脚本
mkdir /opt/mysql-proxy/init.d/

vim mysql-proxy

01 #!/bin/sh
02 #
03 # mysql-proxy This script starts and stops the mysql-proxy daemon
04 #
05 # chkconfig: – 78 30
06 # processname: mysql-proxy
07 # description: mysql-proxy is a proxy daemon to mysql
08  
09 # Source function library.
10 . /etc/rc.d/init.d/functions
11  
12 #PROXY_PATH=/usr/local/bin
13 PROXY_PATH=/opt/mysql-proxy/bin
14  
15 prog="mysql-proxy"
16  
17 # Source networking configuration.
18 . /etc/sysconfig/network
19  
20 # Check that networking is up.
21 [ ${NETWORKING} = "no" ] && exit 0
22  
23 # Set default mysql-proxy configuration.
24 #PROXY_OPTIONS="–daemon"
25 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 –proxy-lua-script=/opt/mysql-proxy/scripts/rw-splitting.lua"
26 PROXY_PID=/opt/mysql-proxy/run/mysql-proxy.pid
27  
28 # Source mysql-proxy configuration.
29 if [ -f /etc/sysconfig/mysql-proxy ]; then
30 . /etc/sysconfig/mysql-proxy
31 fi
32  
33 PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
34  
35 # By default it’s all good
36 RETVAL=0
37  
38 # See how we were called.
39 case "$1" in
40 start)
41 # Start daemon.
42 echo -n $"Starting $prog: "
43 $NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS –daemon –pid-file=$PROXY_PID –user=mysql –log-level=warning –log-file=/opt/mysql-proxy/log/mysql-proxy.log
44 RETVAL=$?
45 echo
46 if [ $RETVAL = 0 ]; then
47 touch /var/lock/subsys/mysql-proxy
48 fi
49 ;;
50 stop)
51 # Stop daemons.
52 echo -n $"Stopping $prog: "
53 killproc $prog
54 RETVAL=$?
55 echo
56 if [ $RETVAL = 0 ]; then
57 rm -f /var/lock/subsys/mysql-proxy
58 rm -f $PROXY_PID
59 fi
60 ;;
61 restart)
62 $0 stop
63 sleep 3
64 $0 start
65 ;;
66 condrestart)
67 [ -e /var/lock/subsys/mysql-proxy ] && $0 restart
68 ;;
69 status)
70 status mysql-proxy
71 RETVAL=$?
72 ;;
73 *)
74 echo "Usage: $0 {start|stop|restart|status|condrestart}"
75 RETVAL=1
76 ;;
77 esac
78  
79 exit $RETVAL

MySQL软件版本:

查询主数据库状态

剧本参数详解:

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)

MySQL-server-advanced-5.6.18-1.el6.x86_64.rpm
MySQL-cient-advanced-5.6.18-1.el6.x86_64.rpm

Mysql> show master status; 

–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

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时才启用读写分离

网站地图xml地图