innobackupex 有非常好的一致性的备份功能.它会切好并输出的日志文件和日志的位置,这个来进行 slave 的初始化非常有效.另外,它可以同时工作在 MyISAM 和 innodb 的引擎中.听讲使用这个 xtrabackup 来备份.锁表时间非常短,合适生产环境使用.Percona 是一个 mysql 的高效的分支,目前国内使用的公司也不少.配置恢复之类有点不同,只能使用这个软件来备份恢复.当然,这个软件也可以使用在标准的 mysql 中来进行备份恢复.
备份步骤
MyISAM
如果你的所有的表是 MyISAM .只要运行 innobackupex –prepare /directoryWhereBackupIs.然后从 /directoryWhereBackupIs 给数据库目录移到你的 slave 的 datadir 中就行了.然后修改一下这个数据库文件的用户和组.最后只要在 slave 的服务器上运行 “change master” 就能搞定了.
但如果数据库是 innodb 的表,需要加入三步.需要停止 slave 上的 mysql.需要给 ibdata1 放到 datadir 中,然后重起 mysql.接着在运行 “change master…” 和 “start slave” 的命令.
1.安装 Percona 中的 mysql client, server, 还有 XtraBackup ;
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.$(uname -i).rpm
2. 配置主从所有的机器上的 /etc/my.cnf.
Percona 有时并不在这个目录下生成 /etc/my.cnf 文件.所以需要从安装的目录 /usr/share/mysql/my-small.cnf 中 copy 一个配置文件来修改成自己要的.
在这,我们还需要配置支持 slave .如果配置主从,最少需要修改 [mysqld] 中三行.
log-bin=mysql-bin
server-id=a unique number
datadir=/var/lib/mysql
前二行是复制所必须的,主从就是通过 bin 日志来实现的.第三行是给 innobackupex 来用的.
如果只想记录其中一个数据库来做主从同步,可以只记录基本一个的 binlog. 只要增加如下配置就行了.
binlog-do-db = test # 只对 test 的数据库产生 binlog
最好,在你的 slave 上配置成 read-only = 1和 skip-slave-start.如果必要,在第一次配置主从防止数据不同步在备份的时候,主也配置成 read only .备份完然后在开启可写.我测试可以不这样,但保险起见,最好停止一会.可以在线使用如下命令修改成只读.
3. 在 master 上,运行下面的命令:
在这之前,需要在 slave 放上 ssh 的 key,这样备份时就不需要输入密码:
innobackupex –databases=test –stream=tar /tmp/ –slave-info | ssh root@slave_ip “tar xfi – -C /tmp/mysql”
如果成功,你会见到下面的信息:
120111 12:26:28 innobackupex: completed OK!
tar: Read 3584 bytes from –
注意第三行的输出,就是 binlog 文件的 filename 和 position,象下面这个:
innobackupex: MySQL binlog position: filename ‘mysql-bin.000001’, position 3287
平时备份的话,直接使用下面的命令就行了
innobackupex –user=root –password=test –stream /tmp/mysql 2>/tmp/mysql.log | gzip> /tmp/data/mysql.tar.gz
4. 在 slave 上,运行下面的命令:
innobackupex –apply-log /tmp/mysql
这步是恢复日志解析成数据库的格式.
innobackupex –copy-back /tmp/mysql
这步只是给文件 move 到 /var/lib/mysql ,如果这步失败,直接自己移一下也行.
如果我们导入的数据库名字是叫 test,我们需要修改成 mysql 的用户组:
chown -R mysql:mysql /var/lib/mysql/test
注意,如果数据库有 innodb 的表的话,需要停止 slave 上 mysql ,然后复制 /var/lib/mysql/ 下的 ibdata1 到 datadir ,然后重起 mysql.
5. 在 master 上, 需要创建一个复制的帐号:
grant replication slave, replication client on *.* to repl@’219.32.22.%’ identified by ‘password’;
FLUSH PRIVILEGES;
6. 在 slave 上, 配置 master 的信息:
change master to master_host=’master_ip’, master_user=’repl’, master_password=’password’, master_log_file=’前面在 master 上 innobackupex 备份的输出的 filename’, master_log_pos=前面在 master 上 innobackupex 备份的输出的 position;
start slave;
7. 配置完成后的检查,确认主从都正常工作
基本检查,出错信息也会在这显示
show slave statusG;
这个中,一定要显示
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这二行为 Yes 才是正常工作.
显示 master 的状态
show master statusG;
显示同步线程的工作
show processlistG;
FQA:
1. 如果同步不同,可以考虑重设置权限,然后在从主机做如下操作.
slave stop;
reset slave;
slave start;
如果还不行,可以考虑给 reset slave; 换成上面第 6 步所做的操作.
2. 如果提示”Possible values are xtrabackup_51 (for MySQL 5.0 and 5.1) or xtrabackup (for MySQL 5.1 with InnoDB plugin or Percona Server)”
innobackupex –apply-log /tmp/mysql –ibbackup=xtrabackup_51
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
2017年5月数据库流行度排行榜 MySQL与Oracle“势均力敌”
数据库知识网站DB-engines.com最近更新了2017年5月的数据库流行榜单。TechTarget继续与您一起分享最新的榜单情况。
-
2017年3月数据库流行度排行榜 Oracle卫冕之路困难重重
时隔一个月,数据库市场经过一轮“洗牌”,旧的市场格局是否会被打破,曾经占巨大市场份额的企业是否可能失去优势?