新建备份用户
新建定时备份用户和权限(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 启动生产环境服务器
参考