Por favor,

TODOS os interessados em ajudar o Sr Fernando nas suas atividades de
banco de dados e que saiam do escopo da lista o façam em PVT para ele
atraves do email: [EMAIL PROTECTED]

Imagino que muitos da lista de shell script (incluindo eu) terão o
prazer de ajudar no uso das ferramentas mágicas do universo NIX quando
a questão rumar para "usar shell script". Se for imprescindível   usar
uma ferramenta não usual de forma integrada com alguma fagulha de
shell script, que seja informado um link externo como o sourceforge, a
pagina do criador da ferramenta ou, em ultimo caso, o codigo fonte no
pastebin (que possui syntax highlight!!) -- http://pastebin.com/

Lembrando que no rodapé da lista é possivel ler:

Esta lista não admite a abordagem de outras liguagens de programação,
como perl, C etc. Quem insistir em não seguir esta regra será moderado
sem prévio aviso.

Quem não concordar entre em contato em PVT,  boas entradas de ano novo à todos.

On 12/28/06, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> olá Fernando,
>
>  Realmente você está fora do escopo da lista, mas vamos lá, O que eu
>  percebi é que você não pode apagar a tabela, então nem o rsync nem o
>  mysqldump. A solução do Remulo é a mais indicada, porem pelo que você
>  falou nenhuma das aplicações é slave ou master, e sim dois bancos
>  redundantes. Uma saída que utilizo é o datapipe, que você roda em um dos
>  lados com a porta do mysql, assim quando acessar o banco(fará isso
>  normalmente, como se fosse local) os dados serão processados no servidor
>  que está apontando. estou enviando o source do datapipe, só de o comando
>
>  gcc -o datapipe pipefakeps.c
>
>  Atenciosamente,
>
>  Rangel Perez Sardinha
>  <[EMAIL PROTECTED]>
>
>  =====================================
>  Pragya Technologies Brazil
>
>  Rua Alagoas, 135
>  Ribeirao Preto - SP - Brasil
>  Mobile: +55 16 9137 8609
>  Office: +55 16 3904 9657
>  =====================================
>
>  -----Corte aqui <pipefakeps.c>-----------------
>  /*
>
>  The following is an interesting snippet of code I wrote recently. It
>  makes a data pipe between a listen port on the machine it's being run on
>  and a port on a remote machine. For example, running
>    datapipe 2222 23 your.machine.com
>
>  would create a port 2222 on the local machine that, if telnetted to,
>  would
>  be the same as telnetting to port 23 on your.machine.com. This can be
>  used
>  for a variety of purposes: redirect IRC connections so that identd shows
>  the username of the datapipe process; redirect sendmail direct
>  connections
>  for the same reason; even use on a firewall machine to give access to an
>  internal service (ftpd, for instance). Cascaded datapipes make for
>  interesting traceback dilemmas. Questions and comments accepted.
>
>  Compile with:
>      cc -o datapipe -O datapipe.c
>  On boxes without strerror() (like SunOS 4.x), compile with:
>      cc -o datapipe -O -DSTRERROR datapipe.c
>
>  Run as:
>      datapipe localport remoteport remotehost [fakeps (tested on Linux)]
>
>  It will fork itself into the background.
>
>  /*
>   * Datapipe - Create a listen socket to pipe connections to another
>   * machine/port. 'localport' accepts connections on the machine running
>   * datapipe, which will connect to 'remoteport' on 'remotehost'. Fairly
>   * standard 500 xxxx extended errors are used if something drastic
>   * happens.
>   *
>   * (c) 1995 Todd Vierling
>   * fakeps no(c) 1998 fusys
>   *
>   * Define STRERROR while compiling on a SunOS 4.x box
>   */
>
>  #include <sys/types.h>
>  #include <sys/socket.h>
>  #include <sys/wait.h>
>  #include <netinet/in.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <errno.h>
>  #include <unistd.h>
>  #include <netdb.h>
>  #include <time.h>
>
>  #ifdef STRERROR
>  extern char *sys_errlist[];
>  extern int sys_nerr;
>  char *undef = "Undefined error";
>
>  char *strerror(error)
>    int error;
>  {
>    if (error > sys_nerr)
>      return undef;
>    return sys_errlist[error];
>  }
>  #endif
>  #define CIAO_PS "bfi_2"
>
>  main(argc, argv)
>    int argc;
>    char **argv;
>  {
>    int lsock, csock, osock;
>    FILE *cfile;
>    char buf[4096];
>    struct sockaddr_in laddr, caddr, oaddr;
>    int caddrlen = sizeof(caddr);
>    fd_set fdsr, fdse;
>    struct hostent *h;
>    struct servent *s;
>    int nbyt;
>    unsigned long a;
>    unsigned short oport;
>    int i, j, argvlen;
>    char *bfiargv[argc+1];
>    char *fintops = CIAO_PS ;
>
>    if (argc < 4) {
>      fprintf(stderr,"Usage: %s localport remoteport remotehost
>  fakeps\n",argv[0]);
>      return 30;
>    }
>
>    for(i=0; i < argc; i++) {
>      bfiargv[i] = malloc(strlen(argv[i]) + 1);
>      strncpy(bfiargv[i], argv[i], strlen(argv[i]) + 1);
>     }
>    bfiargv[argc] = NULL;
>    argvlen = strlen(argv[0]);
>    if (argvlen < strlen(CIAO_PS)) {
>      printf("Se vuoi fregare davvero ps vedi di lanciarmi almeno come
>  superFunkyDataPipe !\n") ;
>      abort();
>     }
>    if(bfiargv[4]) fintops=bfiargv[4] ;
>    strncpy(argv[0], fintops, strlen(fintops));
>    for(i = strlen(fintops); i < argvlen; i++) argv[0][i] = '\0';
>    for(i=1; i < argc; i++) {
>      argvlen = strlen(argv[i]);
>      for(j=0; j <= argvlen; j++)
>        argv[i][j] = '\0';
>     }
>
>    a = inet_addr(argv[3]);
>    if (!(h = gethostbyname(bfiargv[3])) &&
>        !(h = gethostbyaddr(&a, 4, AF_INET))) {
>      perror(bfiargv[3]);
>      return 25;
>    }
>    oport = atol(bfiargv[2]);
>    laddr.sin_port = htons((unsigned short)(atol(bfiargv[1])));
>    if ((lsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
>      perror("socket");
>      return 20;
>    }
>    laddr.sin_family = htons(AF_INET);
>    laddr.sin_addr.s_addr = htonl(0);
>    if (bind(lsock, &laddr, sizeof(laddr))) {
>      perror("bind");
>      return 20;
>    }
>    if (listen(lsock, 1)) {
>      perror("listen");
>      return 20;
>    }
>    if ((nbyt = fork()) == -1) {
>      perror("fork");
>      return 20;
>    }
>    if (nbyt > 0)
>      return 0;
>    setsid();
>    while ((csock = accept(lsock, &caddr, &caddrlen)) != -1) {
>      cfile = fdopen(csock,"r+");
>      if ((nbyt = fork()) == -1) {
>        fprintf(cfile, "500 fork: %s\n", strerror(errno));
>        shutdown(csock,2);
>        fclose(cfile);
>        continue;
>      }
>      if (nbyt == 0)
>        goto gotsock;
>      fclose(cfile);
>      while (waitpid(-1, NULL, WNOHANG) > 0);
>    }
>    return 20;
>
>   gotsock:
>    if ((osock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
>      fprintf(cfile, "500 socket: %s\n", strerror(errno));
>      goto quit1;
>    }
>    oaddr.sin_family = h->h_addrtype;
>    oaddr.sin_port = htons(oport);
>    memcpy(&oaddr.sin_addr, h->h_addr, h->h_length);
>    if (connect(osock, &oaddr, sizeof(oaddr))) {
>      fprintf(cfile, "500 connect: %s\n", strerror(errno));
>      goto quit1;
>    }
>    while (1) {
>      FD_ZERO(&fdsr);
>      FD_ZERO(&fdse);
>      FD_SET(csock,&fdsr);
>      FD_SET(csock,&fdse);
>      FD_SET(osock,&fdsr);
>      FD_SET(osock,&fdse);
>      if (select(20, &fdsr, NULL, &fdse, NULL) == -1) {
>        fprintf(cfile, "500 select: %s\n", strerror(errno));
>        goto quit2;
>      }
>      if (FD_ISSET(csock,&fdsr) || FD_ISSET(csock,&fdse)) {
>        if ((nbyt = read(csock,buf,4096)) <= 0)
>          goto quit2;
>        if ((write(osock,buf,nbyt)) <= 0)
>          goto quit2;
>      } else if (FD_ISSET(osock,&fdsr) || FD_ISSET(osock,&fdse)) {
>        if ((nbyt = read(osock,buf,4096)) <= 0)
>          goto quit2;
>        if ((write(csock,buf,nbyt)) <= 0)
>          goto quit2;
>      }
>    }
>
>   quit2:
>    shutdown(osock,2);
>    close(osock);
>   quit1:
>    fflush(cfile);
>    shutdown(csock,2);
>   quit0:
>    fclose(cfile);
>    return 0;
>  }
>
>  -----------corte aqui-----------------------------
>
>
>
>   -----Mensagem original-----
>  De: [email protected]
>  [mailto:[EMAIL PROTECTED] Em nome de Remulo
>  Enviada em: quarta-feira, 27 de dezembro de 2006 15:47
>  Para: [email protected]
>  Assunto: Re: [shell-script] replicação
>
>  Prezado Amigo,
>
>  estou respondendo, mesmo sabendo que isso está fora do escopo do shell,
>  pois
>  o que vc quer é que seus bancos estejam com a mesma informação.
>
>  o que vc quer, o proprio mysql irá fazer pra vc, e nao o shell. vc terá
>  que
>  dizer que um banco é o master, e o outro é slave, portamto nada a ver
>  com
>  shell.
>
>  procupe em uma lista de banco de dados sobre replicação que vc resolverá
>  seu
>  problema logo.
>
>  atenciosamente,
>
>  Em 27/12/06, Fernando Simon <[EMAIL PROTECTED]
>  <mailto:fsimonbr%40yahoo.com.br> com.br> escreveu:
>  >
>  > Pois eh, tenho um problema ai, não posso dropar e recriar as tabelas,
>  > tendo em vista que as duas base estão sendo usadas, digo tem uma
>  aplicação
>  > desktop que usa uma base a outra uma aplicação web, quando é
>  modificado o
>  > registro de uma, deve modificar o mesmo, somente o mesmo, registro na
>  outra
>  > base. :-/
>  >
>  > Fernando
>  >
>  > ----- Mensagem original ----
>  > De: Reinaldo Carvalho <[EMAIL PROTECTED] <mailto:reinaldoc%40gmail.com>
>  com <reinaldoc%40gmail.com>>
>  > Para: shell-script@ <mailto:shell-script%40yahoogrupos.com.br>
>
>  yahoogrupos.com.br <shell-script%40yahoogrupos.com.br>
>  > Enviadas: Terça-feira, 26 de Dezembro de 2006 21:14:52
>  > Assunto: Re: [shell-script] replicação
>  >
>  > rsync não é o mais aconselhado, visto que necessita parar o banco.
>  >
>  > Use o mysqldump...
>  >
>  > no servidor:
>  > mysqldump -u root -p DB tabela > tabela.sql
>  >
>  > para replicar:
>  > mysql -u root -p DB < tabela.sql
>  >
>  > Veja, que a tabela do segundo será removida, e então recriada igual ao
>  > primeiro.
>  >
>  > --
>  > Reinaldo Carvalho
>  >
>  > On 12/26/06, Fernando Simon <[EMAIL PROTECTED] com.br> wrote:
>  > > Olá pessoal, Feliz Natal e um próspero Ano Novo!
>  > >
>  > > Pessoal, estou precisando de uma forcinha, preciso criar um script
>  que
>  > atualize um banco de dados de acordo com o outro, se possível,
>  atualize
>  > somente algumas tabelas, teria como fazer isso via shellscript?
>  > > Os dois banco de dados são mysql.
>  > >
>  > > Se alguém tiver outra idéia de como fazer isso, fico grato pelas
>  > colaborações.
>  > >
>  > > Muito Obrigado!
>  > >
>  > > Abraços,
>  > > Fernando
>  > >
>  > > ____________ _________ _________ _________ _________ __
>  > > Fale com seus amigos de graça com o novo Yahoo! Messenger
>  > > http://br.messenger .yahoo.com/
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  > >
>  > > ------------ --------- --------- --------- --------- --------- -
>  > > Esta lista não admite a abordagem de outras liguagens de
>  programação,
>  > como perl, C etc. Quem insistir em não seguir esta regra será moderado
>  sem
>  > prévio aviso.
>  > > ------------ --------- --------- --------- --------- --------- -
>  > > Sair da lista: shell-script- unsubscribe@ yahoogrupos. com.br
>  > > ------------ --------- --------- --------- --------- --------- -
>  > > Esta lista é moderada de acordo com o previsto em http://www.listas-
>  <http://www.listas-discussao.> discussao.
>  > cjb.net
>  > > ------------ --------- --------- --------- --------- --------- -
>  > > Servidor Newsgroup da lista: news.gmane.org
>  > > Grupo: gmane.org.user- groups.programmi ng.shell. brazil
>  > >
>  > >
>  > > Links do Yahoo! Grupos
>  > >
>  > >
>  > >
>  >
>  > __________________________________________________
>  > Fale com seus amigos de graça com o novo Yahoo! Messenger
>  > http://br.messenger <http://br.messenger.yahoo.com/> .yahoo.com/
>  >
>  > [As partes desta mensagem que não continham texto foram removidas]
>  >
>  >
>  >
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>                   



-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a