秋风问答网秋风问答网

Mysql创建只读用户,自动备份数据库

1、用管理员账户登录 mysql

mysql -uroot -p

2、创建只读用户,因为要写自动执行脚本,所以密码设置要注意下。

CREATE USER 'readonly'@'%' IDENTIFIED BY 'Abcd1234!!!';

3、给只读用户赋予权限,PROCESS 这个必须给。第二句是赋予account库的所有表的查询和lock锁表权限。第三句是赋予game数据库,event的表的查询和锁表权限,最后的 FLUSH 是让权限生效。

GRANT PROCESS ON *.* TO 'readonly'@'%';
GRANT SELECT,lock ON account.* TO 'readonly'@'%';
GRANT SELECT,lock ON game.event TO 'readonly'@'%';
FLUSH PRIVILEGES;

4、以上创建用户和赋予权限就可以了,根据情况把需要备份的表的权限给到就可以了,然后用这个用户备份全库,就会备份有权限的库和表。备份命令:

mysqldump -ureadonly -pAbcd1234!!! -h192.168.0.35 --all-databases --skip-opt | gzip > /home/backups/mysql/mysqlBak.0530.sql.gz

其中 --all-databases 是把所有有权限的库和表都备份

--skip-opt 不锁表,这个命令没测试,请自行测试。

| gzip 进行压缩

> 代表备份的表写入那个文件里面。

最后是文件位置。

5、假设要每小时备份一个,那么需要用到 crontab

0 */1 * * * bash /home/sh/mysqlBak.sh

6、脚本内容 mysqlBak.sh

#!bin/bash
time2=$(date "+%Y-%m-%d-%H%M%S")
echo $time2
mysqldump -ureadonly -pAbcd1234!!! -h192.168.0.35 --all-databases --skip-opt | gzip > /home/backups/mysql/mysqlBak.$time2.sql.gz

这样就完成了,看看是否每个小时都会产生一个备份,并且记得测试备份是否能还原数据库哦。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

回到首页 发表评论 回到顶部