乔克
乔克
Published on 2024-11-15 / 32 Visits
0
0

MySQL备份

  • 建议使用 --single-transaction 参数来获得一致性备份,减少锁表。
  • 按需求来导出,只要自己想要的数据,尽量减少导出文件大小。
  • 若想用于搭建从库,建议使用 --master-data = 2 参数记录主库 binlog 信息。
  • 若想备份存储过程、自定义函数及事件,请加 -R -E 参数,此二者默认不开启。
  • 不了解的参数不要随意加,按默认即可。
# 备份全部数据库(包含存储过程、自定义函数及事件) 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases > /tmp/all_database.sql 
 
# 要求记录 binlog 位点信息 可用于搭建从库 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases --master-data=2 > /tmp/all_database.sql 
 
# 备份指定数据库 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 > /tmp/db1.sql 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 db2 > /tmp/db1_db2.sql 
 
# 备份部分表 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 > /tmp/tb1.sql 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 tb2 tb3 > /tmp/tb.sql 
 
# 导出某个表,数据以单行insert显示 
mysqldump -uroot -pxxxxxx --single-transaction --skip-extended-insert db1 tb1 > /tmp/tb1.sql 
 
# 导出单表的部分数据 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where=" create_time >= '2021-06-01 00:00:00' " > /tmp/tb1.sql 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where='id < 10' > /tmp/tb1.sql 
 
# 排除某些表导出 
mysqldump -uroot -pxxxxxx --single-transaction --databases db1 --ignore-table=db1.tb1 --ignore-table=db1.tb2 > /tmp/db1.sql 
 
# 只导出结构或只导出数据 
mysqldump -uroot -pxxxxxx db1 --no-data > /tmp/db1_jiegou.sql 
mysqldump -uroot -pxxxxxx db1 --no-create-info > /tmp/db1_data.sql 
 
# 只导出某个库的存储过程及自定义函数 
mysqldump -uroot -pxxxxxx -d -t -R db1 > /tmp/db1_routine.sql 
 
# 远程导出 即MySQL服务端不在本地 
mysqldump -uroot -pxxxxxx -hxxx.xxx.xx -P3306 --single-transaction --databases db1 > /tmp/db1.sql 

Comment