是否有任何软件或工具可以每隔几个小时定期自动备份mysql数据库?
它应该在本地硬盘上备份,还能通过FTP备份到不同的服务器上吗?
我在Windows上使用mySQL(Wamp).
备份网站常规怎么样?
最近我导入了一个新的数据库,在我的本地机器上进行开发,但它不起作用:ENUM列仅在没有引号的情况下发送变量时才起作用.这是一个例子:
mysql.local>select count(*) from psh_products where active = 1;
+----------+
| count(*) |
+----------+
| 72782 |
+----------+
1 row in set (0.04 sec)
mysql.local>select count(*) from psh_products where active = '1';
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
如果你想知道表结构:
CREATE TABLE `psh_products` (
`productID` int(12) unsigned NOT NULL AUTO_INCREMENT,
`catID` int(2) unsigned NOT NULL,
`main_sku` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`sku` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`shortsku` varchar(255) COLLATE utf8_unicode_ci NOT …Run Code Online (Sandbox Code Playgroud) 我有这行PHP备份我的数据库,工作就像一个魅力(Windows 7):
$exec_str = "{$real_path}Bin\mysqldump -h {$mysql_db_host} -u {$mysql_db_user} -p{$mysql_db_pasw} {$db_name} > {$backupdir}\\{$db_name}.sql";
Run Code Online (Sandbox Code Playgroud)
但我宁愿让.zql文件用7zip压缩(作为7z)
这个不起作用(7za.exe的路径是正确的)而是生成空的7z文件:
$exec_str = "{$real_path}Bin\mysqldump -h {$mysql_db_host} -u {$mysql_db_user} -p{$mysql_db_pasw} {$db_name} | {$real_path}7za a > {$backupdir}\\{$db_name}.sql.7z";
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我知道之前已经问过这个问题的部分内容,但我有一些相关的问题.
我正在尝试执行
mysqldump -u uname -ppassword --add-drop-database --databases databaseName | gzip > fileName
Run Code Online (Sandbox Code Playgroud)
我可能会抛弃一个非常大的(200GB?)数据库.这本身就是一件蠢事吗?然后我想通过网络发送压缩文件进行存储,删除本地转储,并清除几个表.
无论如何,我正在使用这样的子进程,因为似乎没有办法在没有子进程的情况下执行整个原始调用 是一个表名:
from subprocess import Popen, PIPE
f = open(FILENAME, 'wb')
args = ['mysqldump', '-u', 'UNAME', '-pPASSWORD', '--add-drop-database', '--databases', 'DB']
p1 = Popen(args, stdout=PIPE)
P2 = Popen('gzip', stdin=p1.stdout, stdout=f)
p2.communicate()
Run Code Online (Sandbox Code Playgroud)
但后来我读到,通信缓存内存中的数据,这对我不起作用.这是真的?
我现在最终做的是:
import gzip
subprocess.call(args, stdout=f)
f.close()
f = open(filename, 'rb')
zipFilename = filename + '.gz'
f2 = gzip.open(zipFilename, 'wb')
f2.writelines(f)
f2.close()
f.close()
Run Code Online (Sandbox Code Playgroud)
当然这需要一百万年,我讨厌它.
我的问题:1.我可以在非常大的数据库上使用我的第一种方法吗?2.我是否可能将mysqldump的输出传输到套接字并通过网络触发并在它到达时保存它,而不是发送压缩文件?
谢谢!
我在我们的数据库中有过去两年的模型数据.我想从数据库表中仅选择最后2个季度的那些模型.
假设, Sysdate-> 29/07/2013(July)
我应该能够从下面的季度检索模型
Q1-April,May,June(last quarter)
Q2-July,Aug,Sep(Including quarter)
Run Code Online (Sandbox Code Playgroud)
以下查询如何更改?
Select model_id,model_name,Effective_date_from,effective_date_to
from model
where active='YES';
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用cron作业恢复我的cpanel.
我的脚本是这样的
/usr/bin/mysqldump --user=username --password=password --host=localhost dbname | gzip > /home/username/backups/dbbackup_$date.sql.gz
Run Code Online (Sandbox Code Playgroud)
并在backup.sh中
#!/bin/bash
date=`date +%Y%m%d_%k%M`;
/usr/bin/mysqldump --user=username --password=password --host=localhost dbname | gzip > /home/username/backups/dbbackup_$date.sql.gz
Run Code Online (Sandbox Code Playgroud)
我已经设定了每5分钟的时间.但它没有发生.请建议我在哪里做错了
我一直在使用mysql很长一段时间,但没有真正研究它的一个功能 - 转储中的指令.我目前正在进行分区,所以让我们以一个例子为例,让我们看一下http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html中的代码:
show create table t2\G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`dt` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE (to_seconds(dt))
(PARTITION p01 VALUES LESS THAN (63426787200) ENGINE = MyISAM,
PARTITION p02 VALUES LESS THAN (63426816000) ENGINE = MyISAM,
PARTITION p03 VALUES LESS THAN (63426844800) ENGINE = MyISAM,
PARTITION p04 VALUES LESS THAN (63426873600) ENGINE = MyISAM,
PARTITION p05 VALUES LESS THAN (63426902400) ENGINE = MyISAM,
PARTITION …Run Code Online (Sandbox Code Playgroud) 在我的cronjobs里面,我每晚都会制作一个完整的mysqldump.
我的数据库在20个表中有1.5GB的总数据.
几乎每张桌子都有索引.
我做这样的备份:
mysqldump --user=user --password=pass --default-character-set=utf8 database
--single-transaction| gzip > "mybackupfile"
Run Code Online (Sandbox Code Playgroud)
我做了2个月.这个过程需要将近1.5分钟,持续2个月.
上周我的托管公司改变了我的服务器.服务器更改后,此过程开始长达5分钟.我告诉服务器公司,他们将CPU从4GHz增加到6GHz,因此mysqldump进程变为3,5分钟.然后他们增加到12 GHz.但这并没有改变性能.
我检查了我的共享SSD磁盘性能hdparm.它是70 MB /秒.所以我再次抱怨 所以他们把我的硬盘改成了另一个.硬盘读取速度变为170 MB /秒.所以mysqldump进程变成了3分钟.
但持续时间远远超过以前的值.这种性能下降的原因是什么?我该如何隔离问题?
(服务器是Centos 6.4,12 GHz CPU,8 GB RAM)
编辑:我的公司再次更改服务器,我仍然有同样的问题.旧服务器有3.5分钟的备份时间,现在新服务器有5分钟的时间.压缩时的结果文件为820 MB,解压缩时为2.9 GB.
我试图找出是什么让这个转储变慢.
转储过程于11:24:32开始,于11:29:40停止.您可以从屏幕截图的时间戳中查看它.
截图:
hdparm 结果:
/dev/sda2:
Timing cached reads: 3608 MB in 1.99 seconds = 1809.19 MB/sec
Timing buffered disk reads: 284 MB in 3.00 seconds = 94.53 MB/sec
/dev/sda2:
Timing cached reads: 2120 MB in 2.00 seconds = 1058.70 MB/sec …Run Code Online (Sandbox Code Playgroud) 我正在编写一个简单的Python脚本来复制MySQL数据库.我试图根据以下SO问题及其答案复制数据库:" 不使用mysqldump复制/复制数据库 "," python subprocess和mysqldump "和" Python子进程,mysqldump和管道 ".但是,由于某些原因我的脚本无法正常工作,因为表格和数据没有出现在我的新数据库中.
我可以从我的输出中看到mysqldump正常工作(我在输出中看到"转储完成..."),所以我认为我的管道出了问题.
这是我的脚本:
#!/usr/bin/env python
import pymysql
from subprocess import Popen, PIPE, STDOUT
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='mydb')
cur = conn.cursor()
print("Attempting to create new database...")
try:
cur.execute("CREATE DATABASE mydb2")
print("Creating new database")
except Exception:
print("Database already exists")
print()
# close connection just to be sure
cur.close()
conn.close()
print("Trying to copy old database to new database...")
args1 = ["mysqldump", "-h", "localhost", "-P", "3306", "-u", "root", "-p", "mydb"] …Run Code Online (Sandbox Code Playgroud) 我正在使用MySql v 6.1.7601。我通过以下命令转储数据库:
mysqldump -u USERNAME -pPASSWORD --routines --add-drop-database --databases myDatabase> ...pathToSavedFile.sql
Run Code Online (Sandbox Code Playgroud)
我本来希望
DROP DATABASE IF EXISTS myDatabase;
CREATE DATABASE IF NOT EXISTS myDatabase;
USE myDatabase;
Run Code Online (Sandbox Code Playgroud)
...创建表代码...
相反,我有这个:
/*!40000 DROP DATABASE IF EXISTS `myDatabase` */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ 'myDatabase' /*DEFAULT ....
Run Code Online (Sandbox Code Playgroud)
如何设置以正确显示(清除)DROP和CREATE语句?