MySql的主从复制备份

1.复制解决的问题

MySQL复制技术有以下一些特点:

读写分离(Read And Write Separate)

数据分布 (Data distribution )

负载平衡(load balancing)

备份(Backups)

高可用性和容错行 High availability and failover

2.复制如何工作

整体上来说,复制有3个步骤:

master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events。)

slave将master的binary log events拷贝到它的中继日志(relay log)

slave重做中继日志中的事件,将改变反映它自己的数据。

该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。

图如下:

配置主服务器

Linux 下为 my.cnf  WIN下为my.ini

#show variables like ‘log_bin‘;  value = On 才可以

如果为Linux下,建议在[mysqld]后添加下列数值参数

#开启bin-log

log-bin = mysql-bin

#主服务器编号为1

server-id = 1

#要记录的数据库

binlog-do-db = test

添加用户权限

mysql> grant replication slave on *.* to  ‘backup‘@‘192.168.104.%‘ identified by ‘123456‘;

上句是添加了一个用户,该用户帐号为backup,密码为123456,拥有了对所有数据库的从数据库备份权限

不了解GRANT可以去百度下,很EASY。

主库建表

从库表一致

同时主从运行如下指令

mysql>reset master重置bin-log日志

配置从服务器

server-id = 2

#多台从服务器的时候保证从服务器的ID值的唯一

#选择要备份的数据库,过滤不备份的数据库

replicate-do-db=test

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

#在5.1后配置文件中不再有master_*的配置,需在下列运行如下信息才可行

mysql>stop slave;

mysql>change master to master_host= ‘192.168.104.9‘,master_user=‘admin‘,master_password=‘123456‘;

#master_host为主库的地址,user和password就是上部我们在主数据库所grant的帐号和密码

mysql>show master status\G;

主机显示

File:日志存放

Position:位置

Binlog_Do_DB:要记录的数据库

Binlog_Ignore_DB:不要记录的数据库

mysql>show slave status\G;

确保Master_Log_File 与File一致, Read_Master_Log_Pos与Position一致

不一致也可以运行下列值来改变

change master to =Master_Log_File= File,Read_Master_Log_Pos= Position

Slave_IO_Running与Slave_SQL_Running都显示yes表同步成功

时间: 2024-08-01 00:09:04

MySql的主从复制备份的相关文章

怎样解决MySQL数据库主从复制延迟的问题?

1.网络超时 2.慢查询 3.流量 问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节点数量过多,会导致复制延迟问题二:从库硬件比主库差,导致复制延迟查看Master和Slave的系统配置,可能会因为机器配置不当,包括磁盘I/O.CPU.内存等各方面因素造成复制的延迟.一般发生在高并发大数据量写入场景中问题三:慢SQL语句过多假如一条SQL语句执行时间是20秒,那么从执行完毕到从库上能查到数据至少需要20秒,这样就延迟20秒了.一般要把SQL语句的优化作为常规工作不断地进行

基于SSL的mysql(MariaDB)主从复制

一.前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,这样就需要保证数据在网络传输过程中的安全性,因此使用基于SSL的复制会大加强数据的安全性 二.准备工作 1.主从服务器时间同步 [[email protected] ~]# crontab -e */30 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null 2.mysql说明 (1)主服务器 hostname:master    IP:172.16.7.2

mysql常用的备份命令与备份策略

MySQL常用的备份命令 mysqldump备份常用方法: 1.导出一个数据库    mysqldump -u用户名 -p密码 数据库名 > 导出的文件名     例如      # mysqldump -hhostname -uroot -ppwd dataname >dataname.sql 2.备份服务器上所有数据库 例如       # mysqldump --all-databases > allbackupfile.sql  3.备份一个表 mysqldump -u用户名 -

搭建mysql的主从复制和读写分离

搭建mysql的主从复制和读写分离   +--------+                          (write)        +--------+                    | client |                 +---------------------+| master |     +--------+|                   |                        +--------+|           |      

使用 Xtrabackup 在线对MySQL做主从复制【转】

1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力不从心了.Percona-Xtrabackup备份工具,是实现MySQL在线热备工作的不二选择,可进行全量.增量.单表备份和还原.(但当数据量更大时,可能需要考虑分库分表,或使用 LVM 快照来加快备份速度了) 2.2版本 xtrabackup 能对InnoDB和XtraDB存储引擎的数据库

mysql的主从复制及实现过程

mysql的主从复制 为什么需要用到mysql的主从复制功能? 一般在实际生产中,仅仅有一台数据库服务器作为独立的数据库是很少见的,因为一旦这台独立的服务器挂掉,那么前端的程序或用户将无法访问后端的数据了,这样会造成服务中断的.对于有些企业来说,保证服务的连续性是非常重要的,因此在这种情况下需要保证数据库服务器的高可用性. 有时某个数据库服务器台过于繁忙的话,我们需要减轻服务器的负载,那么我们可以将这个服务器上的写请求和读请求分开,分别由不同的服务器来完成,这样岂不是更好.对于一个数据库服务器而

mysql配置主从复制 第二篇

经过查询资料,终于把mysql主从复制搞定了.此版本是mysql5.0的. 好了,开始说步骤. 首先,上篇已经说过了,需要复制一份安装文件到另外一个盘.接下来修改注册表. 好了,完了之后,我们修改mysql根目录下的my.ini文件. 当然,修改之前你需要备份一下.省的以后启动不起来. ----------------------------------------- 首先修改你要配置的主数据库的my.ini ----------------------------------------- [

MySQL GTID 主从复制

一.GTID简介MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力.它由服务器ID以及事务ID组合而成.这个全局事务ID不仅仅在原始服务器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的.正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠.一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致. 在传统的slave端,binlog是不用开启的,但是在GTID中sla

MySQL Replication 主从复制全方位解决方案

原文:MySQL Replication 主从复制全方位解决方案 1.1 主从复制基础概念 在了解主从复制之前必须要了解的就是数据库的二进制日志(binlog),主从复制架构大多基于二进制日志进行,二进制日志相关信息参考:http://www.cnblogs.com/clsn/p/8087678.html#_label6 1.1.1 二进制日志管理说明 二进制日志在哪?如何设置位置和命名? 在my.cnf文件中使用 log-bin = 指定:命名规则为 mysql-bin.000000 (后为6