Mysql主从复制是一台服务器充当主服务器,另一台或多台服务器充当从服务器,主机自动复制到从机。对于多级复制,数据服务器即可充当主机,也可充当从机。
Mysql复制的基础是主服务器对数据库修改记录二进制日志
binlog,从服务器通过主服务器的
binlog自动执行更新。
下面以
InnoDB
引擎为例,说明配置主从复制的方法。
1
配置
/etc/my.cnf
修改主服务器
my.cnf,在
[mysqld]中增加如下内容:
##
打开
binlog
log-bin=mysql-bin
##
服务器
ID
。服务器之间不能有重复
ID
,一般主是
1
server-id = 1
##
指定不写
binlog
的数据库,不同步系统库
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = cluster
##
指定写二进制的数据库,多个要多行
replicate-do-db = DB_Test
##
指定跨库更新也同步的数据库。和
replicate-do-db
相同多行
replicate-wild-do-table=DB\_Test.%
修改从服务器
my.cnf,设置
server-id=2。
另外,主从服务器的
ip和端口信息配置不在
my.cnf里配置,整合到后面的
change master命令里。
修改了
my.cnf,重启主从服务器:
mysqladmin -uroot shutdown
2
主服务器上添加数据库复制用户
在主服务器上,必须为从服务器创建主从复制的用户
,并设置
replication slave权限。所用具体命令如下:
grant replication slave on *.* to rep@'172.25.38.145' identified by '';
flush privileges;
172.25.38.145是从服务器,就通过
rep用户密码为空来同步复制。通过查询
user表查看
Repl_slave_priv的值为
Y:
select * from mysql.user where user='rep'\G;
3
导出主服务器数据
主服务器上要保证数据一致性,获取数据快照。在获取快照后,主服务器不能有写操作。
先刷新所有语句并阻止写入
,这样的目的是保证主机数据快照的一致性:
FLUSH TABLES WITH READ LOCK;
执行完这句后,所有对主服务器数据库的更新都被挂起,直到执行
UNLOCK TABLES;或者关闭当前的终端。
获取主服务器的快照
:
show master status\G;
记录
File 及
Position 项的值,以便之后对从服务器进行配置。
File是当前处理的
binlog,
Position是处理的
binlog位置,这是从服务器的同步起点。
接下来是导出主服务器的数据。导出数据有两种方式:
mysqldump导出需要同步的数据库和拷贝数据库数据目录。
1) mysqldump
方式备份数据
Mysqldump适合数据库还不是特别大的情况。
导出主服务器需要同步的数据库数据,在另一个终端上执行命令:
mysqldump -uroot DB_Test1 DB_Test2 –opt –single-transaction –flush-logs –routines –force –database > master.sql
导出数据后就可以解锁了:
UNLOCK TABLES;
2)
拷贝文件方式备份数据
拷贝文件是主服务器上的数据文件目录打包到从服务器上。
拷贝文件的方式需要关闭数据,比较适合数据库庞大
mysqldump比较慢的场合。注意
:
binlog可能非常庞大,影响文件备份速度。可以定期移走不用的
binlog,通过
show slave status查看当前的
binlog,移走这以前的
binlog。
对于
MyISAM引擎,可以在不关闭数据库的情况下直接
tar,但对于
InnoDB事务型数据库,就麻烦一些了。商业软件
InnoDB Hot Backup提供了在线备份工具,除了这个收费的工具,最简单的办法就是关闭主服务器后执行
tar。
新开一个终端(不能在
FLUSH TABLES WITH READ LOCK;的终端操作),关闭主服务器
:
mysqladmin -uroot shutdown
打包数据库数据目录,例如数据目录是
/data/dbdata:
cd /data
tar zcvf dbdata.tar.gz dbdata
备份后就可以启动主服务器了:
mysqld_safe –user=mysql &
以上两种备份选择任意一种即可,把文件
scp到从服务器上。
4
数据导入到从服务器
在从服务器上导入数据
。两种不同的备份方式分别对应其数据导入的方式。
1) Mysqldump
方式的导入
mysql -uroot <./master.sql
2)
备份文件方式的导入
由于需要置换成主服务器的数据目录,先关闭服务:
mysqladmin -uroot shutdown
备份数据目录
mv dbdata dbdata.bak
解包从主服务器拷贝来的数据目录
tar zxvf dbdata.tar.gz
要确保文件的权限属主等设置没问题,
dbdata目录应该是
mysql:mysql用户所有。
以上二选一,完成数据导入。
删除
dbdata下的主机信息文件和中继日志文件:
rm dbdata/master.info
rm dbdata/relay-log.info
如果是拷贝文件方式同步,还需要启动从服务器:
mysqld_safe –user=mysql &
5
在从服务器上开始同步
在从服务器上操作
,连接主服务器开始同步数据:
Change master to
Master_host = '10.6.209.126',
Master_port = 3306,
Master_user = 'rep',
Master_password = '',
Master_log_file = 'mysql-bin.000034',
Master_log_pos = 102;
这里包含的信息有主机的地址和端口、主机提供的复制帐号、主机的
binlog位置信息。
Master_log_file和
Master_log_pos是主服务器的快照信息,从服务器从该
binlog的相应位置开始从主服务器同步数据。
启动从服务器线程就可以开始同步了:
start slave;
一旦从服务器开始同步了,就能在数据文件目录下找到
2个文件
master.info和
relay-log.info。从服务器利用这
2个文件来跟踪处理了多少
master的
binlog。
分别在主从服务器
show processlist查看连接,就可以看到
rep用户的连接,可证明复制已经生效。
灾难恢复
主从不同步
如果主从同步出现了不一致,就需要重新实施主从复制。步骤和上面相同,只是省略了修改配置文件和创建用户的步骤。
重新配置之前,需要在从服务器停止同步线程:
stop slave;
从从服务器恢复
如果主机挂了,可以把从服务器提升为主机,把原主服务器作为备机。
先在从服务器停止同步线程:
stop slave;
在从服务器上添加同步用户:
grant replication slave on *.* to rep@'
新的从服务器
ip' identified by '';
flush privileges;
配置文件中
my.cnf的
server-id可以不修改,只要保证
id不冲突就行了。
然后,按照主从复制的步骤来进行操作。
分享到:
相关推荐
以下是关于MySQL主从复制及其在Linux环境下编译安装配置的详细知识: 1. **主从复制的基本概念** - 主节点:执行所有写操作(INSERT、UPDATE、DELETE等)的服务器,其更改的数据会同步到从节点。 - 从节点:接收...
2. 配置从服务器:配置从服务器的配置文件,在从服务器中连接主服务器并启动主从复制,查看连接状态。 3. 创建数据库和表:在主服务器中创建数据库和表,验证两台从服务器中可以成功同步复制到相应信息。 MySQL ...
4. Mysql主从复制配置 2 1) 配置主库 2 A. 修改主库配置文件 3 B. 重启mysql 3 C. 查看主库状态 3 D. 分配一个从库复制的账号 3 E. 查看从库复制账号 3 2) 配置从库 4 A. 修改从库配置文件 4 B. 重启mysql从服务器 4...
"使用keepalived实现对mysql主从复制的主备自动切换" 本文主要讲解如何使用keepalived实现对mysql主从复制的主备自动切换。keepalived是一款高可用性解决方案,可以实现虚拟IP的管理和服务监控,在mysql主从复制...
在 Windows 环境下,搭建 MySQL 主从复制功能需要准备系统环境、安装 MySQL 服务、配置主从复制等步骤。 步骤一:准备系统环境 1. 准备一台 PC,安装 Windows XP 32 位操作系统。 2. 安装 MySQL 5.0。 步骤二...
MySQL主从复制模式是数据库领域内一种重要的数据同步机制,它能够让一台主数据库服务器(master)的数据实时复制到一个或多个从数据库服务器(slave)上。这种机制在数据库的高可用性、数据备份、读写分离以及负载...
### MySQL主从复制搭建知识点详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够将一个MySQL服务器(主服务器)的数据自动同步到一个或多个MySQL服务器(从服务器)。这种机制不仅可以提高...
总的来说,SpringBoot与MySQL的主从复制和读写分离是企业级应用中常见的数据库架构设计,通过合理配置和优化,可以显著提高系统的稳定性和响应速度。通过学习和实践这些知识,开发者能够更好地构建可扩展、高可用的...
MySQL 的主从复制机制可以实现数据的自动同步,有助于提高数据的可靠性和读取性能。以下是详细的配置步骤: 1. **主库配置**: - 编辑主库的 `my.ini` 文件,在 `[mysqld]` 段落下添加以下内容: ``` [mysqld] ...
MySQL 主从复制是指在一个 MySQL 数据库集群中,通过配置将一台或多台 MySQL 服务器定义为主服务器(Master),其余服务器定义为从服务器(Slave)。主服务器负责接收客户端的写入请求,而从服务器则主要负责处理...
MySQL 主从复制安装配置进阶 MySQL 主从复制是指将一个 MySQL 服务器(主服务器)中的数据实时同步到另一个 MySQL 服务器(从服务器)中,以提高数据库的高可用性和读写性能。在本文中,我们将详细介绍 MySQL 主从...
MySQL 主从复制模式共有三种:异步模式、半同步模式和全同步模式。默认情况下,MySQL 主从复制模式是异步模式。 五、 MySQL 主从复制原理 MySQL 主从复制的原理是基于 binlog 文件的复制。binlog 文件记录了 MySQL...
Mysql 主从复制配置详解 Mysql 主从复制是指一个数据库服务器(主服务器)将其数据复制到另一个数据库服务器(从服务器)上,以实现数据的冗余备份和高可用性。以下是 Mysql 主从复制配置的详细步骤: 一、 热备份...
MySQL主从数据库配置是数据库高可用性和负载均衡的重要实践,它允许数据从一个主数据库(Master)异步复制到一个或多个从数据库(Slave)。这种配置对于处理大规模数据操作和保证数据一致性至关重要。 主从复制的...
配置MySQL主从复制涉及以下几个关键步骤: 1. 启用主节点的二进制日志功能。 2. 设置从节点的连接信息,如主机名、用户名和密码。 3. 在主节点上创建一个用于复制的专用用户。 4. 在从节点上配置复制,使用`CHANGE ...
"Mysql主从复制" Mysql主从复制是一种常用的数据库复制方式,旨在提高数据库的可用性、安全性和读取性能。在Mysql主从复制中,一个数据库服务器充当主服务器,其他服务器充当从服务器。主服务器负责写入数据,而从...
一次mysql主从复制配置文档,系统环境centos7,mysql5.7