数据库读写分离服务

读写分离服务器

准备工作:

主服务器:192.168.1.11
从服务器:192.168.1.12
mycat服务器:192.168.1.13
主从服务器需要安装mysql包,mycat服务器解压mycat压缩包

步骤:

步骤一:搭建主从同步结构

1)配置主服务器192.168.1.11

    ]# vim /etc/my.cnf
    [mysqld]
    server_id=11    //指定服务器ID号 
    log-bin=master11        //启用binlog日志,并指定文件名前缀
    ...
    [root@master10 ~]# systemctl restart mysqld        //重启mysqld

2)主服务器授权用户,查看binlog日志信息

    ]# mysql -uroot -p123456
    mysql> grant all on *.* to 'repluser'@'%' identified by '123qqq...A';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    mysql> show master status;
    +-----------------+----------+--------------+------------------+-------------------+
    | File      | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +-----------------+----------+--------------+------------------+-------------------+
    | master11.000001 |      449 |              |                  |                   |
    +-----------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

3)配置从服务器192.168.1.12

]# vim /etc/my.cnf

[mysqld]
server_id=52 //指定服务器ID号,不要与Master的相同
:wq

]# systemctl restart mysqld

4)配置从服务192.168.1.12,指定主服务器的信息,日志文件、偏移位置(参考主服务器的状态输出)

    ]# mysql -uroot -p123qqq...A
    mysql> change master to master_host='192.168.4.11',
        -> master_user='repluser',
       -> master_password='123qqq...A',
        -> master_log_file='master11.000001',
        -> master_log_pos=449;
    Query OK, 0 rows affected, 2 warnings (0.01 sec)
   
    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> show  slave status\G;  //IO线程和SQL线程都是YES状态才成功
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.4.51
                      Master_User: repluser
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: master51.000001
              Read_Master_Log_Pos: 738
                   Relay_Log_File: slave20-relay-bin.000002
                    Relay_Log_Pos: 319
            Relay_Master_Log_File: master51.000001
                 Slave_IO_Running: Yes        //IO线程YES
                Slave_SQL_Running: Yes        //SQL线程YES
......
    1 row in set (0.00 sec)

5)测试配置,在主服务器上创建一个数据库aa

    ]# mysql –uroot –p123qqq...A
    mysql> create database aa;
    Query OK, 1 row affected (0.00 sec)
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | aa                 |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)

6)从服务器上查看,有aa库

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | aa                 |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)

步骤二:部署mycat服务
1)安装java-1.8.0-openjdk-devel包

]# yum -y install java-1.8.0-openjdk //安装JDK

2)安装提供服务的软件包

[root@mycat56 ~]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz //解压源码
[root@mycat ~]# cp -r mycat /usr/local/

3)在主服务器上授权admin用户

mysql > grant all on *.* to admin@"%" identified by "123qqq...A";

4)在从服务器上授权读用户

mysql> create user 'read'@'%' IDENTIFIED BY '123qqq...A';
mysql> grant select on *.* to 'read'@'%';
mysql> select user,host from mysql.user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| admin     | %         |
| read      | %         |
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
4 rows in set (0.00 sec)

5)修改配置文件schema.xml文件

//删除schema之间的所有的信息,添加dataNode=“dn1”
//修改balance=“3”,
//添加写主机的ip地址,授权用户,密码
//添加读主机的ip地址,授权用户,密码
//删除多余的其他信息
        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">	
        </schema>
         <dataNode name="dn1" dataHost="localhost1" database="db1" />
         
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"

                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->

                <writeHost host="hostmaster1" url="192.168.1.11:3306" user="admin"
                                   password="123qqq...A">

                        <!-- can have multi read hosts -->
                        <readHost host="slavehostS2" url="192.168.1.12:3306" user="read" password="123qqq...A" />
                </writeHost>
        </dataHost>
</mycat:schema>

6)启动服务

[root@mycat conf]# /usr/local/mycat/bin/mycat start

7)查看端口号

[root@mycat conf]# ss -antlp | grep 8066
LISTEN     0      100         :::8066                    :::*                   users:(("java",pid=18583,fd=78))

步骤三:测试mycat读写分离
1)登录到读写分离服务器的数据库

[root@mycat conf]# mysql -h192.168.1.13  -P8066 -uroot  -p123456
MySQL [TESTDB]> select @@hostname;
+------------+
| @@hostname |
+------------+
| slave      |
+------------+

创建数据库

MySQL [TESTDB]> create database db2;

在主从数据库都能查到数据库db2,所以实现了读操作是读取从服务器中数据库信息,而写操作是在主服务器的数据库操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值