设为首页 加入收藏

TOP

mysqldump 逻辑备份的正确姿势(四)
2015-11-21 01:47:52 来源: 作者: 【 】 浏览:3
Tags:mysqldump 逻辑 备份 正确 姿势
---------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000027 | 370 | | mysql-bin.000028 | 120 | +------------------+-----------+ 2 rows in set (0.00 sec)

?

?
这里 flush logs 进行增量备份,然后将增量备份的 bianry log 文件 mysql-bin.000027 也存储起来。
?
然后在进行一条 delete 语句:
?
?
mysql> select * from user;
+----+----------+------+-------------+----------+
| id | name| sex  | phone  | addr|
+----+----------+------+-------------+----------+
|  1 | yuanfang |    1 | 14465463786 | hangzhou |
|  2 | Andy|    0 | 14465463786 | beijing  |
|  3 | peter    |    0 | 14465463786 | Hongkong |
+----+----------+------+-------------+----------+
3 rows in set (0.00 sec)

?

到这里数据库的最新状态是:user 表只有3条记录。
?
然后我们同样将 mysql-bin.000028 也存储起来。
?
4)然后我们删除 data-dir 目录中的所有文件,然后开始还原:
?
[root@localhost mysql]# pwd
/var/lib/mysql
[root@localhost mysql]# mv ./* /backup/before_delete/
此时 data-dir 目录是空的。然后我们试图使用 mysqladmin -uroot -p shutdown 来关闭mysqld,发现早不到 mysql.sock 无法关闭,我们只好使用
?
killall mysqld
?
来关闭。
?
5)然后进行数据库的初始化,然后开始还原:
?
进入到 /usr/local/mysql/script 目录,然后执行初始化:
?
./mysql_install_db ?--user=mysql --datadir=/var/lib/mysql --basedir=/usr/local/mysql
?
?./mysql_install_db
初始化成功之后,执行:
?
/usr/local/mysql/bin/mysql_secure_installation
?
来进行密码设置。这一步可能会报错:找不到 /tmp/mysql.sock 文,解决方法,在/etc/my.cnf 中的[client], [mysql], [mysqld] 都进行下面的设置:
?
socket=/tmp/mysql.sock
?
然后重新执行:/usr/local/mysql/bin/mysql_secure_installation 就行了。
?
初始化完成之后,我们使用备份的sql脚本来进行恢复:
?
[root@localhost ~]# mysql -uroot -p < gs_ngx_lua_backup.sql
执行完成之后,发现 gs 和 ngx_lua 数据库都还原出来了,但是他们的数据不是最新的数据:
?
?
mysql> use gs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from user;
+----+----------+------+----------------+----------+
| id | name| sex  | phone| addr|
+----+----------+------+----------------+----------+
|  1 | yuanfang |    1 | 14465463786    | hangzhou |
|  2 | Andy|    0 | 14465463786    | beijing  |
|  3 | peter    |    0 | 14465463786    | Hongkong |
|  4 | lexin    |    1 | 36565634  | shenzhen |
|  5 | lexin2   |    1 | 43563436565634 | aomao    |
+----+----------+------+----------------+----------+
5 rows in set (0.01 sec)

?

?
这是因为,我们还没有使用 mysql-bin.000027 和 mysql-bin.000028 两个binary log。mysql-bin.000027 是我们前面模拟的增量备份,而mysql-bin.000028 是 删除data-dir目录时,最新的binary log。依次应用了这两个binary log之后,数据库才能恢复到最新的状态。
?
6)应用 binary log:
?
[root@localhost backup]# pwd
/backup
[root@localhost backup]# mysqlbinlog mysql-bin.000027 > 27.sql
[root@localhost backup]# mysqlbinlog mysql-bin.000028 > 29.sql
mysqlbinlog mysql-bin.000027 > 27.sql 得到了 27.sql 和 28.sql 之后,使用 mysql 来执行:
?
mysql -uroot -p < 27.sql; 应用了增量备份的binary log.
?
然后查看数据:
?
mysql> mysql> select * from user;
+----+----------+------+-------------+----------+
| id | name| sex  | phone  | addr|
+----+----------+------+-------------+----------+
|  1 | yuanfang |    1 | 14465463786 | hangzhou |
|  2 | Andy|    0 | 14465463786 | beijing  |
|  3 | peter    |    0 | 14465463786 | Hongkong |
|  4 | lexin    |    1 | 36565634    | shenzhen |
+----+----------+------+-------------+----------+
4 rows in set (0.00 sec)

?

?
然应用 28.sql :
?
mysql -uroot -p < 28.sql;
?
得到最新的状态:
?
mysql> select * from user;
+----+----------+------+-------------+----
首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【php】升级phpnow1.5.6的Mysql 下一篇MySql使用中的注意点(一)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: