本人刚接触mysql不久,假如提的问题很菜,还请大家见谅
情况是这样, 现在在做新上线数据库的自动化备份工作。
1.先说说密码方面:近期由于安全考虑,root本地登录也设置了密码,限制root用户从服务器无密码直接登录数据库。由于之前的数据库从服务器上直接登录的root用户都是没有设置密码的,所以在自动化备份脚本里就不需要把密码直接贴进脚本里,直接执行mysqldump -h127.0.0.1 -Pxxxx -A database > xxxxxx就行了。
现在的问题是,既然新上线的数据库root用户设置了密码,那么在自动化备份脚本里就需要把密码给写进脚本里,而这又是与安全规范相抵触的(安全规范禁止在脚本和配置文件里直接写入密码),所以本人在苦恼该怎么样不在脚本里写入密码就能执行mysqldupm命令备份数据库,而又能够实现自动化执行,不然每次备份都需要人工手动执行,然后输入密码…..不知大家有何方法?
2.数据的备份本人计划在从库上做(每周一次全量备份+每天一次增量备份),问题是假如主库需要恢复的时候,在主库导入全量备份后,该怎么样导入增量备份文件呢?
原因是导出的增量备份文件的binlog位置点记录的都是从库上binlog的位置,那么在主库上进行恢复的时候该怎么办呢?
情况是这样, 现在在做新上线数据库的自动化备份工作。
1.先说说密码方面:近期由于安全考虑,root本地登录也设置了密码,限制root用户从服务器无密码直接登录数据库。由于之前的数据库从服务器上直接登录的root用户都是没有设置密码的,所以在自动化备份脚本里就不需要把密码直接贴进脚本里,直接执行mysqldump -h127.0.0.1 -Pxxxx -A database > xxxxxx就行了。
现在的问题是,既然新上线的数据库root用户设置了密码,那么在自动化备份脚本里就需要把密码给写进脚本里,而这又是与安全规范相抵触的(安全规范禁止在脚本和配置文件里直接写入密码),所以本人在苦恼该怎么样不在脚本里写入密码就能执行mysqldupm命令备份数据库,而又能够实现自动化执行,不然每次备份都需要人工手动执行,然后输入密码…..不知大家有何方法?
2.数据的备份本人计划在从库上做(每周一次全量备份+每天一次增量备份),问题是假如主库需要恢复的时候,在主库导入全量备份后,该怎么样导入增量备份文件呢?
原因是导出的增量备份文件的binlog位置点记录的都是从库上binlog的位置,那么在主库上进行恢复的时候该怎么办呢?
解决方案
15
1 脚本设置好权限
2 mysqldump –single-transaction只需要select权限
3 增量备份建议用xtrabackup
2 mysqldump –single-transaction只需要select权限
3 增量备份建议用xtrabackup
15
第1个问题,建议先建个文件,把加密后的密码放到文件里,然后,你的代码从文件读取密码,然后解密,放到命令里,再执行
10
用mysqldump脚本没办法,只能把密码共享出来。所以控制一下能看到这个脚本的人。
10
直接备份文件的方式可以不使用密码。对于myisam引擎的,只需要备份MYD文件,对于innodb引擎只需要备份ibd文件。原因是表结构应该是明确的,不必非要到线上服dump。
需要恢复数据时,先建立表结构,之后对于myisam可以直接用备份MYD覆盖掉建表时创建的MYD,之后执行repair 命令。
对于innodb,假如版本5.6以上,可以先discard掉建表时的表空间,然后把备份的ibd覆盖过去,之后再import导入表空间。
假如是低于5.6就比较麻烦一点,需要修改ibd文件的37字节开始4个字节的表空间id,这就得写个工具了。
需要恢复数据时,先建立表结构,之后对于myisam可以直接用备份MYD覆盖掉建表时创建的MYD,之后执行repair 命令。
对于innodb,假如版本5.6以上,可以先discard掉建表时的表空间,然后把备份的ibd覆盖过去,之后再import导入表空间。
假如是低于5.6就比较麻烦一点,需要修改ibd文件的37字节开始4个字节的表空间id,这就得写个工具了。