160815、mysql主从复制/读写分离
mysql主从复制
主服务器IP:192.168.99.10
从服务器IP:192.168.99.20
(一)安装mysql(主从服务器操作相同)
yum -y install gcc gcc-c++ ncurses-devel
增加组和用户
#/usr/sbin/groupadd mysql
#/usr/sbin/useradd -g mysql mysql -s /sbin/nologin
解压、编译、安装
#tar xvf mysql-5.1.35.tar.gz
#cd mysql-5.1.35
#./configure –prefix=/usr/local/mysql –localstatedir=/data/mysql/data –with-extra-charsets=utf8,gb2312,gbk –with-pthread –enable-thread-safe-client
#make && make install
拷贝配置文件
#cp support-files/my-large.cnf /etc/my.cnf
修改权限
#chown -R mysql.mysql /usr/local/mysql
初始化数据库
#/usr/local/mysql/bin/mysql_install_db –user=mysql
改变权限
#chown -R mysql:mysql /data/mysql/data
(二)修改配置文件
主服务器
server-id = 1
从服务器
server-id = 2..3..4依次增加
(三)启动服务(主从相同)
#/usr/local/mysql/bin/mysqld_safe –user=mysql&
(四)授权(仅主服务器)
mysql>GRANT REPLICATION SLAVE ON *.* to ‘rep’@’192.168.99.%’ identified by ‘sasasa';
(五)查询主数据库状态(主服务器上)
mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000003 | 771 | | |
+——————+———-+————–+——————+
记住file和position的值
(六)配置从服务器
mysql> change master to master_host=’192.168.99.10′, master_user=’rep’, master_password=’sasasa1′, master_log_file=’mysql-bin.000003′, master_log_pos=771;
master_host主服务器ip,master_user连接帐户,master_password连接密码,maser_log_file填入上面的file值,master_log_pos填入上面的position值
mysql> start slave; 启用了复制功能
mysql> show slave statusG; 检查slave状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.99.10
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 771
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000003
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: 771
Relay_Log_Space: 410
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:
注意:Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 如果这两个状态不是yes,那么请检查上面的配置是否正确,主要是file和position设置是否正确,从库是否能用主库的账号登陆
如果主服务器还有数据传输,那么先进行锁表操作 mysql> FLUSH TABLES WITH READ LOCK; 然后按照第五步的进行操作
安装mysql-proxy分发请求
(一)安装依赖包
lua-5.1
#tar zxvf lua-5.1.tar.gz
#cd lua-5.1
#sed -i ‘s#INSTALL_TOP= /usr/local#INSTALL_TOP= /usr/local/lua#’ Makefile
#make posix && make install
libevent-1.1a
#tar zxvf libevent-1.1a.tar.gz
#cd libevent-1.1a
#./configure –prefix=/usr/local/libevent
#make && make install
check-0.8.4
tar zxvf check-0.8.4.tar.gz
cd check-0.8.4
./configure
make
make install
(二)安装mysql客户端
#tar zxvf mysql-5.1.35.tar.gz
#cd mysql-5.1.35
#./configure –prefix=/usr/local/mysql –without-server
#make && make install
(三)设置环境变量
export LUA_CFLAGS=”-I/usr/local/lua/include” LUA_LIBS=”-L/usr/local/lua/lib -llua -ldl” LDFLAGS=”-L/usr/local/libevent/lib -lm”
export CPPFLAGS=”-I/usr/local/libevent/include”
export CFLAGS=”-I/usr/local/libevent/include”
(四)安装mysql-proxy
#tar xvf mysql-proxy-0.6.1.tar.gz
#cd mysql-proxy-0.6.1
#./configure –prefix=/usr/local/mysql-proxy –with-mysql=/usr/local/mysql –with-lua
#Make && Make install
(五)创建启动脚本
#!/bin/bash
LUA_PATH=”/usr/local/mysql-proxy/share/mysql-proxy/?.lua” /usr/local/mysql-proxy/sbin/mysql-proxy –proxy-backend-addresses=192.168.99.10:3306 –proxy-read-only-backend-addresses=192.168.99.20:3306 –proxy-lua-script=/usr/local/mysql-proxy/share/mysql-proxy/rw-splitting.lua >> /var/log/mysql-proxy.log & #chmod a+x /usr/local/bin/mysql-proxy.sh
执行命令/usr/local/bin/mysql-proxy.sh启动服务
主要的命令行选项
–help-all显示所有的帮助选项
–admin-address=host:port 管理主机及端口,默认是4041
–proxy-address=host:port 代理服务器的监听地址及端口,默认4040
–proxy-read-only-address=host:port 只读连接时,代理服务器的监听地址及端口
–proxy-backend-addresses=host:port 连接真实服务器的地址及监听端口,默认是3306
–proxy-lua-script=file 指定lua脚本的名称
使用方法
mysql-proxy –proxy-backend-addresses=<master_ip> :3306
–proxy-read-only-backend-addresses=<slave_ip1>:3306
–proxy-read-only-backend-addresses=<slave_ip2>:3306
160815、mysql主从复制/读写分离的更多相关文章
- mysql主从复制-读写分离
mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...
- mysql主从复制-读写分离-原理
Mysql主从复制和读写分离 在实际的生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是不能满足实际需求的.因此,一般通过主从复制 ...
- MySQL 主从复制&读写分离 简介
1. 读写分离&读写分离 简介 主从同步延迟 分配机制 解决单点故障 总结 2. 主从复制&读写分离 搭建 搭建主从复制(双主) 搭建读写分离 1. 读写分离&读写分离 简介 ...
- Mycat+MySql 主从复制-读写分离 看这一篇就够了
通过mycat和mysql的主从复制配合搭建数据库的读写分离,可以实现mysql的高可用性,下面我们来搭建mysql的读写分离. 1.一主一从 1.在node01上修改/etc/my.cnf的文件 ...
- mysql主从复制+读写分离 菜鸟入门
MYsql主从复制 1.mysql主从复制原理: Master将数据变化记录到二进制日志中[binary log] Slave将master的二进制日志[binary log]拷贝到自己的中继日志[r ...
- MYSQL 主从复制,读写分离(8)
Mysql 数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据文件,而是通过binlog日志复制到需要同步的服务器上. 一 主从复制的原理实现 原理图解说: 数据库更改 生成数据 ...
- Mycat实现mysql主从复制(读写分离)
数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...
- Mysql主从复制读写分离
一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来 ...
- MySQL主从复制&读写分离&分库分表
MySQL主从复制 MySQL的主从复制只能保证主机对外提供服务,从机是不提供服务的,只是在后台为主机进行备份数据 首先我们说说主从复制的原理,这个是必须要理解的玩意儿: 理解: MySQL之间的数据 ...
随机推荐
- 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core
百度地图和高德地图坐标系的互相转换 GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...
- Cocos2d-x开发---关于安卓打包所遇到的错误记录
非常久都没有在安卓打过包了.之前的项目因为某些问题没有考虑做安卓版本号,所以涉及到安卓打包的时候都是自己在折腾. 这段时间离职了,空余时间就有非常多了.所以我能够折腾点事了.想起来 ...
- WCF实现客户端和服务端
service side 1.定义ServiceContract: 2.new a ServiceHost 3. add endpoint using System.ServiceModel; nam ...
- NFC Basics(基本NFC)——翻译自developer.android.com
NFC Basics 关于收发NDEF格式的消息,以及相关的api. 非NDEFdata以及其它更深入技术请參见Advanced NFC. 在android端使用NDEF有两种情况: - 从标签读取N ...
- Atitit.100% 多个子元素自适应布局属性
Atitit.100% 多个子元素自适应布局属性 1.1. 原理1 1.2. Table布局1 1.3. Css布局1 1.4. 判断amazui加载完毕2 1.1. 原理 每个子元素平均分配,但是有 ...
- 李洪强iOS开发之iOS好文章收集
李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...
- java中的锁池和等待池
在java中,每个对象都有两个池,锁(monitor)池和等待池 wait() ,notifyAll(),notify() 三个方法都是Object类中的方法. 锁池:假设线程A已经拥有了某个对象(注 ...
- CCNA2.0笔记_VTP
VTP(VLAN Trunking Protocol) 一个能够宣告VLAN配置信息的信息系统: 通过一个共有的管理域,维持VLAN配置信息的一致性: VTP只能在trunk端口发送要宣告的信息: 二 ...
- mybatis传多个参数实例
最近在做一个统计功能,有一个功能点:根据id更新某字段的值.那么就需要有两个参数,我的做法: dao层: int updateTaskCount(int taskCount,int id); 对应的m ...
- hdu6003 Problem Buyer 贪心 给定n个区间,以及m个数,求从n个区间中任意选k个区间,满足m个数都能在k个区间中找到一个包含它的区间,如果一个区间包含了x,那么 该区间不能再去包含另一个数,即k>=m。求最小的k。如果不存在这样的k,输出“IMPOSSIBLE!”。
/** 题目:hdu6003 Problem Buyer 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6003 题意:给定n个区间,以及m个数,求从n个区 ...