CentOS-6.4下mysqldump 备份与还原数据库
时间:2015-01-07 23:52 来源:linux.it.net.cn 作者:IT
创建一个测试用的数据库
mysql -u root -p
#设置一下权限,方便在备份时使用
set password for 'root'@'localhost' =password('dsideal');
flush privileges;
#删除旧的测试数据库
drop database test;
#创建新的测试数据库
create database test;
use test;
create table test (id int);
insert into test values(1);
insert into test values(2);
insert into test values(3);
insert into test values(4);
insert into test values(5);
select * from test;
然后备份test的整个数据库
#使用下面的 vi /usr/local/backup_test.sh
内容如下:
#!/bin/sh
date_str=`date +%Y%m%d`
cd /data2/backup
mysqldump -h localhost -u root --password=dsideal -R -E -e \
--max_allowed_packet=1048576 --net_buffer_length=16384 test\
| gzip > /tmp/data/dsideal_test_$date_str.sql.gz
echo "DataBase Backup Success!"
参数说明:
max_allowed_packet 和 net_buffer_length 这两个参数起着决定性作用,速度差别几百上千倍
我这里的配置是:--max_allowed_packet=25165824 --net_buffer_length=16384
其原理是合并多条数据成为一个 SQL 插入语句。
导出时候注意点:
-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。
注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。
首先确定目标库的参数值
mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';
根据参数值书写mysqldump命令,如:
mysql>mysqldump -uroot -psupidea jb51.net goodclassification -e --max_allowed_packet=1048576 --net_buffer_length=16384 >www.it.net.cn.sql
#运行
sh /usr/local/backup_test.sh
还原:
从压缩文件直接恢复:
gzip < dsideal_test_20130405.sql.gz | mysqldump -u root -p test
注意:这里的TEST数据库必须是存在的,否则会还原不了,就是说必须要保证这个数据库存在,新的机器就必须手工创建一下。
#修改文件属性,使其可执行
chmod +x /usr/local/backup_test.sh
#修改/etc/crontab
crontab -e
在下面添加
01 3 * * * root /usr/local/backup_test.sh
#表示每天3点钟执行备份
#如果需要异机备份
http://www.cnblogs.com/dwzjs/archive/2011/04/25/2027687.html
Crontab 定时任务管理
crontab -e
01 03 * * * /var/proftpd_data/backup/bin/mysqlFullBackup.sh
10 04 * * * /var/proftpd_data/backup/bin/ftpDownload.sh
前五个字段的整数取值范围及意义是:
0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
(责任编辑:IT)
创建一个测试用的数据库
mysql -u root -p
#设置一下权限,方便在备份时使用
set password for 'root'@'localhost' =password('dsideal'); flush privileges; #删除旧的测试数据库 drop database test; #创建新的测试数据库 create database test; use test; create table test (id int); insert into test values(1); insert into test values(2); insert into test values(3); insert into test values(4); insert into test values(5); select * from test; 然后备份test的整个数据库 #使用下面的 vi /usr/local/backup_test.sh 内容如下: #!/bin/sh date_str=`date +%Y%m%d` cd /data2/backup mysqldump -h localhost -u root --password=dsideal -R -E -e \ --max_allowed_packet=1048576 --net_buffer_length=16384 test\ | gzip > /tmp/data/dsideal_test_$date_str.sql.gz echo "DataBase Backup Success!" 参数说明: max_allowed_packet 和 net_buffer_length 这两个参数起着决定性作用,速度差别几百上千倍 我这里的配置是:--max_allowed_packet=25165824 --net_buffer_length=16384 其原理是合并多条数据成为一个 SQL 插入语句。 导出时候注意点: -e 使用包括几个VALUES列表的多行INSERT语法; --max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小; --net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。 注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。 首先确定目标库的参数值 mysql>show variables like 'max_allowed_packet'; mysql>show variables like 'net_buffer_length'; 根据参数值书写mysqldump命令,如: mysql>mysqldump -uroot -psupidea jb51.net goodclassification -e --max_allowed_packet=1048576 --net_buffer_length=16384 >www.it.net.cn.sql
#运行 sh /usr/local/backup_test.sh 还原: 从压缩文件直接恢复: gzip < dsideal_test_20130405.sql.gz | mysqldump -u root -p test
注意:这里的TEST数据库必须是存在的,否则会还原不了,就是说必须要保证这个数据库存在,新的机器就必须手工创建一下。 #修改文件属性,使其可执行 chmod +x /usr/local/backup_test.sh #修改/etc/crontab
crontab -e 01 3 * * * root /usr/local/backup_test.sh #表示每天3点钟执行备份 #如果需要异机备份 http://www.cnblogs.com/dwzjs/archive/2011/04/25/2027687.html Crontab 定时任务管理 crontab -e 01 03 * * * /var/proftpd_data/backup/bin/mysqlFullBackup.sh 10 04 * * * /var/proftpd_data/backup/bin/ftpDownload.sh 前五个字段的整数取值范围及意义是: 0~59 表示分 1~23 表示小时 1~31 表示日 1~12 表示月份 0~6 表示星期(其中0表示星期日) (责任编辑:IT) |