zoukankan      html  css  js  c++  java
  • MySQL备份 规格严格

    在ChinaUnix找到一个不错的帖子,把其中的脚本整理一下:

    #!/bin/bash
    # 记录时间
    T=$(date +"%k:%M:%S")
    # 这种是备份表数据到文件中,同时删除原表数据
    mysqldump -u root -p12345 flow record >log_$T.sql
    # 但是这样是否中途有数据损失不好说
    mysql -u root -p12345 -e "use flow;truncate table record;"
    # 这种是备份到辅助表中
    mysql -u root -p12345 -e "use flow;create table record$T as select * from record
    ;truncate table record;
    " 
    # 理论来说这种最好
    mysql -u root -p12345 -e "use flow; create table log_temp like logs;
    rename table logs to log_xxxx, log_temp to logs;
    "
    # 然后再把数据导出来
    ------------------------------------------------------
    crontab -e 或者 vi /etc/crontab

    */5 * * * * bak.sh
    1. #!/bin/sh
    2. #
    3. # By Justin
    4. #
    5. # Archive the carrierDB email_package table in every week.
    6. #
    7. #
    8. #Setting
    9. RT_name="root"
    10. RT_pwd=""
    11. RT_sock="/data02/mysql/mysql.sock"

    12. ORI_table="email_package"
    13. ARC_table="email_package$(date +%Y%m%d)"

    14. # execute SQL
    15. /usr/local/mysql/bin/mysql -u${RT_name} -p${RT_pwd} -S${RT_sock} << EOF

    16. use carrierDB_0;

    17. create table if not exists carrierDB_0.${ARC_table} like carrierDB_0.${ORI_table};

    18. insert into carrierDB_0.${ARC_table} select * from carrierDB_0.${ORI_table} where task_status_id = 3 and create_time < date_sub(now(), interval 7 day);

    19. delete from carrierDB_0.${ORI_table} where task_status_id = 3 and create_time < date_sub(now(), interval 7 day);

    20. quit

    21. EOF

    这个性能不好,对了,除了用CRON外,也可以使用MYSQL EVENT

  • 相关阅读:
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言|博客作业04
    C语言|博客作业02
    第二周作业
    第一周作业
    学期总结
    作业01
    C语言I博客作业09
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/2277056.html
Copyright © 2011-2022 走看看