MySQL的实时主备就是保持两个mysql的数据同步,主备及一主一备,对主数据库的操作也会实时反应到备数据库中。数据库的主备是实现读写分离、容灾备份、负载均衡等的基础。
mysql的主备是mysql本身就提供的功能,我们只需要对数据库进行配置就可以了。mysql的主备的原理也不是很复杂,就是主数据库(master)会把自己的每一次改动都记录到 二进制日志 Binarylog 中。从数据库(Slave), 会用master上的账号登陆到 master上, 读取master的Binarylog, 写入到自己的中继日志 Relaylog, 然后自己的sql线程会负责读取这个中继日志,并执行一遍。 然后主数据库(master)上的更改就同步到从数据库(slave)上了。
下面记录下配置的过程(ubuntu14.04 mysql5.5):
1. 在主库(master)上创建用户备份的账户,后面从库(slave)会用这个账户来读取binlog。
grant replication slave on *.* to 'repl'@'%' identified by 'password';
2. 开启主库(master)的binlog
编辑/etc/mysql/my.cnf,在[mysqld]节点下添加:
server-id = 1
binlog_format=mixed
log_bin = /var/log/mysql/mysql-bin
binlog_do_db = sample
auto-increment-increment= 2
auto-increment-offset = 1
这里几项的意思:
server-id:编号,只要保证唯一就可以了
log_bin:binlog的路径和文件名
binlog_do_db:对哪个数据库记录binlog,如果有多个数据库,这一条可以配置多遍
binlog-ignore-db :需要忽略哪些数据库。我这边没有配置这一项,也可配置这一项忽略个别数据库,剩余的都记录,一般和上面的binlog_do_db取一个配就可以了
auto-increment-increment:主键的增涨值
auto-increment-offset:主键的起始值。
最后两项的作用是当有多个数据库做主库,都可以在上面插入数据时防止主键重复的。比如上面的配置,主键起始值为1,增长量为2,那么在这台数据库上,主键就都是奇数1,3,5,7,9.而另一台数据库就会配置主键起始值为2,增长量为2,这样它的主键就都是偶数:2,4,6,8。这时候它们之间同步数据的时候主键就不会冲突了。
到这边主库基本就配置完了,然后重启
service mysql restart
3. 为了保持初始数据一致,需要将主库的数据导出来
导出之前可以先锁一下数据库
FLUSH TABLES WITH READ LOCK;
然后导出
mysqldump --master-data -u root -p sample > sample.sql
解锁
unlock tables;
下面配置从库
4. 创建数据库,导入数据
create database sample default charset utf8;
mysql -u root -p sample < sample.sql
5. 编辑/etc/mysql/my.conf, 在[mysqld]节点下加入如下内容:
server-id = 2
replicate-do-db = sample
relay_log = /var/log/mysql/mysqld-relay-bin
log-slave-updates = ON
如果是主主互备 与主备配置一样,都需要relay_log和log_bin
这里面几项的内容是和上面的差不多的
server-id:编号
replicat-do-db:需要同步的库
replicate-ignore-db:忽略的库
relay_log:relaylog的全路径
log-slave-update:中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。
6. 开启同步
在主库上执行:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000055 | 1528312 | sample | |
+------------------+----------+--------------+------------------+
在从库上执行:
CHANGE MASTER TO
MASTER_HOST='192.***.***.***',
MASTER_USER='repl',
MASTER_PASSWORD=****',
MASTER_LOG_FILE='mysql-bin.000055',
MASTER_LOG_POS=1528312;
master_host:主库的ip
master_user:一开使在主库上建的那个用户
master_password:那个用户的密码
master_log_file:binlog文件,就是上面在主库上执行show master status显示的file
master_log_pos:文件位置,也是上面显示的数字。
7. 最后启动slave
start slave
8. 查看同步状态
在从库上执行“show slave status \G;"。一般来说,Slave_IO_Running: Yes,Slave_SQL_Running: Yes,这两个显示yes基本就是正常的。
好了,结束。
转载
http://blog.csdn.net/redstarofsleep/article/details/53539226
http://www.cnblogs.com/kristain/articles/4142970.html
分享到:
相关推荐
#### 一、MySQL主备复制机制简介 MySQL复制(Replication)是MySQL数据库系统中一个重要的特性,它允许数据从一台MySQL服务器(称为Master)复制到另一台或多台MySQL服务器(称为Slave)。复制可以实现数据冗余和...
在构建高可用性数据库系统时,MySQL主备高可用配置是一个关键环节,目的是确保数据的安全性和服务的连续性。Nginx作为一个强大的反向代理和负载均衡服务器,可以通过其丰富的功能来协助实现这一目标。本篇文章将深入...
MySQL主备复制是一种常用的数据冗余和高可用性解决方案,它允许数据在多个服务器之间实时同步,确保在主服务器故障时能快速切换到备用服务器,从而维持服务的连续性和数据完整性。这一技术主要应用于大型数据库系统...
MySQL主备同步配置手册详细知识点: 1. 开启MySQL主服务器的二进制日志机制: - 二进制日志记录了对数据库的更改操作,例如表结构的更改、数据更新等。在生产环境中,二进制日志对于数据恢复和主备同步非常重要。 ...
Nginx作为一个流行的反向代理服务器,可以通过配置实现对MySQL主备集群的负载均衡,提高系统的可用性和性能。本文将深入探讨如何利用Nginx来实现MySQL的主备高可用双活。 首先,理解“主备高可用”意味着有一个主...
"keepalived+redis&mysql主备高可用配置文件和脚本"的实现涉及多个层面的配置,包括数据库的主从复制设置、Keepalived的VRRP配置、监控脚本编写等。通过合理配置,可以构建出高可用的数据库系统,保证在主服务器故障...
连接池修复MySQL主备切换时连接池无法恢复的问题。在阿里云RDS主备切换时,出现连接池没有及时恢复,问题和handleFatalError机制相关,已修复并通过验证。 连接池Connection支持更多JDK 1.7的JDBC新增方法 连接池...
MySQL主备数据库配置是确保数据高可用性和容灾恢复的重要技术。在企业级应用中,主备模式(也称为主从复制)常被用来保证数据的一致性与可靠性。以下将详细阐述MySQL主备数据库配置的相关知识点。 首先,MySQL主备...
在Windows环境下搭建MySQL主备双向复制以及Mycat负载均衡,是一种常见的数据库架构策略,用于提高数据的可用性、一致性和系统的负载均衡能力。以下详细的知识点说明了这一过程: 1. MySQL主备双向复制的概念和作用...
【MySQL主备双活安装说明】 MySQL主备双活是一种高可用性和容灾解决方案,它通过日志复制确保数据在主服务器和备用服务器之间保持一致。这种模式下,主服务器处理写操作,而备用服务器仅处理读操作,一旦主服务器...
本项目是一个基于 C# 开发的 MySQL 主备机数据库管理工具,旨在简化主备数据库的备份、还原与同步过程。通过直观的用户界面,用户可以轻松配置主数据库和备份数据库的信息,实现快速、稳定的数据管理操作。 功能...
MySQL主备双向复制是一种高可用性和容灾的解决方案,它允许数据在主服务器和备用服务器之间实时同步,确保即使主服务器出现故障,备用服务器也能无缝接管,避免数据丢失。在软件开发中,这种技术对于保持数据库的...
如何快速搭建mysql主备服务器,使mysql可以更加安装的应用于生产环境中,我在网络上搜了好多总是失败,此次我通过自己摸索然后再汇总网络上的部署整理了一套可行的方法,仅供大家使用
- 配置主服务器:编辑`/etc/my.cnf`,开启二进制日志(`log-bin=mysqllog`),设置服务器ID(`server-id=1`)和需要同步的数据库(`binlog-do-db=cd`)。 - 停止主服务器:`service mysqld stop`以应用配置变化。 ...
在Linux环境中配置MySQL 5.5的一主多从架构是一项关键任务,特别是对于需要高可用性和数据一致性的大型系统。这里我们将深入探讨如何进行这样的配置,以及遇到的一些常见问题和解决方案。 首先,我们需要了解MySQL...
MySQL主备同步主要依赖于二进制日志(binlog)和中继日志(relay log)。主库上的所有事务在提交之前都会被写入binlog,然后通过dump_thread线程发送到备库。备库接收binlog后,由io_thread将其写入中继日志,接着...
9. **版本兼容性**:主备服务器的MySQL版本应保持一致,以避免因版本差异导致的问题。 10. **硬件和操作系统考虑**:根据业务需求选择合适的硬件配置和操作系统环境。 通过以上内容,你可以深入理解MySQL双机热备...