MaxScale Binlog Server实践51CTO博客 - 千亿集团

MaxScale Binlog Server实践51CTO博客

2019年03月04日08时05分56秒 | 作者: 笑天 | 标签: 主从,从库,架构 | 浏览: 1827

MaxScale Binlog Server实践简介

Part1:写在最前

在之前的博文中有提到MaxScale,作为中间件,合作MHA运用或许主从运用可完成读写别离和负载均衡,今日简略介绍下MaxScale作为Binlog Server来削减主从推迟的问题;MySQL的主从架构中,链式拓扑的架构比较简单呈现主从推迟的问题。本文侧重介绍MaxScale作为Binlog Server是怎么下降主从推迟的。


MaxScale合作MHA请移步至:


Part2:本文环境

HE1:192.168.1.248 slave

HE3:192.168.1.250 master

HE4:192.168.1.251 maxscale



架构演示


作用比照

实战

Part1:装置maxscale

[root@HE4 ~]# yum -y install maxscale-2.0.1-2.centos.6.x86_64.rpm

[root@HE4 ~]# mkdir -p /data/binlog

[root@HE4 ~]# useradd maxscale

[root@HE4 ~]# chown -R maxscale. /data/binlog

[root@HE4 ~]# cat /etc/maxscale.cnf

[maxscale]
threads=1
依据CPU核数设置
[Replication]
type=service
router=binlogrouter
user=mysync
passwd=MANAGER
# 运用主库上的repl仿制账号
# 权限:
#   GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO repl@% IDENTIFIED BY   repl;
router_options=server_id=1251,heartbeat=30,binlogdir=/data/binlog,transaction_safety=1,mariadb10-compatibility=1,send_slave_heartbeat=1
# server_id设置maxscale的,记住不能与主和从库重复,要仅有
#   heartbeat=30秒,意思为当maxscale在30秒内没有接纳到主库推送的binlog日志,发送心跳查看
#   binlogdir设置接纳binlog的寄存途径,目录特点chown -R maxscale.maxscale   /data/binlog
# transaction_safety=1此参数用于启用binlog日志中的不完整业务检测。   当MariaDB MaxScale发动时,假如当时binlog文件已损坏或找到不完整的业务,则可能会呈现过错音讯。   在正常作业期间,binlog事情不会分配到从库,直到业务现已提交。 默许值为off,设置transaction_safety = on以启用不完全业务检测。
#   send_slave_heartbeat=1敞开心跳查看
[Replication   Listener]
type=listener
service=Replication
protocol=MySQLClient
port=5308
# 后端的从库CHANGE   MASTER TO这个端口,默许5308
[CLI]
type=service
router=cli
[CLI Listener]
type=listener
service=CLI
protocol=maxscaled
port=6603


Part2:发动Maxscale

[root@HE4 ~]# /etc/init.d/maxscale start

Starting MaxScale: maxscale (pid 16680) is running...      [  OK  ]

[root@HE4 ~]# /etc/init.d/maxscale status

Checking MaxScale status: MaxScale (pid  16680) is running.[  OK  ]


Part3:从库装备

[root@HE1 ~]# mysql -umysync -pMANAGER -h192.168.1.251 -P5308
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3196
Server version: 10.0.0 2.0.1-maxscale
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type help; or \h for help. Type \c to clear the current input statement.
MySQL [(none)]>  CHANGE MASTER TO MASTER_HOST=192.168.1.250,MASTER_USER=mysync,MASTER_PASSWORD=MANAGER,MASTER_PORT=3306,MASTER_LOG_FILE=mysql-bin.000005,MASTER_LOG_POS=20;
ERROR 1234 (42000): Can not set MASTER_LOG_POS to 20: Permitted binlog pos is 4. Specified master_log_file=mysql-bin.000005
MySQL [(none)]>  CHANGE MASTER TO MASTER_HOST=192.168.1.250,MASTER_USER=mysync,MASTER_PASSWORD=MANAGER,MASTER_PORT=3306,MASTER_LOG_FILE=mysql-bin.000005,MASTER_LOG_POS=4;
MySQL [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

这儿能够看出,Maxscale binlog server只能从方位4开端装备


装备好后,在/data/binlog下生成的binlog文件

[root@HE4 ~]# cd /data/binlog/

[root@HE4 binlog]# ls

cache  master.ini  mysql-bin.000003


Part4:主库装备

[root@HE3 ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.1.16-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type help; or \h for help. Type \c to clear the current input statement.
MariaDB [(none)]> show master status;
+++++
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+++++
| mysql-bin.000005 |      652 |              |                  |
+++++
1 row in set (0.00 sec)
MariaDB [(none)]>  grant replication client,replication slave on *.* to mysync@192.168.1.% identified by MANAGER;
MariaDB [(none)]>flush privileges;



Part5:主从装备

从库指向binlogserver
[root@HE1 ~]# mysql -uroot -pMANAGER
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.16-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type help; or \h for help. Type \c to clear the current input statement.
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=192.168.1.251,MASTER_USER=mysync,MASTER_PASSWORD=MANAGER,MASTER_PORT=5308,MASTER_LOG_FILE=mysql-bin.000005,MASTER_LOG_POS=652;
Query OK, 0 rows affected (0.02 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.251
                  Master_User: mysync
                  Master_Port: 5308
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005
          Read_Master_Log_Pos: 652
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 537
        Relay_Master_Log_File: mysql-bin.000005
             Slave_IO_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: 652
              Relay_Log_Space: 835
              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: 1250
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative
1 row in set (0.00 sec)




——总结——

出产环境中,大多选用的是一主多从架构,例如星状拓扑和链式拓扑,星状拓扑在从库过多的情况下,会添加主库的io压力,而链式拓扑尽管缓解了主库的网络IO压力,但其缺陷是:二级Slave得到最新的数据,需求再通过一层的仿制才抵达,期间的推迟比一主多从架构要大。而选用maxscale binlog server则避免了这类问题。因为者的水平有限,编写时刻也很匆促,文中难免会呈现一些过错或许不精确的当地,不当之处恳请读者批评指正。


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章