- 浏览: 1334311 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (471)
- 原创文章 (4)
- Database (84)
- J2SE (63)
- Web (26)
- Javascript (30)
- Lucene (11)
- os (13)
- 算法 (8)
- Webservice (1)
- Open projects (18)
- Hibernate (18)
- Spring (15)
- Css (2)
- J2ee (2)
- 综合技术 (18)
- 安全管理 (13)
- PatternsInJava (27)
- NIO (5)
- Ibatis (2)
- 书籍收藏 (1)
- quartz (7)
- 并发编程 (15)
- oracle问题 (2)
- ios (60)
- coco2d-iphone (3)
- C++ (6)
- Zookeeper (2)
- golang (4)
- animation (2)
- android (1)
最新评论
-
dandingge123:
【引用】限制UITextField输入长度的方法 -
qja:
...
对List顺序,逆序,随机排列实例代码 -
安静听歌:
现在在搞这个,,,,,哎~头都大了,,,又freemarker ...
通用大型网站页面静态化解决方案(一) -
springdata-jpa:
java quartz定时任务demo教程源代码下载,地址:h ...
Quartz 配置参考 -
马清天:
[b][/b][list][*]引用[u][/u][/list ...
通用大型网站页面静态化解决方案(一)
一般使用MySQL的时候,如果数据量不大,我们都使用一台MySQL服务器,备份的时候使用mysqldump工具就可以了,但是随着业务不断发展,问题出现了:
首先:数据量往往直线上升,单独一台数据库服务器开始出现性能的瓶颈,数据访问越来越慢。
其次:备份也变得困难了,因为mysqldump是导出一份文本文件,而数据量特别大的时候,这样的备份往往需要很长时间,可能有人会说,我们可以直接通过拷贝数据文件来备份数据库,这样很方便,快捷,不错,这样是比mysqldump方便快捷,但是,直接拷贝数据文件备份的方式要求我们必须先关闭 mysql服务,然后再拷贝数据文件,否则,你拷贝的文件很可能是坏的。而实际运行的mysql服务往往要求在任何时候都不可以停止服务,所以这样的备份方式在此情况下不可行。
如果你遇到了类似上面的问题,你就可以使用建立MySQL主从服务器的方式来解决,下面先来看看主从服务器的设置:
前提:MySQL主从服务器最好使用相同的软件版本,以避免不不可预期的故障。
首先设置MySQL主服务器:
在主服务器上为从服务器建立一个用户:
mysql>grant all on *.* to root@'%' identified by '1234'; 添加权限
mysql>flush privileges; 刷新权限
mysql> select host,user from user; 查看权限
编辑主服务器的配置文件:/etc/my.cnf
[mysqld]
#sync data
server-id=1
log-bin
sql-bin-update-same
binlog-do-db=DB1
binlog-do-db=DB2 如果备份多个数据库,重复设置这个选项即可
编辑从服务器的配置文件:/etc/my.cnf
[mysqld]
#sync data
server-id=2
master-host=192.168.14.5
master-user=root
master-password=********
master-port=3306
master-connect-retry=60
replicate-do-db=DB1
replicate-do-db=DB2
log-slave-updates
记得先手动同步一下主从服务器中要备份的数据库,然后重启主,从服务器。
要验证主从设置是否已经成功,可以登录从服务器输入如下命令:
mysql> show slave status\G
会得到类似下面的列表:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果这两个选项不全是Yes,那就说明你前面某个步骤配置错了。
如果你的设置是正确的,尝试在主服务器上插入若干条记录,然后你再转到从服务器,会发现相应的新记录已经自动同步过来了。
如果你的主从服务器已经配置好了,那么你在应用程序中,只要保证所有的insert/delete/update操作是在主服务器上进行的,那么相应的数据变化会自动同步到从服务器上,这样,我们就可以把select操作分担到多台从数据库上,从而降低服务器的载荷。
如果你想使用复制数据文件的方式来备份数据库,只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件,复制好了,再在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的mysql无需停止。
----------------------------------------------------------------------
提示:如果修改了主服务器的配置,记得删除从服务器上数据库目录下的master.info文件。否则从服务器使用的还是老配置,可能会导致错误。
----------------------------------------------------------------------
注意:关于要复制多个数据库时,binlog-do-db和replicate-do-db选项的设置,网上很多人说是用半角逗号分隔,经过测试,这样的说法是错误的,MySQL官方文档也明确指出,如果要备份多个数据库,只要重复设置相应选项就可以了。
比如:
binlog-do-db=a
binlog-do-db=b
replicate-do-db=a
replicate-do-db=b
-----------------------------------------------------------------------
补充:
在从服务器上使用show slave status\G
Slave_IO_Running,为No,
则说明IO_THREAD没有启动,请执行start slave io_thread
Slave_SQL_Running为No
则复制出错,查看Last_error字段排除错误后执行start slave sql_thread
查看Slave_IO_State字段空 //复制没有启动
Connecting to master//没有连接上master
Waiting for master to send event//已经连上
补充:可以使用LOAD DATA FROM MASTER语句来建立slave。但有约束条件:
数据表要全部是MyISAM表,必须有SUPER权限,master的复制用户必须具备RELOAD和SUPER权限。
在master端执行RESET MASTER清除已有的日志变更,
此时slave端会因为找不到master日志无法启动IO_THREAD,请清空data目录下
relay-log.info,hosname-relay-bin*等文件重新启动mysql
中继日志文件默认的文件为hostname-relay-bin.nnn和hostname-relay-bin.index。可用从服务器的--
relay-log和--relay-log-index选项修改。在从服务器中还有一个relay-log.info中继信息文件,可用
--relay-log-info-file启动选项修改文件名。
双机互备则是两个mysql同时配置为master及slave
主服务器上的相关命令:
show master status
show slave hosts
show logs
show binlog events
purge logs to 'log_name'
purge logs before 'date'
reset master(老版本flush master)
set sql_log_bin=
从服务器上的相关命令:
slave start
slave stop
SLAVE STOP IO_THREAD //此线程把master段的日志写到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息
PURGE MASTER [before 'date'] 删除master端已同步过的日志
1.概述
MySQL Master-Slave是指MySQL单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。
2.与MySQL Cluster对比
2.1 原理
M-S使用的单向,异步的复制方法。而Cluster采用的是无共享的系统中部署“内存中”数据库的簇。
M-S 是概念上的“同步”,而Cluster是真正意义上的同步,MySQL的Cluster是类似与DB2的无共享集群,易于扩展。
2.2 性能
M-S 倾向与数据的更新与查询的分离,如果master宕机了整个应用就瘫痪了。
Cluster 各个节点是相对独立的任何一个节点宕机都不会影响其他节点的使用。
发表评论
-
mysql主从热备配置(含innodb)终极版
2012-12-25 13:10 2656转自 http://blogread.cn/it/articl ... -
sqlite3中的数据类型
2012-12-10 21:37 1339(转)http://www.cnblogs.com/kfqco ... -
Mac下MySql卸载方法
2012-09-10 23:57 1057Mac下MySql卸载方法 mac下mysql的D ... -
mac os x mysql数据库utf8配置
2012-09-10 23:29 2285进入mysql console: 输入 mysql& ... -
ON DUPLICATE KEY UPDATE
2012-08-07 01:47 1095(转自)http://blog.csdn.net/kesaih ... -
MySQL单列索引和组合索引的区别介绍
2012-08-07 01:31 1108(转自)http://blog.cs ... -
centos下MySQL主从同步配置
2012-08-03 13:14 1562(转自)http://apps.hi.baidu.com ... -
sql语句中left join、inner join中的on与where的区别
2012-06-13 13:24 1265table a(id, type): id t ... -
分组取前N记录
2012-05-31 16:24 1130(转)http://blog.csdn.net/ac ... -
如何一条sql语句取出分组数据中值最大的
2012-05-30 23:59 2370--按某一字段分组取最大(小)值所在行的数据(2007-10- ... -
存储过程与函数的区别
2011-09-28 19:35 1161... -
RMAN备份方案
2011-07-21 10:29 2063RMAN备份方案 RMAN也可以进行联机备份,而且备份与恢 ... -
oracle
2011-04-06 17:46 1052学习笔记 -
PLSQL Developer + Oracle客户端简易安装方法
2011-03-17 00:10 14384Oracle 10g绿色客户端 pl ... -
SELECT INTO FROM与INSERT INTO SELECT
2011-01-26 15:52 34121.INSERT INTO SELECT语句 ... -
浅谈unique列上插入重复值的MySQL解决方案
2011-01-25 11:33 1783本文的unique列上插入重复值解决方案,主要基于MySQL平 ... -
:Oracle 中对Merge语句的增强 和去重复新增
2011-01-25 11:11 2325在Oracle 10g之前,merge语句支持匹配更新和不匹配 ... -
单行函数(仅对单个表达式或一行进行处理)
2011-01-23 18:49 1275例如:select sum(qty) from sales ... -
oracle中的事务控制命令
2011-01-23 18:45 2115事务提交有显示提交:使用commit命令来提交所有未提交的更新 ... -
oracle全文检索
2011-01-23 18:18 61591.全文检索和普通检索的区别 不使用Oracle text功 ...
相关推荐
ActiveMQ支持多种高可用的主从配置模式,包括Shared File System Master/Slave、JDBC Master/Slave和Replicated LevelDB Store。文章主要介绍了使用JDBC Master/Slave模式来实现ActiveMQ的高可用配置。 在JDBC ...
主要介绍了mysql(master/slave)主从复制原理及配置图文详解,以前脚本之家小编发过相关的内容,但这么好的非常少见特分享一下,需要的朋友可以参考下
MySQL的主从复制是数据库高可用性和数据冗余的一种常见实现方式,它允许数据从一个服务器(主服务器)同步到一个或多个其他服务器(从服务器)。这种架构在处理大量读取操作、提供故障切换能力以及分布式系统中尤其...
MySQL5.7主从复制是数据库高可用性和数据冗余的一种常见实现方式,特别是在Windows操作系统环境下,这种配置有助于确保服务的连续性和数据的一致性。本文将深入探讨MySQL5.7在Windows 10上的主从复制配置以及与...
Mysql主从复制的原理可以分为三个线程:master(binlog dump thread)、slave(I/O thread、SQL thread)。Master负责写,而Slave负责读。在Master中,binlog dump thread将更新的事件类型写入到主库的binlog文件中...
在Docker中配置MySQL主从复制是一个常见的任务,特别是在分布式系统和高可用性环境中。这里我们将详细探讨如何在Docker容器中设置MySQL主从架构。 首先,我们需要理解MySQL主从复制的基本概念。在MySQL主从复制中,...
在 MySQL 主从同步配置中,存在两个主要组件:主服务器(Master)和从服务器(Slave)。主服务器是数据的源头,负责写入和更新数据,而从服务器则是数据的副本,负责读取和查询数据。 三、 主从同步配置的步骤 ###...
使用allen老师的hub镜像制作自己的mysql主从 --------- docker pull xiaochunping/mysql-master; docker pull xiaochunping/mysql-slave; -- cnetos docker run ,把my.cnf和data数据引入到属主机 -----------------...
MySQL 8.0.27/26 主从配置与读写分离是数据库高可用性和负载均衡的重要实践,尤其在大型应用系统中,确保数据的一致性和服务的不间断至关重要。以下将详细介绍整个配置过程和相关知识点。 首先,环境准备是基础,...
### Linux CentOS MySQL 主从复制与 Atlas 读写分离配置详解 #### 一、RPM 方式安装 MySQL ##### 1. 查找是否安装了不同版本的 MySQL 在首次安装 MySQL 前,需要检查系统中是否已经安装了其他版本的 MySQL。这一...
MySQL 主从复制安装配置进阶 MySQL 主从复制是指将一个 MySQL 服务器(主服务器)中的数据实时同步到另一个 MySQL 服务器(从服务器)中,以提高数据库的高可用性和读写性能。在本文中,我们将详细介绍 MySQL 主从...
MySQL 5.6 数据库主从(Master/Slave)同步安装与配置详解 - **安装与配置**:在MySQL 5.6中实现主从复制,首先需要确保主服务器和从服务器都已正确安装MySQL,并且版本一致或兼容。具体步骤包括:开启主服务器的...
### MySQL与Docker环境下搭建主从复制详解 在IT领域,数据库管理系统的高效稳定运行对于任何业务来说都至关重要。为了确保数据的安全性、可靠性和可用性,采用主从复制架构是一种常见且有效的策略。本文将详细介绍...
MySQL 主从复制环境搭建 MySQL 是一个轻量级的开源框架,具有速度快、多线程、多用户和跨平台等特点。MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器上,通常用于提高数据安全、负载...
### MySQL主从复制搭建知识点详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够实现在多个服务器间的数据一致性。通过这种机制,可以从主服务器(Master)自动地将所有数据库操作(包括DDL...
MySQL主从复制模式是数据库领域内一种重要的数据同步机制,它能够让一台主数据库服务器(master)的数据实时复制到一个或多个从数据库服务器(slave)上。这种机制在数据库的高可用性、数据备份、读写分离以及负载...
### MySQL主从复制搭建知识点详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够将一个MySQL服务器(主服务器)的数据自动同步到一个或多个MySQL服务器(从服务器)。这种机制不仅可以提高...
基于gtid的Mysql主从复制 以及出现的每一步问题解决 目录: 一、安装mysql 1、下载解压文件 2、创建data目录 3、添加用户和组 4、添加mysql到系统服务中 5、启动mysql 6、登录mysql 7、修改MySQL密码 8、修改远程...