主从复制读写分离

 

读写分离器,把所有的读都路由到从节点上,所有的写都路由的主节点上

工具:mysql-proxy()

      atlas

      mysql-router

      maxscale  ;功能比较强大,配置麻烦

这里以proxysql为列

相关网站:

https://github.com/sysown/proxysql/releases

配置:

服务器:主服务器:192.168.1.101

从节点: 192.168.1.103

从节点:192.168.1.105

路由: 192.168.1.106 (一般路由有两个网卡,一个公网,一个内部网络用于与各节点通信)

1 先配置主从复制

在安装路由器的节点上,下载proxysql包-1.3.6

 

 

配置文件:

 

datadir="/var/lib/proxysql"   它自己的状态数据目录

admin_variables=

{    admin_credentials="admin:admin"     

      mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock"

}

mysql_variables=

{

      threads=4    几个线程,一般看cpu核心数

      max_connections=2048 最大并发数

      default_query_delay=0

      default_query_timeout=36000000

      have_compress=true

      poll_timeout=2000

      interfaces="0.0.0.0:3306;/tmp/mysql.sock" 

      #default_schema="information_schema" 默认数据库

      default_schema=“mydb”

      stacksize=1048576

      server_version="5.5.30"

      connect_timeout_server=3000

      monitor_history=600000  

      monitor_connect_interval=60000

                     

      monitor_ping_interval=10000 

      monitor_read_only_interval=1500 

      monitor_read_only_timeout=500

      ping_interval_server=120000

      ping_timeout_server=500

      commands_stats=true

      sessions_sort=true

      connect_retries_on_failure=10  

}

mysql_servers =  开始记录服务器,每个{}记录一台服务器

      {

  address = "172.18.0.67"

  port = 3306

  hostgroup = 0    组

  status=“ONLINE”

weight = 1    权重

compression = 0

max_connextions=200

default: 0

}

{

address = "172.18.0.68"

  port = 3306

  hostgroup = 1   组

  status=“ONLINE”

weight = 1    权重

compression = 0

max_connextions=200

default: 0

 

}

{

address = "172.18.0.69"

  port = 3306

  hostgroup = 1   组

  status=“ONLINE”

weight = 1    权重

compression = 0

max_connextions=200

default: 0

 

  }

mysql_users:  定义用户

在主节点上 授权一个用户账号:  >  GRANT  ALL  ON  *.*  TO  ‘myadmin’@’172.16.0.%’  IDENTIFIED  BY  ‘mypass’;

                 >  FIUSH  PRIVILEGES

mysql_users:

(

      {

           username = "myadmin"

           password = "mypass"

                           

           default_hostgroup = 0   连接到那个组上

           max_connections=1000

           default_schema="mydb"    默认用那个数据库

           active = 1

      }

)

     

mysql_query_rules:   定义规则

scheduler=   调度器

mysql_replication_hostgroups=        定义那是读组那是写组

      {

           writer_hostgroup=0   写组

           reader_hostgroup=1  读组

}

启动服务:service  proxysql  start

通过路由器端连接mysql

#mysql    -umyadmin   -h172.16.0.6    -pmypass 

>

监听3306端口:

#tcpdump  -I  etn33   -nn  tcp   port  3306

 

proxysql自己的管理接口:  支持运行时修改

#mysql   -uadmin   -padmin   -hlocalhost   -S  ….. .sock

>  SHOW  DATABASES;   自己的管理库,

 

第五节: relocation

对于主从复制 ,万一主节点宕机,这么办

1对主节点做冗余

2 提升一个从节点为主节点

MHA服务:主节点高可用 MHA 就是一台主机,负责监控多个主机 必须基于ssh互相通信,

配置:

主从节点都需要配置二进制日志和中继日志

主节点:

[mysqld]

innodb-file_per_table=ON

skip_name_resolve=ON

 

server_id=1

log-bin=master-log

relay_log=relay-log

重启服务

从节点:

[mysqld]

innodb-file_per_table=ON

skip_name_resolve=ON

 

server_id=7

log-bin=master-log

relay_log=relay-log

relay_log_purge=0

read_only=1

重启服务:  systemctl   restart  mariadb.service

定义ssh

# ssh-keygen  -t  rsa  -p ‘  ’

#ssh-copy-id   -I  .ssh/id_rsa.pub   root@172.16.0.67   (先复制给本机)

#这个文件保存在  ~/.ssh/authorized_keys

复制到另外节点:

scp   -p    .ssh/aurhorized_key    .ssh/id_rsa.pub   .ssh/id_rsa    root@172.16.0.68:/root/.ssh/

四个节点都需要复制

#ssh   root@172.16.0.27 ‘ifconfig’  测试

 安装MHA 两个包都需要装,而其他节点安装node就可以

https://glthub.com

下载包  mha4mysql-manager-0.56      mha4mysql-node-0.56

yum  install  mha4mysql-*.rpm

l另外节点安装mha4mysql-node-0.56

初始化MHA

编辑配置文件:

mkdir  /etc/masterha

vim   /etc/masterha/app1.cnf

[server  default]      默认配置

user= mhaadmin

>SHOW  MASTER  STATUS;

账号可以在主节点上创建一个: GRANT  ALL  ON  *.*  TO  ‘mhaadmin’ @’172.16.0.%’  IDENTIFIED  BY   ‘mhapass’

>FIUSH  PRIVILEGES;

password= mhapass

manager_workdir=/data/materha/app1

manage_log=/data/masterha/app1/manager.log

remote_workdir=/data/masterha/app1

ssh_user=root

repl_user=repluser

repl_password=replpass

ping_interval=1

[server1]

hostname=172.16.0.67

candidate_master=1

[server2]

hostname=172.16.0.68

candidate_master=1

[server3]

hostname=172.16.0.69

candidate_master=1

检查管理mysql复制集群的连接配置参数是否ok 是否可以连接各节点

#masterha_check_ssh  –conf=/etc/masterha/app1.cnf     检查ssh

检查节点集群,    最后一行 Heath  is  ok (报从节点没有用户账号)

#masterha_check_repl  –conf=/etc/masterha/app1.cnf

在主节点上:创建用户复制到从节点

> SHOW  MASTER  STATUS;

> GRANT  REPLICATION  CLIENT,REPLICATION  SLAVE  ON  *.*  TO  ‘repladmin’@’172.16.0.%’  IDENTIFIED  BY  ‘replpasswd’ ;

> FLUSH   PRIVIEGES;

启动:

#nohup  masterha_manager  --conf=/etc/masterha/app1.cnf   &>  /data/masterha/app1/manger.log  & (后台)

启动成功后 课通过命令查看master节点状态

#masterha_check_status  --conf=/etc/masterha/app1.cnf

手动停止MHA   

#masterha_stop  --conf=/etc/masterha/app1.cnf

测试故障转移

1 直接把主节点kill掉

killall  -9   mysqld  mysqld_safe

在MHA 看日志是否切换

#less   /data/masterha/app1/manage.log

修复之前的主节点,转化为一个从节点

      1 修改配置文件

      2 备份恢复

      3 连接主节点

 

转载于:https://www.cnblogs.com/huxl1/p/9630413.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值