本帖最后由 airmanisvip 于 2011-03-28 17:49:56 编辑

解决方案 »

  1.   

    没有
    我觉得你的问题和 如何在mysql提示符下运行mysqldump 是一个问题。
    linux下可用system,
    mysql>system "mysqldump -xxx xxxxx"win下没辙。
      

  2.   

    没有C的API,MYSQLDUMP就是利用的C API去访问MYSQL进行备份。 你可以参考一下MYSQLDUMP的源代码。
      

  3.   

    MYSQLDUMP的源代码在哪能下到,找了半天没找到啊
      

  4.   

    MYSQL官方就有。
    /* Copyright 2000-2008 MySQL AB, 2008, 2009 Sun Microsystems, Inc.   This program is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published by
       the Free Software Foundation; version 2 of the License.   This program is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       GNU General Public License for more details.   You should have received a copy of the GNU General Public License
       along with this program; if not, write to the Free Software
       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *//* mysqldump.c  - Dump a tables contents and format to an ASCII file
    **
    ** The author's original notes follow :-
    **
    ** AUTHOR: Igor Romanenko ([email protected])
    ** DATE:   December 3, 1994
    ** WARRANTY: None, expressed, impressed, implied
    **          or other
    ** STATUS: Public domain
    ** Adapted and optimized for MySQL by
    ** Michael Widenius, Sinisa Milivojevic, Jani Tolonen
    ** -w --where added 9/10/98 by Jim Faucette
    ** slave code by David Saez Padros <[email protected]>
    ** master/autocommit code by Brian Aker <[email protected]>
    ** SSL by
    ** Andrei Errapart <[email protected]>
    ** Tõnu Samuel  <[email protected]>
    ** XML by Gary Huntress <[email protected]> 10/10/01, cleaned up
    ** and adapted to mysqldump 05/11/01 by Jani Tolonen
    ** Added --single-transaction option 06/06/2002 by Peter Zaitsev
    ** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
    */#define DUMP_VERSION "10.13"#include <my_global.h>
    #include <my_sys.h>
    #include <my_user.h>
    #include <m_string.h>
    #include <m_ctype.h>
    #include <hash.h>
    #include <stdarg.h>#include "client_priv.h"
    #include "mysql.h"
    #include "mysql_version.h"
    #include "mysqld_error.h"
    #include "../sql/ha_ndbcluster_tables.h"/* Exit codes */#define EX_USAGE 1
    #define EX_MYSQLERR 2
    #define EX_CONSCHECK 3
    #define EX_EOM 4
    #define EX_EOF 5 /* ferror for output file was got */
    #define EX_ILLEGAL_TABLE 6/* index into 'show fields from table' */#define SHOW_FIELDNAME  0
    #define SHOW_TYPE  1
    #define SHOW_NULL  2
    #define SHOW_DEFAULT  4
    #define SHOW_EXTRA  5/* Size of buffer for dump's select query */
    #define QUERY_LENGTH 1536/* ignore table flags */
    #define IGNORE_NONE 0x00 /* no ignore */
    #define IGNORE_DATA 0x01 /* don't dump data for this table */
    #define IGNORE_INSERT_DELAYED 0x02 /* table doesn't support INSERT DELAYED */static void add_load_option(DYNAMIC_STRING *str, const char *option,
                                 const char *option_value);
    static ulong find_set(TYPELIB *lib, const char *x, uint length,
                          char **err_pos, uint *err_len);
    static char *alloc_query_str(ulong size);static void field_escape(DYNAMIC_STRING* in, const char *from);
    static my_bool  verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
                    quick= 1, extended_insert= 1,
                    lock_tables=1,ignore_errors=0,flush_logs=0,flush_privileges=0,
                    opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0,
                    opt_delayed=0,create_options=1,opt_quoted=0,opt_databases=0,
                    opt_alldbs=0,opt_create_db=0,opt_lock_all_tables=0,
                    opt_set_charset=0, opt_dump_date=1,
                    opt_autocommit=0,opt_disable_keys=1,opt_xml=0,
                    opt_delete_master_logs=0, tty_password=0,
                    opt_single_transaction=0, opt_comments= 0, opt_compact= 0,
                    opt_hex_blob=0, opt_order_by_primary=0, opt_ignore=0,
                    opt_complete_insert= 0, opt_drop_database= 0,
                    opt_replace_into= 0,
                    opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1,
                    opt_events= 0,
                    opt_alltspcs=0, opt_notspcs= 0;
    static my_bool insert_pat_inited= 0, debug_info_flag= 0, debug_check_flag= 0;
    static ulong opt_max_allowed_packet, opt_net_buffer_length;
    static MYSQL mysql_connection,*mysql=0;
    static DYNAMIC_STRING insert_pat;
    static char  *opt_password=0,*current_user=0,
                 *current_host=0,*path=0,*fields_terminated=0,
                 *lines_terminated=0, *enclosed=0, *opt_enclosed=0, *escaped=0,
                 *where=0, *order_by=0,
                 *opt_compatible_mode_str= 0,
                 *err_ptr= 0,
                 *log_error_file= NULL;
    static char **defaults_argv= 0;
    static char compatible_mode_normal_str[255];
    /* Server supports character_set_results session variable? */
    static my_bool server_supports_switching_charsets= TRUE;
    static ulong opt_compatible_mode= 0;
    #define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
    #define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
    static uint opt_mysql_port= 0, opt_master_data;
    static uint my_end_arg;
    static char * opt_mysql_unix_port=0;
    static int   first_error=0;
    static DYNAMIC_STRING extended_row;
    #include <sslopt-vars.h>
    FILE *md_result_file= 0;
    FILE *stderror_file=0;#ifdef HAVE_SMEM
    static char *shared_memory_base_name=0;
    #endif
    static uint opt_protocol= 0;/*
    Dynamic_string wrapper functions. In this file use these
    wrappers, they will terminate the process if there is
    an allocation failure.
    */
    static void init_dynamic_string_checked(DYNAMIC_STRING *str, const char *init_str,
        uint init_alloc, uint alloc_increment);
    static void dynstr_append_checked(DYNAMIC_STRING* dest, const char* src);
    static void dynstr_set_checked(DYNAMIC_STRING *str, const char *init_str);
    static void dynstr_append_mem_checked(DYNAMIC_STRING *str, const char *append,
      uint length);
    static void dynstr_realloc_checked(DYNAMIC_STRING *str, ulong additional_size);
    /*
      Constant for detection of default value of default_charset.
      If default_charset is equal to mysql_universal_client_charset, then
      it is the default value which assigned at the very beginning of main().
    */
    static const char *mysql_universal_client_charset=
      MYSQL_UNIVERSAL_CLIENT_CHARSET;
    static char *default_charset;
    static CHARSET_INFO *charset_info= &my_charset_latin1;
    const char *default_dbug_option="d:t:o,/tmp/mysqldump.trace";
    /* have we seen any VIEWs during table scanning? */
    my_bool seen_views= 0;
    const char *compatible_mode_names[]=
    {
      "MYSQL323", "MYSQL40", "POSTGRESQL", "ORACLE", "MSSQL", "DB2",
      "MAXDB", "NO_KEY_OPTIONS", "NO_TABLE_OPTIONS", "NO_FIELD_OPTIONS",
      "ANSI",
      NullS
    };
    #define MASK_ANSI_QUOTES \
    (\
     (1<<2)  | /* POSTGRESQL */\
     (1<<3)  | /* ORACLE     */\
     (1<<4)  | /* MSSQL      */\
     (1<<5)  | /* DB2        */\
     (1<<6)  | /* MAXDB      */\
     (1<<10)   /* ANSI       */\
    )
    TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1,
                                      "", compatible_mode_names, NULL};HASH ignore_table;static struct my_option my_long_options[] =
    {
      {"all", OPT_ALL, "Deprecated. Use --create-options instead.",
       &create_options, &create_options, 0, GET_BOOL, NO_ARG, 1,
       0, 0, 0, 0, 0},
      {"all-databases", 'A',
       "Dump all the databases. This wil