MySQL(9)主从复制和读写分离

1.理解MySQL主从复制原理。

复制是MySQL提供的一直高可用、高性能的解决方案,一般用来建立大型的应用,总体来说,分为以下三步:
    (1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
    (2)slave将master的binary log events拷贝到它的中继日志(relay log);
    (3)slave重做中继日志中的事件,将改变反映它自己的数据。

2.完成MySQL主从复制。 

=============================================================

1.在主服务器(master)上

启用二进制日志

选择一个唯一的server-id

创建具有复制权限的用户

2.在从服务器(slave)上

启用中继日志(二进制日志可开启,也可不开启)

选择一个唯一的server-id

连接至主服务器,并开始复制

==============================================================

1)设置server-id值并开启binlog参数

[mysqld]

log-bin = mysql-bin

server_id = 1

停止数据库# systemctl stop mysqld

启动数据库#systemctl start mysqld

show variables like '%log_bin%';

可见log-bin 开

2)建立同步账号

mysql> grant replication slave  on *.* to  rep@'192.168.95.%' identified by'123456';

mysql> show  grants   for   rep@'192.168.95.%';

3)锁表设置只读

为后面备份准备,注意生产环境要提前申请停机时间;

mysql> flush  tables with read lock;

提示:如果超过设置时间不操作会自动解锁。

mysql> show variables  like'%timeout%';

测试锁表后是否可以创建数据库:

4)查看主库状态

查看主库状态,即当前日志文件名和二进制日志偏移量

mysql> show  master status;

5)备份数据库数据

# mysqldump -uroot -p -A -B |gzip >   /backup/mysql/mysql_bak.$(date +%F).sql.gz

6)解锁

mysql> unlock  tables;

7)主库备份数据上传到从库

scp mysql_bak.2021-01-26.sql.gz 192.168.83.134:/tmp

从库上设置

1)设置server-id值并关闭binlog参数

停止数据库# systemctl stop mysqld

启动数据库#systemctl start mysqld

2)还原从主库备份数据

# cd /server/backup/

# gzip -d mysql_bak.2015-11-18.sql.gz

# mysql -uroot -p < mysql_bak.2015-11-18.

sql检查还原:

# mysql -uroot -p -e 'show databases;'

3)设定从主库同步

4)启动从库同步开关

mysql> start slave;

检查状态:show  slave status\G

3.完成MySQL读写分离配置

Mycat实现MySQL主从复制读写分离

MyCAT的安装及部署

链接:https://pan.baidu.com/s/16Z7NFKuL2WX8b1ZKpk9AwA
提取码:yang

1>、部署jdk环境MyCAT用Java开发,需要有JAVA运行环境,mycat依赖jdk1.7的环境

rpm -ivh jdk-8u144-linux-x64.rpm

测试 :  java -version

2>、安装Mycat

链接:https://pan.baidu.com/s/1bkDv1WkwXXr2YzBtvCRY8w
提取码:yang

tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

3)添加环境变量

export PATH=$PATH:/usr/local/mycat/bin

[root@localhost mycat]# source /etc/profile.d/mycat.sh (当前生效)

3>、读写分离配置

1)不使用Mycat托管MySQL主从服务器,简单使用如下配置

#注意:配置前备份下配置文件

先做一个备份吧

打开

vim schema.xml

(1)<schema name="TESTDB"checkSQLschema="false"sqlMaxLimit="100"dataNode="dn1">

这里的TESTDB就是我们所宣称的数据库名称,必须和server.xml中的用户指定的数据库名称一致。添加一个dataNode="dn1",是指定了我们这个库只有在dn1上,没有分库。

(2)<dataNode name="dn1"dataHost="localhost1"database="db1" />

这里只需要改database的名字,就是你真是的数据库上的数据库名,可根据自己的数据库名称修改。

(3) <dataHostname="localhost1"maxCon="1000"minCon="10"balance="1"writeType="0"dbType="mysql"dbDriver="native"switchType="1"slaveThreshold="100">

balance

1、balance=0不开启读写分离机制,所有读操作都发送到当前可用的writehostle

.2、balance=1全部的readhost与stand by writeHost 参与select语句的负载均衡。简单的说,双主双从模式(M1->S1,M2->S2,并且M1和M2互为主备),正常情况下,M1,S1,S2都参与select语句的复杂均衡。

3、balance=2所有读操作都随机的在readhost和writehost上分发

writeType负载均衡类型,目前的取值有3种:

1、writeType="0", 所有写操作发送到配置的第一个writeHost。

2、writeType="1",所有写操作都随机的发送到配置的writeHost。

3、writeType="2",不执行写操作。

switchType

1、switchType=-1表示不自动切换

2、switchType=1默认值,自动切换

3、switchType=2基于MySQL 主从同步的状态决定是否切换

datahost其他配置

<dataHost name="localhost1"maxCon="1000"minCon="10"balance="1"writeType="0"dbType="mysql"dbDriver="native"switchType="1">

maxCon="1000":最大的并发连接数

minCon="10":mycat在启动之后,会在后端节点上自动开启的连接线程

tempReadHostAvailable="1"

这个一主一从时(1个writehost,1个readhost时),可以开启这个参数,如果2个writehost,2个readhost时

<heartbeat>select user()</heartbeat> 监测心跳

(4)写与读

4>、创建管理用户

grant insert,delete,update,select on db1.* to mycat@'192.168.83.%' identified by '123456';

收回权限

revoke INSERT, UPDATE, DELETE ON school.* from 'mycat'@'192.168.83.%';

配置基本完成

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值