本文主要解决,两台mysql主机,一台在服主机,一台备份主机,日常定时备份。环境是debain系统,以及安装mariadb数据库。
1、备份主机的数据库conf文件中,本系统的路径是/etc/mysql/mariadb.conf.d/50-client.cnf
添加远程链接的账号密码。
[client]
#password = [your_password]
port = 3306
socket = /tmp/mysql.sock
#以下是添加部分
host=在服主机地址
user=root
password=123456
2、写一支dbBackup.sh脚本,远程抽取 在服主机 的数据,并备份至指定文件夹,共享给大家:
#!/bin/bash
#decription:mysql-order automatically backup script
#声明变量,指定数据库名
backupDatabase=mydb
#声明变量,指定表,若全表备份,则置空
#backupTables=""
fileName=${backupDatabase}`date +%Y%m%d`
#定义baseDir变量,指定存放位置
baseDir=/srv/backup/
#备份数据库
mysqldump --defaults-extra-file=/etc/mysql/mariadb.conf.d/50-client.cnf ${backupDatabase} >${baseDir}${fileName}.sql
#压缩
tar -zcPvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql
#删除刚备份的sql文件,留下压缩的
rm -f ${baseDir}${fileName}.sql;
#删除7天前备份的数据,只保留一周的数据
find ${baseDir} -mtime +3 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;
#删除7天前的日志数据,只保留一周的日志数据 已在mysql设置失效时间,只保存30内的日志
#find /var/lib/mysql/ -mtime +7 -name "mariadb-relay-bin.*" -exec rm -rf {} \;
3、将dbBackup.sh脚本添加至定时任务中。
输入命令:crontab -e,并添加如下命令
# 每天2时0分备份
0 2 * * * /bin/bash /usr/local/bin/dbBackup.sh
4、第二天就会指定的文件里,查看到备份的打包文件了。
5、若遇到 在服主机 数据库损坏,恢复操作如下:
在linux终端中,输入命令:mysql -u root -p --default-character-set=utf8 order < E:/backup/dbabck.sql
回车后输入密码 10086
6、最后分享下sqldump的相关语法:
1.导出指定表的数据
mysqldump -t database -u username -ppassword --tables table_name1 table_name2 table_name3 >D:\db_script.sql
2.导出指定表的结构
mysqldump -d database -u username -ppassword --tables table_name1 table_name2 table_name3>D:\db_script.sql
3.导出表的数据及结构
mysqldump database -u username -p password --tables table_name1 table_name2 table_name3>D:\db_script.sql
4.若 数据中 ,某些表除外,其余表都需导出
mysqldump -h IP -u username -ppassword --default-character-set=utf8 --database database_name --ignore-table=database_name.table_name1
--ignore-table=database_name.table_name2 --ignore-table=database_name.table_name3 >D:\db_script.sql