Mysql实时备份实现方法

目前成熟的实时备份为双机(master/slave),是基于同步日志事件来实现,那单机如何实现具有增量的备份呢?可以借用双机的原理,非常简单,实施步骤如下:
Mysql版本:mysql4.0+

1、vi my.cfg

代码如下:

[mysqld]
log-update=/home/backup/update #添加该行

2、service mysql restart

会在/home/backup/update00001文件,内容为数据库变化的所有SQL(没有select)

3、每天的全备,mysql4.0+最简单就是备份data目录。

代码如下:

service mysql stop
tar -czf data(日期).tar.gz mysql/data
service mysql start

当mysql启动时系统会自动在/home/backup/创建update0000*的文件,那我们可以用该文件作为当天全备的增量实时备份。

4、数据还原

代码如下:

service mysql stop
tar -zxvf data(日期).tar.gz mysql/
service mysql start
mysqladmin -u -p /home/backup/update0000*

如想还原昨天、前天的数据只需要找相应的update0000*来还原即可:)

以下是补充:

1、MYSQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库里面,从而实现MYSQL数据库的实时备份。
2、版本要求,首先要保证主服务器和从服务器的MYSQL版本都高于3.2,另外,从数据库的版本可以高于主服务器,但不能低于主服务器。
3、主服务器设置:
A、先修改MY.INI中有关log-bin的设置,这是记录数据库更改的日志,由于MYSQL的复制机制,是基于日志的,所以主服务器必须要支持更改日志才可以。
接着设置要写入日志的数据库,或者不要写入日志的数据库,这是为了告诉MYSQL,那个库需要备份,哪个不需要。
下面是配置详情:

server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库

上面的binlog-do-db和binlog-ignore-db可以设置成多个数据库,每个数据库名称之间用“,”分割开。
下一步是设置同步数据库的用户账号
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO ‘备份用户名'@'只能从这个IP登录' IDENTIFIED BY ‘备份用户密码';

设置好以后,重启一下数据库服务。
B、锁定现有的数据,并将数据备份
数据库锁定的命令是:
mysql> FLUSH TABLES WITH READ LOCK;
然后进入mysql的data目录,然后打包你需要备份的数据库目录。
C、现在可以查看主服务器的状态了:
命令如下:
mysql> show master status\G;
返回结果会是这样的
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
当然,这个表,显示了你刚才在MY.INI中写入的配置。
然后解锁数据库:
mysql> UNLOCK TABLES;

4、从服务器设置
还是和刚才一样,修改数据库配置文件,即MY.INI
配置详情如下:
server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slave.mycompany.com //报告错误的服务器

然后将你刚才打包的数据库文件拷贝到你的从数据库目录中。
重启从数据库服务器。
然后停止SLAVE的服务

mysql> slave stop; //停止slave的服务

停止之后,还是在mysql提示符下,设置主服务器的各种参数
命令如下:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)

然后启动同步数据库的进程
mysql> slave start;

没有意外的话基本上到这一步,双库同步就已经实现了。

(0)

