Fedora MySQL完整备份数据的恢复
创始人
2024-06-24 01:30:18
0

Fedora MySQL对于电脑使用的玩家的常用软件,然后我就学习及深入的研究Fedora MySQL,在这里和大家一起探讨Fedora MySQL的使用方法,希望对大家有用。

一、实验环境

系统版本:Fedora 10 MySQL版本: Fedora MySQL 5.0

二、Fedora MySQL完整备份

如果你的数据库允许停止服务并且需要备份数据量很大,你可以停止服务后直接复制数据库对应的文件:/var/lib/mysql/database 这样的每个数据库对应于一个实际的目录,直接复制备份即可。

如果你的Fedora MySQL服务器不允许停止服务,那么我们可以使用Fedora MySQL的热备份工具:Fedora MySQLldump,它的原理是把数据库内的内容全部用sql语句进行描述,这样做的好处是我们导出来的这些sql语句只需简单的批量修改一些和别的数据库不兼容的地方,就能把Mysql的数据导出到oracle等其它数据库内。

mysqldump -uroot -p test > /tmp/test.sql 这条语句导出了test表到test.sql文件中,我们来看下导出的主要内容吧:

  1. -- Table structure for table `books`   
  2. DROP TABLE IF EXISTS `books`;   
  3. SET @saved_cs_client = @@character_set_client;   
  4. SET character_set_client = utf8;   
  5. CREATE TABLE `books` (   
  6. `id` int(11) default NULL,   
  7. `name` text,   
  8. `publish` date default NULL,   
  9. `author` text   
  10. ENGINE=MyISAM DEFAULT CHARSET=latin1;   
  11. SET character_set_client = @saved_cs_client;   
  12. -- Dumping data for table `books`   
  13. LOCK TABLES `books` WRITE;   
  14. INSERT INTO `books` VALUES (0,'Go to China','2002-10-21','Jim');  


我们可以看到创建表和插入数据的sql语句。

三、Fedora MySQL数据的恢复

有了完整备份和二进制日志,如果发生一些误操作或数据库当机,我们就能够利用完全备份以及二进制日志来把我们发生误操作之前的内容恢复出。举例:我们在完整备份后,对数据库有删除和更新记录等操作,随后有人误操作,把整个表全部清空,我们现在来恢复到清空前的状态。首先,实验的前提是在打来了二进制日志的情况下,去/etc/my.conf下,添加:log-bin=BinLog binlog-do-db=test

当服务重新运行起来之后,进入Fedora MySQL

  1. mysql>show master status;  
  2.  
  3. +---------------------+---------------+--------------------+-------------------------------+   
  4.  
  5. | File                | Position      | Binlog_Do_DB       | Binlog_Ignore_DB              |   
  6.  
  7. +---------------------+---------------+--------------------+-------------------------------+   
  8.  
  9. | BinLog.000003       | 98            | test               |                               |   
  10.  
  11. +---------------------+---------------+--------------------+-------------------------------+   

提示我们test这个数据库当前在用BinLog.000003这个二进制日志记录。下面,我们开始模拟一些操作:

  1. mysql> insert into books set   
  2. -> id=2,   
  3. -> name='Learn C++',   
  4. -> publish='2003-01-12',   
  5. -> author='jak'   
  6. -> ;   
  7. mysql> update books set author='Jerry' where id=0; delete from books;  

误操作以后,我们发现数据全部清空了,下面开始回复。首先是恢复到完全备份:Fedora MySQLdump -uroot -p test < /tmp/test.sql 接下来,我们用二进制日志来恢复后来一直到清除表以前的操作:首先我们看下完全备份文件的时间戳:stat /tmp/test.sql | grep Change Change: 2009-05-22 21:56:42.000000000 +0800 可以看到,完全备份完成的时间是2009-05-22 21:56:42,我们使用这个时间作为二进制日志回复的开始时间。

接下来,我们需要知道清空表的那个操作执行的时间:mysqlbinlog /var/lib/mysql/BinLog.000003我们找到delete from books这条句子,查看时间。#090522 22:24:12 server id 1 end_log_pos 532 Query thread_id=3 exec_time=0 error_code=0 SET TIMESTAMP=1243002252/*!*/; delete from books

可见删除发生的时间为090522 22:24:12这样,我们就确定了开始的时间和结束的时间,接下来开始重新执行完全备份到发生误操作这段时间内的这些操作。mysqlbinlog --start-date="2009-05-22 21:56:42" --stop-date="2009-05-22 22:24:12" /var/lib/mysql/BinLog.000003 | mysql -uroot -p执行完后,我们去数据库内可以验证一下。

由于二进制日志对操作的时间记录精确到秒,如果我们一秒内发生多个操作就不能这样了,我们可以用另外一个选项。mysqlbinlog --start-position=”****” --stop-position=”*****” /var/lib/mysql/BinLog.000003 | mysql -uroot以上的****表示对应的操作在二进制日志内的POS数值,我们需要自己从日志中得到这个数据来确定,读者可以尝试之。

四、AB复制

Ab复制可以使两个数据库服务器在运行中保持某个库或全部库内容的一致,其原理基于Fedora MySQL的二进制日志会不断的记录对数据库的所有操作,只要我们初期两个数据库内容一致的话,让主服务器打开某个库的二进制日志、从数据库在相同的库内容的基础上接受主服务的日志并执行相同的操作。主服务器IP:192.168.0.32 从服务器IP:192.168.0.21

1、首先我们需要打开主服务器需要同步的库的二进制日志功能:修改/etc/my.conf

[mysqld]
server-id=1 //修改服务器ID log-bin=BinLog //二进制日志文件名binlog-do-db=test //对test这个库执行二进制日志操作接下来我们重启主服务器,并且添加一个授权用户让从服务器获取日志使用:

service mysqld restart;Fedora MySQL>grant replication slave,reload,super on test.* to slave@192.168.0.21 identified by 'slavepass'mysql>flush privileges #刷新授权表以上操作完成后我们从从服务器使用新账户登录一下主服务器,检验是否连接成功。mysql -uslave -pslavepass -h191.168.0.21

2、从服务器的设置稍复杂一些,首先是修改/etc/my.conf

增加这些内容:

  1. [mysqld]  
  2. server-id=2 
  3. master-host=192.168.0.32  
  4. master-user=slave 
  5. master-password=slavepass 

Fedora MySQL配置完成后,我们需要重启服务:

  1. service mysqld restart进入从服务器的mysql客户端,  
  2. mysql>start slave;  
  3. mysql>load data from master;  
  4. mysql>show slave status"G; #显示从服务器状态 

Fedora MySQL上面的命令的返回结果:

  1. Slave_IO_State: Waiting for master to send event   
  2. Master_Host: 192.168.0.32 #主服务器IP地址  
  3. Master_User: slave #用户名  
  4. Master_Port: 3306   
  5. Connect_Retry: 60   
  6. Master_Log_File: BinLog.000002 #读取的主服务器的二进制日志  
  7. Read_Master_Log_Pos: 98 #读取到的二进制日志的位置  
  8. Relay_Log_File: mysqld-relay-bin.000006   
  9. Relay_Log_Pos: 232   
  10. Relay_Master_Log_File: BinLog.000002   
  11. Slave_IO_Running: Yes #IO是否已经启动  
  12. Slave_SQL_Running: Yes #SQL是否已经启动 

3、Fedora MySQL测试服务是否正常

我们看到以上的从Fedora MySQL服务器状态后,可以在主服务器操作test这个库,增加表,插入数据,删除更新等操作都会在从服务器上全部复制出来。

【编辑推荐】

  1. Fedora mysql安装如何启动设置
  2. Fedora funambol架设自己的syncml服务器
  3. Fedora xpdf大概的执行步骤
  4. Fedora Core 5菜单结构安装或是反安装需要软件
  5. Fedora skin使用了絕對字型

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...