mysql主从能直接修改从库_MySQL主从复制与读写分离[修改]

测试环境:192.168.5.200 【主数据库服务器 master,centos 6.4】

192.168.5.201 【从数据库服务器 slave,windows server 2003】

192.168.5.202 【mysql代理服务器 proxy,centos 6.4】【用于读写分离,后讲】

这三台虚拟机要保证都能ping通,网络要配好,linux上iptables 3306端口要开放,对于主从mysql服务器可以都是windows,

代理服务器要求linux,并且都装好mysql。环境搭建好,看正文!

=====================MySQL主从复制==========================

1.在主服务器200上操作,启动mysql

60f2003c5d3ee59ba00a0d99487b53d2.png

登陆mysql 后给从服务器授权

mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.5.201' identified by 'rep1';

mysql> show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000005 | 3028 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.01 sec)

记录下 FILE[mysql-bin.000005] 及 Position[3028 ] 的值,在后面进行从服务器操作的时候需要用到。

2.配置从服务器,就2部

2.1 由于我的从服务器是windows,打开my.ini[ 如果是linux,则为my.cnf],将server-id = 1修改为 server-id = 10,并确保这个ID没有被别的MySQL服务所使用。

2.2执行同步SQL语句

mysql> change master to

master_host='192.168.5.200',

master_user='rep1',

master_password='rep1',

master_log_file='mysql-bin.000005',

master_log_pos=3028 ;

2.3 正确执行后启动Slave同步进程

mysql> start slave;

2.4 主从同步检查

mysql> show slave status\G

ad1b1e40a26bc5b1ed2b274014f9d8fe.png

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

下面将主数据服务器的数据手动同步到从服务器。

测试非常简单:在主数据库上 create database abcd;然后在从服务器上show databases; 看看有没有,

如果有,恭喜你,mysql主从复制你已配置好。

Notice:

如果数据没有同步,你在slave上Slave_IO_Running 与 Slave_SQL_Running这俩状态是否为yes.

如果不是你就要从新链接一下了。在主上 show master status; 记录下那俩值,然后再从上

mysql> change master to

master_host='192.168.5.200',

master_user='rep1',

master_password='password',

master_log_file='mysql-bin.000005',

master_log_pos=8888;

日志位置8888一定要对应上,不然你还是启动不了。

由此,整个MySQL主从复制的过程就完成了,接下来,我们进行MySQL读写分离的安装与配置。

==========Mysql-proxy安装配置【 mysql读写分离】====================

一、安装前准备

1.mysql-proxy安装前所需依赖包

libevent 1.x or higher (1.3b or later is preferred) lua 5.1.x or higher(使用5.2版本编译时会出现大量错误) glib2 2.6.0 or higher pkg-config

libtool 1.5 or higher

MySQL 5.0.x or higher developer files gettext 0.18.2

2.获取依赖包及mysql-proxy:

1.libevent-2.0.21:https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

2.lua-5.1.5:http://www.lua.org/ftp/lua-5.1.5.tar.gz

3.glib-2.34.3:http://ftp.gnome.org/pub/gnome/sources/glib/2.34/glib-2.34.3.tar.xz

4.gettext-0.18.2:http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz

3.安装前配置环境

二、安装部署依赖包

操作系统:centOS6.4 x86_64 2.

执行yum install zlib* libffi* gcc gcc-c++ make autoconf automake libtool pkgconfig lrzsz xz ncurses* readline cmake

1.安装libevent

#tar -zxvf libevent-2.0.21-stable.tar.gz  #cd libevent-2.0.21-stable #./configure  #make

#make install

2.安装lua

#tar -zxvf lua-5.1.5.tar.gz #cd lua-5.1.5

#vi src/Makefile(64位系统必须修改) CFLAGS= -O2 -Wall $(MYCFLAGS) 添加-fPIC

CFLAGS= -fPIC -O2 -Wall $(MYCFLAGS) #make linux

#make install INSTALL_TOP=/usr/local/lua #cp etc/lua.pc /usr/local/lib/pkgconfig/ 3.安装glib

安装前检查是否有命令:msgfmt

3.安装gettext

#tar -zxvf gettext-0.18.2.tar.gz #cd gettext-0.18.2

#./configure --prefix=/usr/local/gettext #make && make install

#ln -s /usr/local/gettext/bin/* /usr/local/bin/

4.安装glib

#tar -Jxvf glib-2.34.3.tar.xz

#cd glib-2.34.3

#./configure --prefix=/usr/local/glib

#make

#make install

5.安装mysql(也可使用开发者库替代)

#groupadd -g 101 mysql

#useradd -u 501 -s /sbin/nologin -g mysql mysql

#mkdir -p /home/db_mysql/data

#chown -R mysql.mysql /home/db_mysql/data #tar -zxvf mysql-5.6.11.tar.gz

#cd mysql-5.6.11

#cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/home/db_mysql/data/mysql.sock \ -DMYSQL_DATADIR=/home/db_mysql/data \ -DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=on \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1

#make && make install

三、安装mysql-proxy

#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/glib/lib/pkgconfig

#export LUA_CFLAGS="-I/usr/local/lua/include"

#export LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" #export LDFLAGS="-L/usr/local/lib -lm"

#export CFLAGS="-I/usr/local/lib" #tar -zxvf mysql-proxy-0.8.3.tar.gz #cd mysql-proxy

#./configure --prefix=/usr/local/mysql-proxy --with-lua=/usr/local/lua --with-mysql=/usr/local/mysql

#make

#make install

#mkdir /usr/local/mysql-proxy/conf

#cp ./lib/*.lua /usr/local/mysql-proxy/conf

测试启动

#./mysql-proxy --proxy-backend-addresses=192.168.5.200:3306 --proxy-read-only-backend-addresses=192.168.5.201:3306

--proxy-lua-script=/usr/local/mysql-proxy/conf/rw-splitting.lua

提示

2013-07-03 02:39:58: (critical) plugin proxy 0.8.3 started 启动成功

在客户端使用mysql -h 192.168.157.135 -P 4040(mysql-proxy的IP及监听端口号) 若能登陆mysql则代理成功

===================华丽分割线===================

如何测试呢:

当你登陆到代理服务器上后,关闭主从复制功能[在从服务器上stop slave;],写入一条数据,如果只在master上有,slave 没有就对了。因为写数据只向master里写。

然后打开从服务器的主从复制功能[start slave;]; 然后在代理服务器上写任何一条数据,看看是否两个数据库都有了,都有就对了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值