相关推荐

  • MySQL5.1主从同步出现Relay log read failure错误解决方法

    众所周知MySQL5.1的Replication是比较烂的.MySQL的每一个版本更新关于同步方面每次都是可以看到一大堆.但MySQL 5.1性能是比较突出的.所以经不住诱惑使用MySQL 5.1.所以也要经常遇到一些Bug.如: 复制代码 代码如下: mysql> show slave status\G *************************** 1. row ***************************                Slave_IO_State: Wa

  • linux下指定mysql数据库服务器主从同步的配置实例

    一. 概念: ① 数据库同步  (主从同步 --- 主数据库写的同时 往从服务器写数据)② 数据库同步  (主主同步 --- 两台数据库服务器互相写数据) 二. 举例数据库服务器(A) 主数据库   IP:192.168.1.134数据库服务器(B) 主数据库   IP:192.168.1.138两台服务器同步的用户名为: bravedu    密码: brave123 一.主数据库操作设置(A):① 创建同步用户名 允许连接的 用户IP地址  (非本机IP) 复制代码 代码如下: grant

  • mysql主从同步快速设置方法

    安装环境 centos 5.4 mysql 5.1.xx 采用rpm直接安装 xtrabackup 1.2.22 采用rpm直接安装 复制代码 代码如下: [mysqld] server-id = 1 log-bin innodb_flush_log_at_trx_commit=1 sync_binlog=1 datadir=/var/lib/mysql character-set-server=utf8 init_connect='SET NAMES utf8' 设定了默认字符集为utf8,可

  • centos下mysql主从同步快速设置步骤分享

    安装环境 centos 5.4 mysql 5.1.xx 采用rpm直接安装 xtrabackup 1.2.22 采用rpm直接安装 1. Master:/etc/my.cnf [mysqld] server-id = 1 log-bin innodb_flush_log_at_trx_commit=1 sync_binlog=1 datadir=/var/lib/mysql character-set-server=utf8 init_connect='SET NAMES utf8'设定了默认

  • Mysql主从同步备份策略分享

    环境:主从服务器上的MySQL数据库版本同为5.1.34主机IP:192.168.0.1从机IP:192.168.0.2一. MySQL主服务器配置1.编辑配置文件/etc/my.cnf# 确保有如下行server-id = 1log-bin=mysql-binbinlog-do-db=mysql  #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可binlog-ignore-db=mysql  #不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可log-slave-up

  • windows环境下mysql数据库的主从同步备份步骤(单向同步)

    windows下mysql双向同步备份实现方法以下的文章主要讲述的是在windows环境下实现MySQL数据库的主从同步备份的正确操作方案,我在一些相关的网站看见关于windows环境下实现MySQL数据库的主从同步备份的操作步骤描述,但是很少有对其成功操作到底的,所以拿出此篇较为完整的方案与大家一起分享. 以下配置在本机上已经成功: 实现功能:A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的

  • MySQL 5.5主从同步设置笔记分享

    先修改Master(10.1.123.197)的 my.cnf 配置 在 [mysqld] 中新增以下内容: 复制代码 代码如下: log-bin=mysql-binlog-bin-index=mysql-bin.indexserver-id = 1sync_binlog=1binlog_format=mixed 然后指定要做同步的数据库,并忽略掉不需要做同步的数据库 复制代码 代码如下: binlog-do-db = testdbbinlog-ignore-db = mysqlbinlog-i

  • win2003 安装2个mysql实例做主从同步服务配置

    配置前的准备: 2台电脑,均安装windows2003 64位.均分三区c,d,e.计算机名一为Master,一为slave. 使用mysql-noinstall-mysql5.1.50压缩包. 首先在Master计算机的D盘安装mysql. 1:解压mysql-noinstall-5.1.50.将其中的内容复制到D盘的mysql5.1目录下. 2:安装mysql5.1.50 进入cmd. cd d:\mysql5.1\bin mysqld install mysql5.1 //安装mysql服

  • Shell脚本实现监控MySQL主从同步

    代码如下: 复制代码 代码如下: #!/bin/bash #check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'` MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "

  • MySQL主从同步、读写分离配置步骤

    现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

  • mysql主从同步复制错误解决一例

    蚊子今天下午搭了一主三从的mysql复制,结果所有服务器都配置好后,发现从上报如下的错误 复制代码 代码如下: Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-i

  • MySQL主从同步原理介绍

    概述 Mysql的Replication(复制)是一个异步的复制过程,从一个 Mysql instance(我们称之为 Master)复制到另一个Mysql instance(我们称之 Slave).在 Master 与 Slave之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在Master端. 主从同步需求 要实现 MySQL 的 Replication ,首先必须打开 Master 端的BinaryLog(mysq

随机推荐