遇到的一个mysql备份恢复的问题
数据库特点
--使用partition,存在上百个分区
--建表时指定了data_dir和index_dir,数据不是存储在默认位置,而是在mysqld的数据目录下link到真正的数据文件
备份恢复要求
--备份出来的数据恢复时要恢复成不同的表名
--恢复出来的数据实际存储位置也要存储在与原表不同的位置
问题
如果直接mysqldump-source恢复-change table name,则新表的存储位置无法满足要求,link到的位置必然是错误的,需要修改mysqld数据目录下的数百个软链接
备份过程
mysqldump -uroot -p$dbpassword -h$srcip $dbname $tablename > $tablename.data
信息修改过程
sed -e "s/$origname/$newname/g" $tablename.data > $tablename.data.tmp1
rm -f $tablename.data
sed -e "s/$origloc/$newloc/g" $tablename.data.tmp1 > $tablename.data.tmp2
rm -f $tablename.data.tmp1
mv $tablename.data.tmp2 $tablename.data
恢复过程
mysql -u$dbuser -p$dbpassword -h$destip -e"$createdbsql"
mysql -u$dbuser -p$dbpassword -h$destip $dbname -e"source $tablename.data"
相关文档:
NDBCLUSTER
(also known as NDB
) is an in-memory
storage engine offering high-availability and data-persistence
features.
The NDBCLUSTER
storage engine can be
configured with a range of failover and load-balancing options,
but it is easiest t ......
远程连接服务器出现以上错误
主要有三个原因:
1、mysql授权表里没有远程机器的权限,及需要在授权表mysql.user添加
grant all privileges on *.* to 'root'@'远程登陆IP' identified by '远程登陆密码'
flush privileges;
2、网络不通,这个就不说了。
3、防火墙禁止3306端口,以iptable为例
vi /etc/sysconfig/ipt ......
导出整个数据库:mysqldump -u用户名 -p密码 需要导出的数据库名 > 导出文件名.sql
其他参数:
-d 不包含数据,只有数据库表结构
--add-drop-table 在每个create语句之前增加一个drop
--skip-opt 每条记录只对应一个insert语句 ......
1、选取最适用的字段属性
MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使 ......
Administration 管理
Kill a Thread 结束一个线程
mysql > KILL 999;
Optimize Table 优化表
mysql > OPTIMEZE TABLE foo;
Reload Users Permissions 刷新MySQL系统权限相关表
mysql > FLUSH PRIVILEGES;
Repair Table 修复表
mysql > ......