一、准备服务器
由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。
我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.63。
假设同步Master的主机名为:A(IP:192.168.0.1),Slave主机名为:B(IP:192.168.0.2),2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/var/mysql。
二、设置同步服务器
1、设置同步Master
修改 my.cnf 文件,在
# Replication Master Server (default)
# binary logging is required for replication
添加如下内容:
- log-bin=mysql-bin
- server-id = 1
- binlog-do-db=test
- binlog-ignore-db=mysql
重启MySQL,创建一个MySQL帐号为同步专用
- GRANT REPLICATION SLAVE,RELOAD,SUPER, ON *.* TO backup@192.168.0.2 IDENTIFIED BY 'slavepass';
- FLUSH PRIVILEGES ;
复制数据库:
- FLUSH TABLES WITH READ LOCK;
锁定表清除写入操作。
File列显示日志名,而Position显示偏移量,记录备用。
备份数据库,建议对于MYI存储的MYSQL采用直接文件复制,效率会好很多。备份完解锁。
备份后对于从服务器导入数据库
以上复制过程也可以用mysqldump,如果数据库在提供服务,必须加入--lock- all-tables以保证数据为同一时间的。加入--master-data=1在dump时会记录binlog名称和偏移值,以CHANGE MASTER TO形式存在文件中,这样导入slave后不用自己设置master的binlog文件和偏移值了。 2、设置同步Slave
修改my.cnf文件,添加
- server-id = 2
- master-host = 192.168.0.1
- master-user = backup
- master-password = slavepass
- master-port = 3306
-
- replicate-ignore-db=mysql
- replicate-do-db=test
server-id不能与master相同 重启MySQL
3、启动同步
在主服务器A MySQL命令符下:
显示(当然这个是我机器的情况,你的不可能跟我一样哈,只是个例子):
+------------------+----------+-------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+-------------------+------------------+
| mysql-bin.000028 | 313361 | test | mysql |
+------------------+----------+-------------------+------------------+
在从服务器B MySQL命令符下:
- slave stop;
- MySQL> CHANGE MASTER TO
- -> MASTER_HOST='master_host_name',
- -> MASTER_USER='replication_user_name',
- -> MASTER_PASSWORD='replication_password',
- -> MASTER_LOG_FILE='recorded_log_file_name',
- -> MASTER_LOG_POS=recorded_log_position;
- slave start;
用show slave status;看一下从服务器的同步情况
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都是yes,那代表已经在同步
往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是你的RP问题,再检查一下操作步骤!
4、设置双向同步
其实也就是A->B单向同步的反向操作!双向同步,就这么简单啦!
三、同步错误处理
发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。
- slave stop;
- set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
- slave start;
四、备份底层知识 1、binlog
mysql的binlog记录了数据库的所有操作,比如我有个新的数据库bbs,建立数据库时候也开启了binlog,那么mysql会在var 目录生成个mysql-bin.000001,这个文件记录了对数据库bbs的所有操作sql命令。每个binlog文件默认1G,超过了会自动换到 mysql-bin.000002。mysql-bin.index记录了所有mysql-bin的名字。
mysql-bin.index示例:
- ./mysql-bin.000001
- ./mysql-bin.000002
- ./mysql-bin.000003
- ./mysql-bin.000004
- ./mysql-bin.000005
- ./mysql-bin.000006
- ./mysql-bin.000007
- ./mysql-bin.000008
- ./mysql-bin.000009
- ./mysql-bin.000010
数据主从备份其实就是master把binlog发给slave,然后slave在本地执行这些sql语句。 2、master.info
master.info文件存在于slave的var目录,记录了master的信息。
master.info示例:
- 15
- mysql-bin.000105 #master的binlog文件
- 498027148 #偏移值
- 192.168.0.1
- backup
- slavepass
- 3306
- 60
- 0
-
-
-
-
-
- 0
3、relay-log.info
relay-log.info文件存在于slave的var目录,记录了slave执行binlog文件情况的信息。
relay-log.info示例:
- ./lab-relay-bin.000050 #slave存放master的binlog的文件
- 210263408 #slave偏移值
- mysql-bin.000105
- 498027148
- 2
从master的mysql-bin.000105发送信息写到lab-relay-bin.000050里,slave再从lab-relay-bin.000050取sql语句执行。
相关推荐
根据提供的文件信息,本文将详细解释Windows环境下MySQL主从备份及主从切换的过程与关键配置。主要内容包括: 1. **主从备份的步骤详解** 2. **主从切换的步骤详解** 3. **多实例环境下的MySQL配置示例** ### 一、...
MySQL主从备份与Mycat读写分离是数据库管理和优化中的重要技术,它们在大型分布式系统中发挥着关键作用,确保数据的安全性、可用性和性能。以下是对这两个主题的详细阐述。 **一、MySQL主从备份** MySQL主从备份是...
### JBoss负载均衡与MySQL主从备份 在现代IT架构中,为了提高系统的稳定性和响应速度,企业常常采用负载均衡技术和数据库的主从备份方案。本文将深入探讨JBoss应用服务器如何实现负载均衡以及MySQL数据库如何配置...
### MySQL主从备份与DZ读写分离:深入解析与实践 #### 一、MySQL主从备份的意义与优势 在数据库领域,MySQL主从备份(Master-Slave Replication)是一种广泛采用的数据复制策略,旨在增强数据安全性、提高系统可用...
【标题】:mycat原理与使用详解,配合MySQL主从备份及读写分离实践 【内容】: Mycat是一款开源的分布式数据库中间件,它主要用于解决大数据量下的高性能访问问题,通过数据分片、读写分离等技术,提高系统的并发...
双机热备就是使用MySQL提供的一种主从备份机制实现。所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务。这个复制的过程实质上是从服务器复制主服务器上MySQL的二...
在本文中,我们将详细讨论如何在Linux环境下安装MySQL以及设置MySQL的主从备份。主从备份是数据库高可用性和数据安全的重要策略,它允许数据在主服务器(Master)和从服务器(Slave)之间进行实时同步,确保即使主...
MySQL的主从复制是数据库高可用性和数据安全性的重要机制,它允许数据从一个服务器(主服务器)实时同步到另一个或多个服务器(从服务器)。这种配置可以实现数据的冗余备份,提高系统的可用性,同时也为负载均衡和...
MySQL主从备份是一种常见的数据冗余和高可用性解决方案,它允许数据在多个服务器之间同步,确保即使主服务器出现故障,从服务器也能接管并继续提供服务。在这个场景中,我们有两台服务器:A服务器作为主服务器运行...
两台ubuntu和Centos下分别安装两个mysql数据库。亲自测试Mysql主备。成功!希望对需要的人有帮助。
MySQL数据库的主从同步备份是一种常见的高可用性和数据冗余策略,它允许在一个主服务器(Master)上执行写操作,而这些更改会自动复制到一个或多个从服务器(Slave)。在Windows环境下,这个过程需要一些特定的配置...
Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...
### MySQL主从安装部署知识点详解 #### 一、MySQL主从安装部署概述 MySQL 主从复制是一种常见的数据备份和负载均衡技术,在多个服务器之间同步数据。通过设置一个或多个从服务器来复制主服务器上的数据变更操作,...