`

mysql主从服务器配置

阅读更多

windows下主从配置

实现功能:A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的。
      
环境:
A、B的MySQL数据库版本同为4.1.20
A:
操作系统:Windows 2003 server
IP地址:192.168.100.1
B:
操作系统:Windows 2003 server
的IP地址:192.168.100.2

配置过程:
1、在A的数据库中建立一个备份帐户,命令如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backup'@'192.168.100.2' IDENTIFIED BY '1234';

建立一个帐户backup,并且只能允许从192.168.100.2这个地址上来登陆,密码是1234。

2、因为mysql版本新密码算法不同,所以进入mysql下,输入:set password for 'backup'@'192.168.100.2'=old_password('1234');

3、关停A服务器,将A中的数据拷贝到B服务器中,使得A和B中的数据同步,并且确保在全部设置操作结束前,禁止在A和B服务器中进行写操作,使得两数据库中的数据一定要相同!

4、对A服务器的配置进行修改,打开mysql/my.ini文件,在[mysqld]下面添加如下内容:
server-id=1
log-bin=c:\log-bin.log

server-id:为主服务器A的ID值
log-bin:二进制变更日值

5、重启A服务器,从现在起,它将把客户堆有关数据库的修改记载到二进制变更日志里去。

6、关停B服务器,对B服务器锦熙配置,以便让它知道自己的镜像ID、到哪里去找主服务器以及怎么样去连接服务器。最简单的情况是主、从服务器分别运行在 不同的主机上并都使用着默认的TCP/IP端口,只要在从服务器启动时去读取的mysql/my.ini文件里添加以下几行指令就行了。
[mysqld]
server-id=2
master-host=192.168.100.1
master-user=backup
master-password=1234
//以下内容为可选
replicate-do-db=backup

server-id:从服务器B的ID值。注意不能和主服务器的ID值相同。
master-host:主服务器的IP地址。
master-user:从服务器连接主服务器的帐号。
master-password:从服务器连接主服务器的帐号密码。
replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。

7、重启从服务器B。至此所有设置全部完成。更新A中的数据,B中也会立刻进行同步更新。如果从服务器没有进行同步更新,你可以通过查看从服务器中的mysql_error.log日志文件进行排错。

8、由于设置了slave的配置信息,mysql在数据库data目录下生成master.info,所以如有要修改相关slave的配置要先删除该文件,否则修改的配置不能生效。


linux下主从配置

首先两台机器:

a: 192.168.100.1(主数据库)

b: 192.168.100.2(从数据库)


打开a机器的my.cnf/my.ini设置

首先要保证要同步的数据库内容完全一致

在[mysqld]下添加以下内容

server-id=1# 编号,主辅库的唯一ID

log-bin=/var/db/mysql/master.log

binlog-do-db=要同步的数据库名称 //不写就同步全部。

#binlog-ignore-db = mysql //忽略的数据库

重起服务器,进入主库,用show master status查看主服务器状态。


给b增加一个backup的用户

GRANT FILE,REPLICATION SLAVE,REPLICATION CLIENT,SUPER ON *.* TO backup@'192.168.100.2' IDENTIFIED by 'backuppassword';

这个权限表示,这个backup账号只能由从备份机192.168.100.2访问只能用来进行备份操作


打开b机器的my.cnf/my.ini文件

添加或修改以下内容

server-id=2

master-host=192.168.100.1

master-user=backup

master-password=backuppassword

master-port=3306

master-connect-retry=60

replicate-do-db=要同步的数据库

#replicate-ignore-db=不同步的数据库

重起服务器,进入辅库用 show slave status G ( G将表以分行形式、而不是表格形式输出)查看从服务器状态。


至此基于mysql的同步功能就做好了。

slave stop; 停止从服务器

slave start; 启动从服务器

master stop; 停止主服务器

master start; 启动主服务器


用show processlist可以查看同步状态。

如果有什么错误打开mysql的 hostname.err 查看原因,再调用下面的修改命令:

CHANGE MASTER TO

MASTER_HOST='master_host_name',

MASTER_USER='master_user_name',

MASTER_PASSWORD='master_pass',

MASTER_LOG_FILE='recorded_log_file_name',

MASTER_LOG_POS=recorded_log_position;

然后再重起slave;

一般使用MySQL的时候,如果数据量不大,我们都使用一台MySQL服务器,备份的时候使用mysqldump工具就可以了,但是随着业务不断发展,问题出现了:

首先:数据量往往直线上升,单独一台数据库服务器开始出现性能的瓶颈,数据访问越来越慢。

其次:备份也变得困难了,因为mysqldump是导出一份文本文件,而数据量特别大的时候,这样的备份往往需要很长时间,可能有人会说,我们可以直接通 过拷贝数据文件来备份数据库,这样很方便,快捷,不错,这样是比mysqldump方便快捷,但是,直接拷贝数据文件备份的方式要求我们必须先关闭 mysql服务,然后再拷贝数据文件,否则,你拷贝的文件很可能是坏的。而实际运行的mysql服务往往要求在任何时候都不可以停止服务,所以这样的备份 方式在此情况下不可行。

如果你遇到了类似上面的问题,你就可以使用建立MySQL主从服务器的方式来解决,下面先来看看主从服务器的设置:

前提:MySQL主从服务器最好使用相同的软件版本,以避免不不可预期的故障。

首先设置MySQL主服务器:

在主服务器上为从服务器建立一个用户:

grant replication slave on *.* to '用户名'@'主机' identified by '密码';

编辑主服务器的配置文件:/etc/my.cnf

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

分享到:
评论

相关推荐

    mysql主从服务器配置.pdf

    mysql主从服务器配置,1.mysql主从服务器介绍: MySQL主从又叫做Replication、AB复制。 简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。 MySQL主从是基于binlog的,主...

    mysql 主从服务器配置 文档

    ### MySQL主从服务器配置知识点详解 #### 一、配置背景及目标 在Linux环境下进行MySQL双机互备(即主从复制)配置是一项常见的数据库管理任务。本文档旨在通过一个具体的实例来展示如何实现两台服务器之间的数据...

    mysql主从库配置

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

    mysql主从数据库配置

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

    Linux下MySQL主从服务器的搭建详细实例完整版.pdf

    Linux下MySQL主从服务器的搭建详细实例完整版,欢迎大家来踩 Linux下MySQL主从服务器的搭建详细实例完整版,欢迎大家来踩 Linux下MySQL主从服务器的搭建详细实例完整版,欢迎大家来踩

    MySQL主从同步配置过程.docx

    MySQL 主从同步配置过程 一、 MySQL 主从同步配置概述 MySQL 主从同步配置是指将 MySQL 数据库的数据从一台服务器(主服务器...通过配置主从服务器和同步进程,可以实现数据的实时同步,提高系统的整体性能和安全性。

    mysql主从服务器

    为了提升系统的可用性和扩展性,采用MySQL主从服务器配置实现读写分离成为了一种常见且有效的解决方案。 #### 二、概念介绍 - **主服务器(Master)**:主要负责写操作(如插入、更新和删除),同时生成二进制日志...

    mysql主从数据库的优势

    MySQL主从服务器配置是数据库领域中一种常见的高可用性和高性能解决方案。这一机制允许数据从一个主服务器(Master)复制到一个或多个从服务器(Slave),以此来实现数据冗余、负载均衡和灾难恢复等功能。下面我们将...

    MySQL主从配置详解.pdf

    综上所述,MySQL主从配置的原理是通过二进制日志的记录和复制过程,实现数据在主从服务器之间的同步。配置MySQL主从复制可以带来许多好处,如分散查询负载、提升查询效率、数据备份和读写分离等,但同时也需要注意...

    Linux-Mysql主从同步配置

    Linux-Mysql 主从同步配置 本文将详细解释 Linux-...本文详细介绍了 Linux-Mysql 主从同步配置的步骤,包括主服务器配置、创建主服务器用户、锁定数据库、导出数据库、查看主服务器状态、解锁数据库和配置从服务器等。

    mysql主从服务器配置特殊问题

    MySQL主从服务器配置是分布式数据库系统中常见的高可用和负载均衡解决方案。主服务器负责数据的写入,而从服务器则通过复制主服务器的数据来实现读取操作,减轻主服务器的压力。这种架构对于处理大规模并发读写操作...

    mysql主从同步配置

    MySQL主从同步是一种数据库复制技术,它允许数据从一个MySQL服务器(称为“主服务器”)实时复制到另一个或多个服务器(称为“从服务器”)。这种配置对于数据备份、负载均衡和高可用性至关重要。在Java开发中,了解...

    Mysql主从服务器双向配置

    mysql linix 主备同步 写数据库 读数据库

    Linux配置mysql主从同步

    为了更好地理解MySQL主从同步的配置流程,我们需要准备两个MySQL服务器,分别是主服务器(mysqlserverA)和从服务器(mysqlserverB)。 - **主服务器(mysqlserverA)**:IP地址为192.168.0.100 - **从服务器(mysqlserverB...

    MySQL主从复制配置文档

    MySQL主从复制是一种数据库高可用性和数据冗余的解决方案,它允许数据从一个服务器(主节点)实时同步到另一个或多个服务器(从节点)。这种架构能够实现读写分离,提高系统的读取性能,并且在主节点出现故障时,...

Global site tag (gtag.js) - Google Analytics