MYSQL数据备份之mysqldump命令详解(附脚本定时备份)
生活随笔
收集整理的這篇文章主要介紹了
MYSQL数据备份之mysqldump命令详解(附脚本定时备份)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、常見備份命令介紹
| cp | 快 | 快 | 物理備份、靈活性低 | 很弱 | 少量數據備份 |
| mysqldump | 慢 | 慢 | 邏輯備份、適用所有存儲引擎 | 一般 | 中小型數據量備份 |
| xtrabackup | 較快 | 較快 | 實現innodb熱備、對存儲引擎有要求 | 強大 | 較大規模的備份 |
熱備份指的是當數據庫進行備份時, 數據庫的讀寫操作均不是受影響
溫備份指的是當數據庫進行備份時, 數據庫的讀操作可以執行,但是不能執行寫操作
冷備份指的是當數據庫進行備份時, 數據庫不能進行讀寫操作, 即數據庫要下線
二、mysqldump備份
2.1、mysqldump命令介紹
[root@]> mysqldump -helpUsage: mysqldump [OPTIONS] database_name [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump --help 1.登錄選項:-u user:指定用戶-h host:指定主機-p:表示要使用密碼-E, --events: 備份事件調度器-R, --routines: 備份存儲過程和存儲函數 2.備份選項:--all-databases:備份所有數據庫--databases db1 db2:備份指定的數據庫--single-transaction:對事務引擎執行熱備--flush-logs:更新二進制日志文件--master-data=21:每備份一個庫就生成一個新的二進制文件(默認)2:只生成一個新的二進制文件--quick:在備份大表時指定該選項2.2、查看所屬數據庫、用戶的權限
1、查看mysql數據庫中的所有用戶:
mysql>SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;2、查看數據庫中具體某個用戶的權限:
mysql> show grants for 'user'@'localhost'; 或 mysql> select * from mysql.user where user='root'\G;3、修改用戶權限:
mysql> grent all on *.* to `user`@`localhost`; mysql> flush privileges; Query OK, 0 rows affected (0.00 sec).4、向數據庫施加讀鎖
mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.00 sec)三、命令備份示例
**導出命令大全** #導出education數據庫里面的users表的表數據和表結構mysqldump -u[用戶名] -h[ip] -p[密碼] -P[端口號] 數據庫名 表名 >導出的文件名.sqlmysqldump -uroot -h127.0.0.1 -proot -P3306 education users>d:/user.sql #導出包括系統數據庫在內的所有數據庫(all.sql默認保存在bin文件夾下面)mysqldump -uroot -proot --all-databases>all.sql #導出多張表:mysqldump -uroot -proot --databases test --tables t1 t2>two.sql #只導出表結構不導表數據,添加“-d”命令參數mysqldump -uroot -h127.0.0.1 -proot -P3306 -d education users>d:/user.sql #只導出表數據不導表結構,添加“-t”命令參數mysqldump -uroot -h127.0.0.1 -proot -P3306 -t education users>d:/user.sql #只導出test數據庫的表結構導出:mysqldump -uroot -proot --no-data --databases test>s1.sql導入:mysql -uroot -proot -h127.0.0.1 -P3306 test<s1.sql**導入命令大全**格式:mysql -h[ip] -P[(大寫)端口] -u[用戶名] -p[密碼] [數據庫名] < d:XX.sql(路徑) mysql -uroot -proot -h127.0.0.1 -P3306 education<d:/database.sqlmysql -uroot -proot -h127.0.0.1 -P3306 <d:/all_database.sql #命令行導入mysql> use test;mysql> source /home/test/database.sql四、腳本備份示例:
#!/bin/bash #NAME:數據庫備份 #DATE:*/*/* #USER:***#設置本機數據庫登錄信息 mysql_user="user" mysql_password="passwd" mysql_host="localhost" mysql_port="3306" mysql_charset="utf8mb4" date_time=`date +%Y-%m-%d-%H-%M`#保存目錄中的文件個數 count=10 #備份路徑 path=/***/#備份數據庫sql文件并指定目錄 mysqldump --all-databases --single-transaction --flush-logs --master-data=2 -h$mysql_host -u$mysql_user -p$mysql_password > $path_$(date +%Y%m%d_%H:%M).sql [ $? -eq 0 ] && echo "-----------------數據備份成功_$date_time-----------------" || echo "-----------------數據備份失敗-----------------"#找出需要刪除的備份 delfile=`ls -l -crt $path/*.sql | awk '{print $9 }' | head -1` #判斷現在的備份數量是否大于閾值 number=`ls -l -crt $path/*.sql | awk '{print $9 }' | wc -l` if [ $number -gt $count ] thenrm $delfile #刪除最早生成的備份,只保留count數量的備份#更新刪除文件日志echo "-----------------已刪除過去備份sql $delfile-----------------"fi增加定時備份
crontab -e* * * * * - - - - - | | | | | | | | | +----------星期中星期幾 (0 - 6) (星期天 為0) | | | +---------------月份 (1 - 12) | | +--------------------一個月中的第幾天 (1 - 31) | +-------------------------小時 (0 - 23) +------------------------------分鐘 (0 - 59)添加定時任務(每天12:50以及23:50執行備份操作) 50 12,23 * * * cd /home/;sh backup.sh >> log.txt總結
以上是生活随笔為你收集整理的MYSQL数据备份之mysqldump命令详解(附脚本定时备份)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thinkphp5多级控制器及其使用
- 下一篇: 老友记下载