编写脚本,使用mysqldump实现分库分表备份

编写脚本,使用mysqldump实现分库分表备份

#编辑脚本文件
[root@localhost scripts]# vim bak_tb1.sh

#脚本内容:
#设置变量,减少代码冗余
mysql_cmd='-uroot -p123'
exclude_db='Database|information_schema|-S|mysql|performance_schema|sys'
bak_path=/backup/db
#将要分出来的数据库名写在dbname文件缓存中
mysql ${mysql_cmd} -e 'show databases' | egrep -v "${exclude_db}" > dbname

while read line #获取所需数据库的备份
do
  [ -d ${bak_path}/$line ] || mkdir -p ${bak_path}/$line #创建文件路径,若有则在该目录下创建目录;反之,创建符合条件的相关目录
  mysqldump ${mysql_cmd} -B $line | gzip > ${bak_path}/${line}/${line}_$(date +%F).sql.gz #通过循环将需要备份的数据库一个个压缩,传到之前创建的文件目录下

  mysql -uroot -p123 -N -e "show tables from $line" > tbname #查询数据库中的表

  while read tb #获取数据库中表的备份
  do
    mysqldump ${mysql_cmd}  $line $tb | gzip > ${bak_path}/${line}/${line}_${tb}_$(date +%F).sql.gz #将数据库中的表压缩并在相应的数据库路径下
  done < tbname     #读取tbname文件内容
done < dbname       #读取dbname文件内容
rm -f dbname tbname  删除缓存的数据库,数据表文件

#在对应路径下查看生成的文件:
[root@localhost scripts]# tree /backup/db
/backup/db
├── db
│   ├── db_2023-08-05.sql.gz
│   ├── db_score_2023-08-05.sql.gz
│   └── db_student_2023-08-05.sql.gz
├── db1
│   └── db1_2023-08-05.sql.gz
├── db2
│   └── db2_2023-08-05.sql.gz
├── db3
│   └── db3_2023-08-05.sql.gz
└── db4
    └── db4_2023-08-05.sql.gz

5 directories, 7 files
#检验文件是否能成功还原:
[root@localhost scripts]# mysql -uroot -p123 -e 'select * from db.student'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----+-----------+------+-------+--------------+--------------------+
| id  | name      | sex  | birth | department   | address            |
+-----+-----------+------+-------+--------------+--------------------+
| 901 | 张老大    | 男   |  1985 | 计算机系     | 北京市海淀区       |
| 902 | 张老二    | 男   |  1986 | 中文系       | 北京市昌平区       |
| 903 | 张三      | 女   |  1990 | 中文系       | 湖南省永州市       |
| 904 | 李四      | 男   |  1990 | 英语系       | 辽宁省阜新市       |
| 905 | 王五      | 女   |  1991 | 英语系       | 福建省厦门市       |
| 906 | 王六      | 男   |  1988 | 计算机系     | 湖南省衡阳市       |
+-----+-----------+------+-------+--------------+--------------------+

#删除db数据库中的student表
[root@localhost scripts]# mysql -uroot -p123 -e 'drop table db.student'
mysql: [Warning] Using a password on the command line interface can be insecure.

#检查是否成功删除
[root@localhost scripts]# mysql -uroot -p123 -e 'select * from db.student'
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1146 (42S02) at line 1: Table 'db.student' doesn't exist

#将/backup/db/db中的 db_student_2023-08-05.sql.gz表压缩包还原到数据库db中

[root@localhost scripts]# zcat /backup/db/db/db_student_2023-08-05.sql.gz | mysql -uroot -p123 db
mysql: [Warning] Using a password on the command line interface can be insecure.

#再次查看student表的情况:
[root@localhost scripts]# mysql -uroot -p123 -e 'select * from db.student'      mysql: [Warning] Using a password on the command line interface can be insecure.
+-----+-----------+------+-------+--------------+--------------------+
| id  | name      | sex  | birth | department   | address            |
+-----+-----------+------+-------+--------------+--------------------+
| 901 | 张老大    | 男   |  1985 | 计算机系     | 北京市海淀区       |
| 902 | 张老二    | 男   |  1986 | 中文系       | 北京市昌平区       |
| 903 | 张三      | 女   |  1990 | 中文系       | 湖南省永州市       |
| 904 | 李四      | 男   |  1990 | 英语系       | 辽宁省阜新市       |
| 905 | 王五      | 女   |  1991 | 英语系       | 福建省厦门市       |
| 906 | 王六      | 男   |  1988 | 计算机系     | 湖南省衡阳市       |
+-----+-----------+------+-------+--------------+--------------------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BigDump 的全称是 BigDump Staggered MySQL Dump Importer,它不是 Joomla! 的标准扩展,而是一个独立运行的 web 界面的工具软件。 教程:http://bbs.pinluo.com/thread-7957-1-1.html 在了解 BigDump 的功能之前,请先想像下面一幅景象:你的网站 MySQL 数据库体积大概有 500MB,甚至更大,即使将导出的 SQL 文件用 tar.gz 格式压缩,最终文件体积也超过了 PHP 所允许的 64MB 最大上传值。如果你想用这样一个庞大的 SQL 文件,通过 web 界面访问 phpMyAdmin 来导入到数据库,恐怕很难成功(除非你自己管理服务器,拥有 MySQL 的 shell 访问权限)。 对于普通用户来说,我认为使用 BigDump 工具完全能解决上述问题。BigDump 的工作原理是:将巨大的 SQL 文件分段多次导入,每完成一段就重新启动一次导入会话,因此不会造成中断、失败。 理论上讲,BigDump 可以针对任何一个 MySQL 数据库工作。 BigDump 数据库导入工具用法: 下载后得到一个 zip 压缩文件,解压后里面有一个 php 文件; 将压缩包里面的 bigdump.php 上传到 Joomla! 网站的 /tmp 目录下; 将你的 MySQL 数据库文件(.sql 格式或 .tar.gz 压缩包)也上传与 bigdump.php 在同一个目录下; 通过浏览器访问 bigdump.php 文件,就会看到所在目录下的文件列表。从列表中找到你的 SQL 文件,该文件后面会出现“Start Import”链接,点击此链接就开始了自动导入过程。 bigdump 会切换到新的页面,显示导入过程进度。完成后删除 bigdump 工具和刚才上传的 SQL 文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值