zoukankan      html  css  js  c++  java
  • MySQL主从复制与读写分离[修改]


    作者:lixiuran 日期:2014年5月2日   备注【本人根据网上资源修改,参考http://www.cnblogs.com/luckcs/articles/2543607.html

    测试环境: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

    登陆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 statusG

     

    其中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

    5.mysql-5.6:http://dev.mysql.com/downloads/mysql/ 

    6.mysql-proxy-0.8.3:http://dev.mysql.com/downloads/mysql-proxy/ 

    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;]; 然后在代理服务器上写任何一条数据,看看是否两个数据库都有了,都有就对了。

  • 相关阅读:
    【正则表达式】正则表达式基础语法
    【JavaWeb】实现二级联动菜单
    【JavaWeb】jQuery对Ajax的支持
    MySQL复习值代码知识点(2)
    easyUI+servlet+mysql项目总结
    Android环境配置(Eclipse全开发环境下载)
    jsp+servlet+mysql简单实现用户登陆注册
    java的异常抛出throws和throw的简单使用
    关于Java的多线程Runnable的个人理解(基础,不讲概念)
    Eclipse中代码自动添加注释及代码注释模板
  • 原文地址:https://www.cnblogs.com/lixiuran/p/3703667.html
Copyright © 2011-2022 走看看