slave.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #ifndef SLAVE_H
  2. #define SLAVE_H
  3. typedef struct st_master_info
  4. {
  5.   char log_file_name[FN_REFLEN];
  6.   ulonglong pos,pending;
  7.   File fd; // we keep the file open, so we need to remember the file pointer
  8.   IO_CACHE file;
  9.   // the variables below are needed because we can change masters on the fly
  10.   char host[HOSTNAME_LENGTH+1];
  11.   char user[USERNAME_LENGTH+1];
  12.   char password[HASH_PASSWORD_LENGTH+1];
  13.   uint port;
  14.   uint connect_retry;
  15.   pthread_mutex_t lock;
  16.   pthread_cond_t cond;
  17.   bool inited;
  18.   
  19.   st_master_info():pending(0),fd(-1),inited(0)
  20.   {
  21.     host[0] = 0; user[0] = 0; password[0] = 0;
  22.     pthread_mutex_init(&lock, NULL);
  23.     pthread_cond_init(&cond, NULL);
  24.   }
  25.   ~st_master_info()
  26.   {
  27.     pthread_mutex_destroy(&lock);
  28.     pthread_cond_destroy(&cond);
  29.   }
  30.   inline void inc_pending(ulonglong val)
  31.   {
  32.     pending += val;
  33.   }
  34.   inline void inc_pos(ulonglong val)
  35.   {
  36.     pthread_mutex_lock(&lock);
  37.     pos += val + pending;
  38.     pending = 0;
  39.     pthread_cond_broadcast(&cond);
  40.     pthread_mutex_unlock(&lock);
  41.   }
  42.   // thread safe read of position - not needed if we are in the slave thread,
  43.   // but required otherwise
  44.   inline void read_pos(ulonglong& var)
  45.   {
  46.     pthread_mutex_lock(&lock);
  47.     var = pos;
  48.     pthread_mutex_unlock(&lock);
  49.   }
  50.   int wait_for_pos(THD* thd, String* log_name, ulonglong log_pos);
  51. } MASTER_INFO;
  52. typedef struct st_table_rule_ent
  53. {
  54.   char* db;
  55.   char* tbl_name;
  56.   uint key_len;
  57. } TABLE_RULE_ENT;
  58. #define TABLE_RULE_HASH_SIZE   16
  59. #define TABLE_RULE_ARR_SIZE   16
  60. int flush_master_info(MASTER_INFO* mi);
  61. int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd = -1);
  62. // if fd is -1, dump to NET
  63. int fetch_nx_table(THD* thd, MASTER_INFO* mi);
  64. // retrieve non-exitent table from master
  65. // the caller must set thd->last_nx_table and thd->last_nx_db first
  66. int show_master_info(THD* thd);
  67. int show_binlog_info(THD* thd);
  68. int tables_ok(THD* thd, TABLE_LIST* tables);
  69. // see if the query uses any tables that should not be replicated
  70. int db_ok(const char* db, I_List<i_string> &do_list,
  71.   I_List<i_string> &ignore_list );
  72. // check to see if the database is ok to operate on with respect to the
  73. // do and ignore lists - used in replication
  74. int add_table_rule(HASH* h, const char* table_spec);
  75. int add_wild_table_rule(DYNAMIC_ARRAY* a, const char* table_spec);
  76. void init_table_rule_hash(HASH* h, bool* h_inited);
  77. void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited);
  78. void end_slave(); // clean up
  79. int init_master_info(MASTER_INFO* mi);
  80. void end_master_info(MASTER_INFO* mi);
  81. extern bool opt_log_slave_updates ;
  82. pthread_handler_decl(handle_slave,arg);
  83. extern bool volatile abort_loop, abort_slave;
  84. extern bool slave_running;
  85. extern uint32 slave_skip_counter;
  86. // needed for problems when slave stops and
  87. // we want to restart it skipping one or more events in the master log that
  88. // have caused errors, and have been manually applied by DBA already
  89. extern pthread_t slave_real_id;
  90. extern THD* slave_thd;
  91. extern MASTER_INFO glob_mi;
  92. extern HASH replicate_do_table, replicate_ignore_table;
  93. extern DYNAMIC_ARRAY  replicate_wild_do_table, replicate_wild_ignore_table;
  94. extern bool do_table_inited, ignore_table_inited,
  95.     wild_do_table_inited, wild_ignore_table_inited;
  96. extern bool table_rules_on;
  97. #ifndef DBUG_OFF
  98. extern int disconnect_slave_event_count, abort_slave_event_count ;
  99. #endif
  100. // the master variables are defaults read from my.cnf or command line
  101. extern uint master_port, master_connect_retry;
  102. extern my_string master_user, master_password, master_host,
  103.   master_info_file;
  104. extern I_List<i_string> replicate_do_db, replicate_ignore_db;
  105. extern I_List<i_string_pair> replicate_rewrite_db;
  106. extern I_List<THD> threads;
  107. #endif