`
caiying0504
  • 浏览: 343087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql中的复制(配置主从数据库)

阅读更多
一般使用MySQL的时候,如果数据量不大,我们都使用一台MySQL服务器,备份的时候使用mysqldump工具就可以了,但是随着业务不断发展,问题出现了:
首先:数据量往往直线上升,单独一台数据库服务器开始出现性能的瓶颈,数据访问越来越慢。
其次:备份也变得困难了,因为mysqldump是导出一份文本文件,而数据量特别大的时候,这样的备份往往需要很长时间,可能有人会说,我们可以直接通过拷贝数据文件来备份数据库,这样很方便,快捷,不错,这样是比mysqldump方便快捷,但是,直接拷贝数据文件备份的方式要求我们必须先关闭mysql服务,然后再拷贝数据文件,否则,你拷贝的文件很可能是坏的。而实际运行的mysql服务往往要求在任何时候都不可以停止服务,所以这样的备份方式在此情况下不可行。
如果你遇到了类似上面的问题,你就可以使用建立MySQL主从服务器的方式来解决,下面先来看看主从服务器的设置:
前提:MySQL主从服务器最好使用相同的软件版本,以避免不不可预期的故障。
首先设置MySQL主服务器:
在主服务器上为从服务器建立一个用户:
grant replication slave on *.* to '用户名'@'主机' identified by '密码';
编辑主服务器的配置文件:/etc/my.cnf的mysqld处

server-id = 1
log-bin
binlog-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-ignore-db=不需要备份的数据库苦命,如果备份多个数据库,重复设置这个选项即可
编辑从服务器的配置文件:/etc/my.cnf
server-id=2
master-host=主机
master-user=用户名
master-password=密码
master-port=端口
replicate-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
记得先手动同步一下主从服务器中要备份的数据库,然后重启主,从服务器。
要验证主从设置是否已经成功,可以登录从服务器输入如下命令:
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
-----------------------------------------------------------------------------------
补充:从服务器上my.cnf中的master-*的设置仅在第一次生效,后保存在master.info文件里。
-----------------------------------------------------------------------------------
在从服务器上使用show slave status
Slave_IO_Running,为No,则说明IO_THREAD没有启动,请执行slave start [IO_THREAD]
Slave_SQL_Running为No则复制出错,查看Last_error字段排除错误后执行slave start [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 {master|binary} logs
show binlog events
purge {master|binary} logs to 'log_name'
purge {master|binary} logs before 'date'
reset master(老版本flush master)
set sql_log_bin={0|1}
-----------------------------------------------------------------------------------
从服务器上的相关命令:
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端已同步过的日志
-----------------------------------------------------------------------------------
--read-only
该选项让从服务器只允许来自从服务器线程或具有SUPER权限的用户的更新。可以确保从服务器不接受来自客户的更新。
分享到:
评论

相关推荐

    主从数据库的配置和使用案例(可以直接运行)

    **二、配置主从数据库** 1. **主库配置** 主库需要开启二进制日志功能,记录所有更改数据的操作。在MySQL中,可以通过修改`my.cnf`配置文件启用`log-bin`选项。 2. **从库配置** 从库需要知道主库的位置,以便...

    springboot2.0+mybatis主从数据库双数据源。

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在本项目中,主从数据库的配置是关键。主数据库用于处理写操作,从...

    mysql主从数据库配置

    MySQL主从数据库配置是数据库高可用性和负载均衡的重要实践,它允许数据从一个主数据库(Master)异步复制到一个或多个从数据库(Slave)。这种配置对于处理大规模数据操作和保证数据一致性至关重要。 主从复制的...

    MySQL数据库主从配置

    MySQL 数据库主从配置是指在 MySQL 数据库中实现主从复制的配置过程。该配置过程主要涉及到主服务器和从服务器的配置,旨在实现数据库的实时同步。 首先,需要在主服务器上打开二进制日志,这是因为 MySQL 数据库的...

    mysql主从数据库的优势

    下面我们将深入探讨MySQL主从数据库配置的两大核心优势——实现服务器负载均衡和通过复制实现数据的异地备份。 **一、实现服务器负载均衡** 在MySQL主从架构中,负载均衡是通过在主服务器和从服务器之间分配工作...

    springboot 配置主从数据库涉及的各类细节 对初次解除主从数据库的开发

    ## 二、Spring Boot 中配置主从数据库 ### 2.1 环境准备 为了实现Spring Boot项目中的主从数据库配置,我们需要准备以下环境: - **操作系统**:Ubuntu Server 20.04 LTS - **Java版本**:Java 11 - **Spring Boot...

    SpringBoot第 12 讲:SpringBoot+MySQL主从复制、读写分离

    1. **配置主从关系**:在主服务器和从服务器上分别配置复制的参数,如binlog格式、server_id等,并设置从服务器监听主服务器的binlog日志。 2. **启动复制**:在主服务器上执行SQL命令,将当前的数据状态传递给从...

    mysql5.6.14配置主从复制

    MySQL 5.6.14主从复制配置详解 MySQL主从复制是一种常见的数据库高可用性和负载均衡解决方案,它允许数据从一个主服务器(Master)实时同步到一个或多个从服务器(Slave)。以下是对配置过程的详细说明: 1. **...

    MYSQL数据库主从复制高可用技术改造环境部署方案

    ### MySQL数据库主从复制高可用技术改造环境部署方案 #### 安装部署DRBD DRBD(Distributed Replicated Block Device)是一种分布式复制块设备,主要用于实现数据在两台或多台服务器之间的实时同步,以此来构建高...

    mysql主从库配置

    ### MySQL 主从库配置详解 #### 一、MySQL 安装与环境变量设置 在进行 MySQL 主从库配置之前,我们需要确保已经正确安装了 MySQL,并设置了相应的环境变量。以下是具体的步骤: 1. **下载 MySQL 免安装版**: - ...

    linux,Centos主从数据库

    总的来说,Linux CentOS上的主从数据库配置涉及MySQL配置文件的修改、用户的权限设置以及复制参数的配置。正确设置后,可以实现数据的安全同步,提高系统的可靠性和容错性。在实际生产环境中,务必注意数据安全,...

    mysql主从数据库的配置说明文档.pdf

    通过以上步骤,MySQL主从复制配置完成,数据将在主从库之间实时同步。监控复制状态可以使用`SHOW SLAVE STATUS\G`命令,以确保一切正常运行。 主从复制的实施对于大型web应用系统至关重要,它不仅能提升数据库的...

    MySql主从数据库设置

    以上是MySQL主从数据库设置的基础知识,实际操作中还需要根据具体环境进行调整。"数据库服务器操作手册.xlsx"可能包含了更详细的配置步骤和故障排查指南,建议参考其中的内容以获得更全面的理解和实践指导。

    mysql 主从数据库服务器的设置.doc

    MySQL 主从数据库服务器设置指南 MySQL 主从数据库服务器(Replication)的设置是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器上,這種方式可以提高数据库的可用性和读取性能。下面是 MySQL 主从...

    mysql热备及mysql主从配置

    配置主从复制涉及以下几个步骤: 1. 配置主库:开启binlog,创建复制用户并授权,设置server-id以区分各个节点。 2. 获取主库的binlog位置和文件名:在完成一次主库上的事务后,获取当前binlog的位置,这将在从库...

Global site tag (gtag.js) - Google Analytics