主从同步、代理

一、 mysql主从同步(mysql AB复制)

1.1. 目的实现数据的自动备份

1.2. Mysql主从同步的结构

一主一从

一主多从

主从从

主主结构(互为主从)

配置一主一从:

公共配置:

1、 配置固定ip

2、 启动数据库服务

3、 关闭iptables  selinux

4、 物理连接没问题

主从的UUID不能相同(/var/lib/mysql/auto.cnf)

*从数据库服务器上一定要有数据库服务器上的库和表,且表结构也要一致2.1 配置主数据库服务器

1、 主配置文件

Vim /etc/my.cnf (配置文件的模板//usr/share/mysql/my-default.cnf)

[mysqld]

Log_bin

Server_id=253(不能重复,此处为ip的主机位)

2、 在数据库服务器中授权

grant   replication  slave  on  *.*  to  [email protected]“客户端ip”

identified  by“密码”;

service   mysql  restart    //重启服务

3、 在从服务器上登录

[[email protected] ~]# mysql –h主服务ip-uslaveuser –p密码

3.1配置从数据库服务器

1、 service  mysql  start

2、 修改自己的配置文件

Vim  /etc/my.cnf

[mysqld]

Server_id=252

Service  mysql  restart

3、 用本机的数据库服务器管理员登录,指定自己做谁的从数据库服务器。

Mysql  -hlocalhost   -uroot   -ptarena

Change  master  to  master_host=”ip主”, //连接的主服务器

Master_user=”slaveuser”,               //从连接时的用户名

Master_password=”tarena”             //从连接密码

Master_log_file= “localhost-bin.000001”  //当前用的日志

Master_log_pos=120;//从主服务器上查看。show master status;

库服务器的状态·

Mysql> show slave status\G;   //查看从数据库服务器的状态

Slave_IO_Running : yes

Slave_SQL_Running : yes

如果是no则

Start slave;     //启动从服务

与从服务器相关的文件

Ls   /var/lib/mysql/

Master_info            //保存自己连接的主数据库服务器的信息

Localhost-relay-bin.000001     //relaybinlog日志

Localhost-relay-bin.index  //保存已有的relaybinlog日志文件名

Relay-log.info      //relaybinlog日志信息

4、 验证从数据库服务器是否能同步主数据库服务器上的数据

192.168.10.253:(主服务器端)

mysql -uroot –ptarena     //登录数据库

mysql> create  database  test100;    //创建库

mysql> use  test100;            //切换库

mysql>create table  a (id int);    //创建表

insert into  a values(100);  //插入值

insert into  a values(200);

insert into  a values(300);

192.168.10.252:(从服务器端)

mysql -uroot –ptarena

select  *  from  test100.a;   能够看到 a表的3条记录 就  ok  了。

(1) Mysql主从同步的工作过程

Show   slave  status\G

Slave_IO_Running : yes

Slave_SQL_Running : yes

(2) 2个IO SQL 要同时处于YES状态 数据才可以同步成长

IO 连接主数据服务器,把主数据服务器binlog日志里内容,copy到本机的relaybinlog日志里

IO 进程出错:连接不上主数据服务器(物理线路、安全问题、授权用户),当前binlog日志名pos点和master上的不一致

(3) SQL执行本机relaybinlog日志里的SQL语句,把数据写表里。

SQL进程出错:从数据服务器本机没有主数据服务器上的库和表,

5、 常用的其他选项

ü 适用于master服务器

Binlog-do-db=name:设置master对哪些库记日志

Binlog-ignore-db=name:设置master对哪些库不记日志

ü 适用于slave服务器

Log-slave-updates:记录从库更新,允许链式(主从从结构)复制(A-B-C)

Relay-log=dbsvr2-relay-bin:指定中继日志文件名

Replicate-do-db=mysql:仅复制指定库,其他库将被忽略,此选项可设置多条(省略时复制所有库)

Replicate-ignore-db=test:不复制哪些库,其他库将忽略,ignore-db与do-db只需选择一种

Report-host=dbsvr2:报告给master的主机名或ip地址

Slave-net-timeout=60:出现网络中断时,重试超时(默认60秒)

二、 搭建MySQL代理服务器(mysql读写分离)

1、 案例拓扑:

代理服务启动时会设置负责写的数据库,负责读数据库服务器

调用脚本来区分用户的访问类型

指定自己监听的端口

在后端的数据库服务器上配置。

(1)授权代理(主从à代理)

Grant  all   on  *.*  to [email protected]”%”

identified by “123456”

(2)在主、从服务器上创建库、表(为了在测试时效果明显,主从的表中插入不同的数据)

主:mysql> create database prodb;

mysql> create table a(

-> id int(3)

-> );

mysql> insert into a values (100);

从:mysql> create database prodb;

mysql> create table a(

-> id int(3)

-> );

mysql> insert into a values (300);

在代理测试:

登录主:

[[email protected] ~]# mysql -h192.168.10.253 -uprouser -p123456

登录从:

[[email protected] ~]# mysql -h192.168.10.252 -uprouser -p123456

2、 配置代理服务

先配置代理服务器,再配置主从。

(1)主服务器释放3306端口 :service  mysqld   stop

Chkconfig  mysqld  off

(2)安装软件包

[[email protected]~]#tar zxf                //解压软件包

mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz–C /usr/local

[[email protected]]#mv                  //改名字

mysql-proxy-0.8.3-linux-rhel5-x86-64bit/  mypro

[[email protected] ~]# cd /usr/local/mypro/

[[email protected] mypro]# ls

bin (启动脚本) include lib libexec(可执行程序) licenses  share

[[email protected]]# chmod +x

share/doc/mysql-proxy/rw-splitting.lua

3、 启动mysql-proxy

主要命令选项:

-P:指定代理监听的ip地址、端口

-r:指定读服务器的ip地址、端口

-b:指定写服务器的ip地址、端口

-s:指定lua监本文件的路径

--keepalive:若进程崩溃,自动启动此进程

[[email protected] ~]# cd /usr/local/ mypro/bin

[[email protected] bin]# ./mysql-proxy -P 192.168.10.251:3306 -r 192.168.10.252:3306 -b 192.168.10.253:3306 -s /usr/local/mypro/share/doc/mysql-proxy/rw-splitting.lua &

[[email protected] bin]# netstat -untpal | grep :3306

tcp        0      0 192.168.10.251:3306         0.0.0.0:*                   LISTEN      4344/mysql-proxy

4、 测试

客户端通过代理访问数据库服务器上的数据。

[[email protected] bin]# mysql -h192.168.10.251 -uprouser -p123456            //在本机登录(本机ip)

(1) 并发连接数达到多少时区分用户的读写操作?大于5时

(2) 没有超过并发连接数时如何分发用户的读写操作?

读写操作都由写的服务器负责

(3) 当并发连接数,减小到默认的最大并发连接数之后,是否还区分用户的读写操作?  区分读写操作

主从同步、代理

时间: 2024-11-03 22:52:56

主从同步、代理的相关文章

mysql主从同步+mycat读写分离+.NET程序连接mycat代理

背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很久,自己也了解了一些资料,目前有三种代理组件:1.mysql_proxy   2.amoeba   3.mycat   我采用了第3种,选择mycat的原因下面会提到. 部署环境 我在我虚拟机下面装了三台Centos7_x64系统: 1.192.168.8.47 主mysql服务器 2.192.16

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

使用MySQL Proxy解决MySQL主从同步延迟

MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制 是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载.网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的.短在1秒内,长则几秒.几十秒甚至更长都有可能. 由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据(这也是

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6

Redis主从同步分析

一.Redis主从同步原理1.1 Redis主从同步的过程配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中.同时master主进程会开始收集新的写命令并缓存起来.当后台进程完成写文件后,master就将快照文件发送给slave,slave将文件保存到磁盘上,然后加载到内存将数据库快照恢复到slave上.slave完成快照文件的恢复后

趁一切还来得及【五】数据库MySQL主从同步的实践部署

自笑栖迟淮海客,十年心事一灯前.                                           --[元]萨都拉 第二章 数据库MySQL主从同步部署操作实践 2.1 数据同步相关应用基础 ①MySQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的部署管理也就显得非常重要. ②MySQL主从同步的作用:(1) 数据分布,(2) 负载平衡(load balancing),(3) 备份,(4) 高可用性(high availability

Redis主从同步分析(转)

一.Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令.无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中.同时master主进程会开始收集新的写命令并缓存起来.当后台进程完成写文件后,master就将快照文件发送给slave,slave将文件保存到磁盘上,然后加载到内存将数据库快照恢复到slave上.slave完成快照文件的恢

[转载] 使用MySQL Proxy解决MySQL主从同步延迟

原文地址:http://koda.iteye.com/blog/682547 MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方面开发带来了极大的便利.但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负载.网络拥堵等方面的原因,Master与Slave 之间的数据同步延迟是完全没有保证的.短在1秒内,长则几秒.几十秒甚至更长都有可能. 由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又

基于mysql主从同步的proxy读写分离

架构示意图            ___ master_mysql(10.10.10.3)        |          |    mysql-proxy(10.10.10.2)   |       |___       |            slave_mysql(10.10.10.4) (一)mysql主从同步 1.mysql-master设置 (1) server-id = 1    //master端ID号 binlog-ignore-db =    //设置不同步的sql库