mysql 主从-中继-从 再到读写分离 中间件mycat

查看MySQL当前的字符集设置情况
show variables like ‘character_set%’;
my.cnf 里添加
character_set_server=utf8

记得先把主机名给定义了,后期做mycat 中继服务的时候
要用到

slave1 master mysql 5.7 192.168.1.147
slave2 slave中继 mysql 5.7 192.168.1.148
slave3 slave mysql 5.7 192.168.1.149

部署 master slave

在主服务器上授权用户
grant replication slave on * .* to repl@‘192.168.1.147’
identified by ‘123456’;

flush privileges 刷新权限
vim /etc/my.cnf 修改配置 增加以下选项

server-id=1
binlog-do-db=HA
log-bin=mysql-bin-master
binlog-ignore-db=mysql
sync-binlog=1
binlog-format=row

然后重启服务
systemctl restart mysqld

导出朱服务器完整备份 拷贝到 中继服务器和slave 服务器
mysqldump -uroot -p 123456 -B HA>ha.sql
scp ha.sql 1921.68.1.147:/root
scp ha.sql 1921.68.1.147:/root

部署slave 中继
导入数据库ha.sql
mysql -uroot -p123456 <ha.sql
配置my.cnf

server-id= 2
#修改主配置文件也要开启bin-log:
log-bin=mysql-bin-slave1
log-slave-updates=1 #把它从relay-log当中读取出来的二进制日志并且这本机上执行的操作也记录这自己的二进制日志里面,这样才能使第三台slave通过中继slave读取到相应数据变化
binlog-format=row

重启服务 systemctl restart mysqld
授权

mysql> stop slave;
mysql> change master to master_host=‘192.168.1.147’,master_user=‘repl’,
master_password=‘123456’;
mysql> start slave;
查看中继服务的状态
mysql> show slave status \G

再授权一个用户给salve
grant replication slave on . to ‘repl’@‘19.168.1.149’ identified by ‘123456’;
flush privileges 刷新状态

部署slave–>192.168.1.149
mysql -uroot -p123456 <ha.sql
配置my.cnf
server-id = 3
log-bin=mysql-bini-slave2
binlog-format=row
重启服务

指定slave中继服务作为slave3的主:
mysql> stop slave;
mysql> change master to master_host=‘192.168.1.149’,
master_user=‘repl’,
master_password=‘123456’;
mysql> start slave;
查看从服务的状态
mysql> show slave status \G

中继服务器可以修改表的引擎,实现不存储数据
先关闭 日志记录再修改 set sql_log_bin=off
mysql> alter table t1 ENGINE=blackhole;
再开启日志 set sql_log_bin=on

排错环节主从不同步怎么办
解决1 reset slave 重置slave
flush privileges; 刷新权限
解决2
跳过错误的事务
从库上执行
stop slave
set global sql_slave_skip_counter=1 这个意思是从 row 这个日志里从新读取内容
start slave;

解决办法3 从主库里添加不对应得字段或者数据
重置slave
slave比较少的时候还可以,但是当从库有几十台时,逐台去处理既费时又容易出错,怎样在主库这一侧一劳永逸地避免呢?
那很简单,我们不要让主库将alter语句记录到binlog中就行
我们直接这主库中关闭binlog记录
mysql> set sql_log_bin=off;
然后我们再执行alter语句
mysql> alter table student add age int default 0 after name;
再开启bin-log
mysql> set sql_log_bin=on;
这种要求对齐binlog
先到作为它的主上查看binlog
show master status;
再到从库
stop slave
reset slave
mysql> stop slave;
mysql> change master to master_host=‘10.10.10.65’,
master_user=‘repl’,
master_password=‘123456’,master_log_file=‘mysql-bin-slave1.000002’,
master_log_pos=415;
mysql> start slave;

mycat 中间件安装
Mycat 需要安装JDK 1.7 或者以上版本
第一步:下载jdk-8u131-linux-x64.tar.gz文件 http://haixi.sfkcn.com:8080/201704/tools/jdk-linux-x64.tar.gz
第二步:新建/usr/java文件夹,将jdk-8u131-linux-x64.tar.gz放到该文件夹中,并解压到当前目录下
第三步:配置环境变量 在/etc/profile底部加入如下内容:
JAVA_HOME=/usr/java/jdk1.8.0_131 PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH CLASSPATH= J A V A H O M E / j r e / l i b / e x t : JAVA_HOME/jre/lib/ext: JAVAHOME/jre/lib/ext:JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH [root@xuegod68 java]# source /etc/profile #使环境变量生效
查看java –version

mycat 我用得是1.5的版本

MyCAT在Linux中部署启动时,首先需要在Linux系统的环境变量中配置MYCAT_HOME,操作方式如下:

  1. vi /etc/profile,在系统环境变量文件中增加
    MYCAT_HOME=/usr/local/mycat PATH= M Y C A T H O M E / b i n : MYCAT_HOME/bin: MYCATHOME/bin:PATH
  2. 执行 source /etc/profile 命令,使环境变量生效。

vi /etc/hosts
例如:我有3台机器,配置如下:
IP 主机名:
192.168.1.147 slave1
192.168.1.148 slave2
192.168.1.149 slave3
编辑完后,保存文件。

mycat的用户账号和授权信息是在conf/server.xml文件中配置
Vim /usr/local/mycat/conf/server.xml

<?xml version="1.0" encoding="UTF-8"?>

<mycat:server xmlns:mycat=“http://org.opencloudb/”>

druidparser


123456
HA


user
HA
true

</mycat:server>

编辑MyCAT的配置文件schema.xml,关于dataHost的配置信息如下:
Vim /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?>

<mycat:schema xmlns:mycat=“http://org.opencloudb/”>




select user()




</mycat:schema>

有两个参数需要注意,balance和 switchType。
其中,balance指的负载均衡类型,目前的取值有4种:

  1. balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
  2. balance=“1”,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
  3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发。
  4. balance=“3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
    switchType指的是切换的模式,目前的取值也有4种:
  5. switchType=‘-1’ 表示不自动切换
  6. switchType=‘1’ 默认值,表示自动切换
  7. switchType=‘2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
  8. switchType='3’基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。
    经过以上两个步骤的配置,就可以到/usr/local/mycat/bin 目录下执行:

启动mycat
进入bin 目录下
./mycat start 有的时候需要启动两次才能启动起来
也可以用这个方法启动
mycat
mycat start
tail –f /usr/local/mycat/logs/wrapper.log 查看启动日志

mycat 是一个单独的服务器,装mycat 必须要装mysql
登录mysql -uroot -p -h(自己主机的ip 号) -P 8066
这样我们就能控制主从的共享HA 库了
当从服务器挂掉之后 主服务器能正常读写工作
当主服务器挂掉之后能正常读,但是不能写
vim /conf/log4j.xml 修改配置文件我们就能看到主从的日志了
level value= “info” 模式
改成
level value= “debug”
tail -f /logs/mycat.logs 查看实时log日志

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值