Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL内存引擎&x2B;初始化文件_Mysql - Fatal编程技术网

MySQL内存引擎&x2B;初始化文件

MySQL内存引擎&x2B;初始化文件,mysql,Mysql,我正在尝试设置一个MySQL数据库,以便这些表由内存引擎运行。我真的不在乎丢失一些填充的数据,但我想每天转储它(通过cronjob中的mysqldump),并将init文件设置为这个转储。然而,我似乎不知道如何使mysqldump与init文件希望SQL语句格式化的方式兼容 用这种方式建立数据库时,我是不是遗漏了一些非常明显的东西?MySQL转储就是——将MySQL数据库内容转储为SQL。因此,没有任何方法可以将其作为数据库文件直接读取 您可以做的是修改MySQL的init脚本,以便在每次MyS

我正在尝试设置一个MySQL数据库,以便这些表由内存引擎运行。我真的不在乎丢失一些填充的数据,但我想每天转储它(通过cronjob中的mysqldump),并将init文件设置为这个转储。然而,我似乎不知道如何使mysqldump与init文件希望SQL语句格式化的方式兼容


用这种方式建立数据库时,我是不是遗漏了一些非常明显的东西?

MySQL转储就是——将MySQL数据库内容转储为SQL。因此,没有任何方法可以将其作为数据库文件直接读取

您可以做的是修改MySQL的init脚本,以便在每次MySQL启动时自动加载最后一次转储(通过命令行)

更好的解决方案是使用ramdisk将数据库的全部内容保存在内存中,然后定期将其复制到安全位置作为备份


尽管如此,如果您想维护数据库的内容,最好只使用一个基于磁盘的存储引擎(InnoDB或MyISAM),并为服务器提供大量RAM作为缓存。

MySQL转储就是——将MySQL数据库内容转储为SQL。因此,没有任何方法可以将其作为数据库文件直接读取

您可以做的是修改MySQL的init脚本,以便在每次MySQL启动时自动加载最后一次转储(通过命令行)

更好的解决方案是使用ramdisk将数据库的全部内容保存在内存中,然后定期将其复制到安全位置作为备份


不过,如果您想维护数据库的内容,最好使用一个基于磁盘的存储引擎(InnoDB或MyISAM),只需为服务器提供大量RAM用作缓存。

我的理解是--init文件要求每一条SQL语句都在一行中,并且文件中没有注释

您应该能够通过以下方式清除评论:

mysqldump --comments=false
对于一行中的每个SQL语句,我不熟悉使用mysqldump选项来实现这一点,但您可以使用一行Perl来删除所有新行:

perl -pi -w -e 's/\n//g;' theDumpFilename
我不知道--init文件是否会喜欢它,但值得一试


您可以做的另一件事是从一个脚本启动mysql,该脚本也加载到一个常规的mysqldump文件中。不是您想要的解决方案,但它可能会达到您想要的效果。

我的理解是--init文件要求每一条SQL语句都在一行上,并且文件中没有注释

您应该能够通过以下方式清除评论:

mysqldump --comments=false
对于一行中的每个SQL语句,我不熟悉使用mysqldump选项来实现这一点,但您可以使用一行Perl来删除所有新行:

perl -pi -w -e 's/\n//g;' theDumpFilename
我不知道--init文件是否会喜欢它,但值得一试


您可以做的另一件事是从一个脚本启动mysql,该脚本也加载到一个常规的mysqldump文件中。这不是您想要的解决方案,但它可能会达到您想要的效果。

我偶然发现了这一点,所以我将告诉您我该怎么做。首先,我在内存表中有一个ip->country db。没有理由试图“保存”它,它很容易被定期删除和重新创建,但是当它丢失并且只计划每周更新时,php的行为可能无法预测。其次,我有一堆其他的内存表。没有理由保存它们,因为它们更不稳定,寿命只有几分钟。它们将很快被刷新,但过时的数据总比没有好。此外,如果您使用任何单独的密钥缓存,可能(在某些情况下)需要先加载它们,否则您将无法加载它们。最后,如果您没有转储完整的数据库,请确保在其中放一个“use”语句,因为启动时没有其他接口(如mysql客户端)来打开数据库。。所以

cat << EOF > /var/lib/mysql/initial_load.tmp
use fieldsave_db;                 
cache index fieldsave_db.search in search_cache;
EOF

mysqldump --comments=false -udrinkin -pbeer@  fieldsave_db ip2c \
    >> /var/lib/mysql/initial_load.tmp                  
mysqldump --comments=false -ufields -pavenue  -B memtables \
    >> /var/lib/mysql/initial_load.tmp

grep -v -- ^-- /var/lib/mysql/initial_load.tmp |tr -d '\012' \
   |sed -e 's/;/;\n/g' > /var/lib/mysql/initial_load.sql
cat/var/lib/mysql/initial_load.tmp
使用fieldsave_数据库;
缓存索引字段save_db.search in search_cache;
EOF
mysqldump--comments=false-udrinkin-pbeer@fieldsave_db ip2c\
>>/var/lib/mysql/initial_load.tmp
mysqldump--comments=false-ufields-pavenue-memtables\
>>/var/lib/mysql/initial_load.tmp
grep-v--^-/var/lib/mysql/initial_load.tmp | tr-d'\012'\
|sed-e's/;/\n/g'>/var/lib/mysql/initial\u load.sql

和往常一样,YMMV,但它对我很有效。

我偶然发现了这一点,所以我会告诉你我是怎么做的。首先,我在内存表中有一个ip->country db。没有理由试图“保存”它,它很容易被定期删除和重新创建,但是当它丢失并且只计划每周更新时,php的行为可能无法预测。其次,我有一堆其他的内存表。没有理由保存它们,因为它们更不稳定,寿命只有几分钟。它们将很快被刷新,但过时的数据总比没有好。此外,如果您使用任何单独的密钥缓存,可能(在某些情况下)需要先加载它们,否则您将无法加载它们。最后,如果您没有转储完整的数据库,请确保在其中放一个“use”语句,因为启动时没有其他接口(如mysql客户端)来打开数据库。。所以

cat << EOF > /var/lib/mysql/initial_load.tmp
use fieldsave_db;                 
cache index fieldsave_db.search in search_cache;
EOF

mysqldump --comments=false -udrinkin -pbeer@  fieldsave_db ip2c \
    >> /var/lib/mysql/initial_load.tmp                  
mysqldump --comments=false -ufields -pavenue  -B memtables \
    >> /var/lib/mysql/initial_load.tmp

grep -v -- ^-- /var/lib/mysql/initial_load.tmp |tr -d '\012' \
   |sed -e 's/;/;\n/g' > /var/lib/mysql/initial_load.sql
cat/var/lib/mysql/initial_load.tmp
使用fieldsave_数据库;
缓存索引字段save_db.search in search_cache;
EOF
mysqldump--comments=false-udrinkin-pbeer@fieldsave_db ip2c\
>>/var/lib/mysql/initial_load.tmp
mysqldump--comments=false-ufields-pavenue-memtables\
>>/var/lib/mysql/initial_load.tmp
grep-v--^-/var/lib/mysql/initial_load.tmp | tr-d'\012'\
|sed-e's/;/\n/g'>/var/lib/mysql/initial\u load.sql
和往常一样,YMMV,但它对我很有效。

这几乎很棒,但是