mysql数据库读写分离

 两个数据库的IP地址:
        Master IP:192.168.0.100
        Slaves IP:192.168.0.101
1. Master数据库在my.ini(linux my.cnf)中添加的配置
           server-id = 1
           log-bin=mysql-bin                #开启主服务器二进制日志记录
           binlog-do-db=YNedut        #需要同步的数据库名,可写多行
     
           binlog-ignore-db=mysql      #不需要同步的数据库名,可写多行
           max_allowed_packet = 32M         #两台服务器同步时允许传递的包大小
2.    Master上运行下面的命令
         
          grant replication slave on *.* to 'admins'@'192.168.0.101' identified by '123’;
         备注:在master中为slaves授权
                    A. 账号:admins
                    B. 密码:123
                    C. 授权的ip地址为:192.168.0.101
3.  查看master数据库的状态
          
                     Mysql> show master status;
                     +------------------+----------+--------------+------------------+  
                      | File      | Position| Binlog_Do_DB|Binlog_Ignore_DB |    
                    +------------------+----------+--------------+------------------+    
                      | MySQL-bin.000001 |  107 |       |         |
                     +------------------+----------+--------------+------------------------+--------------------------------+ 
4.    Master遇到问题的解决方案
        
                reset master; //重置 master;
                flush logs;//重置过后 show master status;中的MySQL-bin.000001
                //的序号加1= MySQL-bin.000002。
5. Slaves数据库在my.ini(linux my.cnf)中添加的配置
               server-id=2   #必须跟master不一样
               max_allowed_packet = 32M         #两台服务器同步时允许传递的包大小
6. Slaves上运行下面的命令
         
         change master to master_host='192.168.100',master_user='admins',master_password='123',
         MASTER_LOG_FILE='MySQL-bin.000001',MASTER_LOG_POS=107;
        备注:MASTER_LOG_FILE='MySQL-bin.000001',MASTER_LOG_POS=107;为show master status;查询
出来的状态值。
7. Slaves上运行下面的命令启动数据同步
          Mysql> slave start;
8. Slaves上遇到问题的解决方案
           A. slave stop;
           B. reset slave; //解决server_errno=1236;
           C. Mysql> show slave status;//查看主从复制的状态
              备注:如果看到error表示没有同步成功,查看MYSQL日志找到错误原因
              存放mysql数据文件的地址下的计算机名.err。/usr/local/mysql/var/localhost.localdomain.err
9. Master与Slaves的测试
           A. Master 和Slaves的表结构必须保持一致。
           B. 在Master和Slaves中分别创建一张test表
                                CREATE TABLE `syn` (
                                                  `id` int(11) NOT NULL,
                                                  `value` varchar(30) DEFAULT NULL,
                                                   PRIMARY KEY (`id`)
                                             ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
C. 在master中插入一条数据
                     INSERT INTO `syn` VALUES ('1', 'test');
                  备注:如果Salves中有刚才在master中插入的数据则同步成功;否则同步失败!
2、 Mysql proxy 安装
       2.1.   Linux下所依赖的包
                        A. GC++
                        B. Glib
                        C. LUA5.1
                       D. Libevent
             2.2.  MySQL Proxy 安装 
                        [root@localhost ~]#tar -zxvf mysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz -C /usr/local/mysql/
                        [root@localhost ~]#cd /usr/local/mysql
                        [root@localhost mysql]#mv mysql-proxy-0.6.1-linux-rhel4-x86-32bit/ mysql-proxy
                        [root@localhost sbin]# export PATH=$PATH:/usr/local/mysql/mysql-proxy/sbin/
3. 使用MySQL Proxy
         3.1、查看帮助选项
                    [root@localhost ~]# mysql-proxy --help-all
         3.2、对MySQL 操作
                    MySQL服务器假设已经安装。(安装步骤这里就不写了)
                   两台机器上的表初始结构和数据都是一样的,而且都有admins这个用户(密码必须一致)。
                   启 动 MySQL-Proxy ( 测 试 读 写 分 离 )
                  [root@localhost]# mysql-proxy
        --proxy-read-only-backend-addresses=192.168.0.101:3306   --proxy-backend-addresses=192.168.0.100:3306   --proxy-lua-script=/usr/local/mysql/mysql-proxy/share/mysql-proxy/rw-splitting.lua
           备注:192.168.0.101:3306 提供只读服务
                       192.168.0.100:3306 提供写服务
3.3、Mysql-proxy 的默认端口为4040
3.4、数据测试为用mysql client 连接 mysql-proxy进行数据操作

猜你喜欢

转载自sunshinevsboy.iteye.com/blog/1999225
今日推荐