mysql数据库备份和还原

新建备份用户

新建定时备份用户和权限(localhost)
use mysql;
insert into user(Host,User,Password) values("localhost","backupuser",password("123456"));
flush privileges;
grant all privileges on db_name.* to backupuser@localhost identified by '123456';
flush privileges;
grant RELOAD, SUPER, REPLICATION CLIENT on *.* to backupuser@localhost identified by '123456';
flush privileges;
show grants for backupuser@localhost;

使用root去备份数据库还是有一些危险,粗体显示的语句是关键,如果没有,运行时会提示没有相应的权限

 

备份数据库

$ mysqldump -ubackupuser -p --default-character-set=utf8 --opt --master-data=1 --single-transaction --flush-logs db_name > db_name.sql

提示错误:mysqldump: Error: Binlogging on server not active

启动bin-log,编辑文件 /etc/mysql/my.cnf,在 [mysqld] 下面添加 log-bin= mysql-bin,

$ sudo /etc/init.d/mysql restart  重启mysql

再次执行数据库备份语句,备份成功

$ mysqldump -uroot -p --default-character-set=utf8 --opt --master-data=1 --single-transaction --flush-logs db_name > db_name.sql

 

还原数据库

首先创建db_name数据库

mysql> create database db_name;

执行还原数据库语句,还原成功

$ mysql -ubackupuser -p startup < db_name.sql

 

还原到数据库以后在Rails正常,但是在mysql shell中中文是乱码

修改mysql默认编码,编辑文件 /etc/mysql/my.cnf

mysql 5.1

[client]  增加 default-character-set = utf8

[mysqld]  增加 default-character-set = utf8

mysql 5.5

[client]  增加 default-character-set = utf8

[mysqld]  增加 character_set_server=utf8

$ sudo /etc/init.d/mysql restart  重启mysql,问题解决

 

数据库从服务器还原到开发机以后

$ rake assets:precompile  编译生产环境文件

在数据库建立用户和相应的权限

$ rails server -e production  启动生产环境服务器

 

参考

http://www.ha97.com/4045.html

 

posted @ 2012-12-07 23:18  scige  阅读(400)  评论(0编辑  收藏  举报