MySQL主从复制&读写分离&分库分表
MySQL主从复制
MySQL的主从复制只能保证主机对外提供服务,从机是不提供服务的,只是在后台为主机进行备份数据
首先我们说说主从复制的原理,这个是必须要理解的玩意儿:
理解:
MySQL之间的数据复制的基础就是二进制日志文件bin log ,Master的所有操作都会纪录在二进制日志文件中,其他MySQL通过一个IO线程与其进行通信,监控这个日志文件的变化,并将变化赋值到Slave的中继日志relay中,然后SQL线程会执行中继日志中的相关操作,以此实现主从数据库的一致性,也就是主从复制
主从搭建,配置 Master
准备材料如下:
分别装在两台Linux服务器上的数据库
master:192.168.159.159
slave : 192.168.159.169
master数据库配置文件修改:my.cnf
各自的安装方式不一样,我是通过rpm方式安装的,
在这里扩展一下: 通过这两个命令,大致发现了我的MySQL的安装目录
当然我的配置文件在在 /etc/mysql/my.cnf 在[mysqld]段下添加如下内容
log-bin=mysql-bin
server-id=159
然后重启Mysql: service mysqld restart
登录到MySQL建立账户并授权给Slave
mysql> CREATE USER 'chen'@'192.168.159.169' IDENTIFIED BY 'chen'; #创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.159.169'; #为其权限
mysql>flush privileges; #刷新权限
然后查看master状态,记录二进制文件名( mysql-bin.000002 ) 和位置(787)
Master 到这里就配置完成了,下面配置 Slave
第一步修改从服务器的配置文件 : my.conf : server-id=135
第二步删除UUID文件: /var/lib/mysql/auto.cnf 后重新启动服务 :reboot
第三步登入MySQL,进行从服务器的配置 ,并开启从服务器复制功能
change master to master_host='192.168.159.159',master_port=3306,master_user='chen',master_password='chen',master_log_file='mysql-bin.000002',master_log_pos=787;
开启从服务器的复制功能 : start slave;
检查从服务器的复制功能状态:show slave status\G
相关的命令:
stop slave 可以停止 从服务器
reset slave 清空从服务器的规则
start slave 启动从服务器
show slave status 查看从服务器状态
show master status 查看主服务器状态
注意:当我们已经完成了主从后,在不关闭的情况下,在创立新的主从关系会报错
下面就可以开始测试 ,测试就不写具体得了,在主服务器中增加或者修改一个数据,然后我们在从服务器中查询看是否做到数据一致即可。
MySQL-Proxy实现读写分离
主从的作用主要体现在备份数据上,要想做到MySQL支持高可用和高并发还需要集群,完成主从复制和读写分离
读写分离环境:
主服务器:192.168.159.159 + MySQL-Proxy读写分离软件
从服务器:192.168.159.169
从服务器:192.168.159.179
三台服务器都关闭防火墙 iptables -L service iptablesstop
三台服务器关闭selinux 采用临时关闭,长久关闭修改 : /etc/selinux/config 将SELINUX设置为disabled
临时关闭 :setenforce 0 | 查看状态: getenforce
一、安装MySQL-Proxy
https://downloads.mysql.com/archives/proxy/
我是上传到 /usr/local/ 下的
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz #解压文件
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit mysql-proxy #更改目录名
二、创建主配置文件
cd /usr/local/mysql-proxy
mkdir lua #创建脚本存放目录
mkdir logs #创建日志目录
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本
vi /etc/mysql-proxy.cnf #创建配置文件,并将下面内容写入
[mysql-proxy]
user=root
admin-username=root #主从mysql共有的用户
admin-password=123456 #用户的密码
proxy-address=192.168.159.110:4040 #mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=192.168.159.169 #指定后端从slave读取数据
proxy-backend-addresses=192.168.159.159 #指定后端主master写入数据
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua #指定读写分离配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua #指定管理脚本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log #日志位置
log-level=debug #定义log日志级别,由高到低分别有(error|warning|info|message|debug)
daemon=true #以守护进程方式运行
keepalive=true #mysql-proxy崩溃时,尝试重启
#保存退出后 给权限
chmod 660 /etc/mysql-porxy.cnf
三、修改读写分离配置文件
vim /usr/local/mysql-proxy/lua/rw-splitting.lua
vim /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = 1, #默认8,改为1
is_debug = false
}
end
四、启动MySQL-proxy
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
五、测试读写分离
在主服务器上创建用户用于MySQL-Proxy使用,从服务器也会同步这个操作
grant all on . to 'chen'@'192.168.159.159' identified by 'root';
mysql> grant all on *.* to 'chen'@'192.168.159.159' identified by 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
然后就报错了,MySQL的密码策略阻止了我们,不过没关系,我已经见怪不怪了,设置过好多回了
SHOW VARIABLES LIKE 'validate_password%'; #查看mysql初始密码策略
set global validate_password_policy=LOW; #设置密码的验证强度等级,只验证密码长度
set global validate_password_length=4; #默认密码长度为8,我们给其设置为4
再次执行: grant all on . to 'chao'@'192.168.159.179' identified by 'root';
MySQL主从复制&读写分离&分库分表的更多相关文章
- Mycat安装并实现mysql读写分离,分库分表
Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...
- Docker安装Mycat并实现mysql读写分离,分库分表
Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...
- Mycat 读写分离+分库分表
上次进过GTID复制的学习记录,已经搭建好了主从复制的服务器,现在利用现有的主从复制环境,加上正在研究的Mycat,实现了主流分布式数据库的测试 Mycat就不用多介绍了,可以实现很多分布式数据库的功 ...
- 读写分离&分库分表学习笔记
读写分离 何为读写分离? 见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上. 这样的话,就能够小幅提升写性能,大幅提升读性能. 我简单画了一 ...
- SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
读写分离:为了确保数据库产品的稳定性,很多数据库拥有双机热备功能.也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器:第二台数据库服务器,主要进行读的操作. 目前有多种方式实现读写分离,一种 ...
- Django 数据库读写分离 分库分表
多个数据库 配置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BA ...
- Mycat实现mysql主从复制(读写分离)
数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...
- mysql主从复制-读写分离
mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...
- 重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践
一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库 ...
随机推荐
- [转载]Ubuntu Server下配置UTF-8中文环境
转载自:http://www.gaojinbo.com/ubuntu-server%E4%B8%8B%E9%85%8D%E7%BD%AEutf-8%E4%B8%AD%E6%96%87%E7%8E%AF ...
- 【Luogu】【关卡2-13】线性数据结构(2017年10月)【还差一道题】
任务说明:数组,链表,队列,栈,都是线性结构.巧用这些结构可以做出不少方便的事情. P1996 约瑟夫问题 n个人,排成环形,喊到m的人出列,输出出列顺序. 咳咳,这个题目不好写,尽管简单就是模拟题. ...
- idea 右键没有class文件的问题,,
修改文件夹的 属性 蓝色即为java代码,,绿色为test,,等等
- rem与px的相爱相杀
rem 简介:为元素设定字体大小:相对大小:只相对HTML根元素. 优点:只修改根元素就可以成比例调整所有字体的大小. bug:IE8及更早版本不兼容. hack:多写一个绝对单位px的声明,不兼容版 ...
- 创建一个wx.App的子类
#_author:来童星#date:2019/12/20#创建一个wx.App的子类import wxclass App(wx.App): #初始化方法 def OnInit(self): frame ...
- 基于SpringBoot的花里胡哨配置
花里胡哨的配置 记录一下流行框架的一些常用配置 lomback配置文件 <?xml version="1.0" encoding="UTF-8"?> ...
- 编码格式分类: 前后端传递数据的编码格式contentType
urlencoded:form表单和ajax提交数据的默认编码格式 form-data:传文件 application/json:json格式数据 >>> 前后端分离 urlenco ...
- html+css 常用布局
1.中间固定宽度,两侧自适应 1.1 flex布局 <!DOCTYPE html><html lang="en"> <head> <met ...
- monkeyrunner 进行多设备UI测试
monkeyrunner进行多设备UI测试 首先你要连接好多个手机设置好已经连接好的手机的ip列表ipp = ['192xxx','192xxx']杀掉之前所有appium进程subprocess. ...
- delphi基础篇之数据类型概论
delphi基础篇之数据类型概论 Object Pascal 语言提供了非常丰富的数据类型,即简单类型(Simple).字符串类型(String).结构类型(Struct).指针类型(Pointer) ...