Gostaria de parabenizar publicamente a fineza com que o Thiago levou a questão do off-topic . O mundo seria bem melhor se mais gente fosse tão sensato quanto o colega na abordagem das "diferenças"
On Thu, 2006-12-28 at 14:20 -0200, Tiago Barcellos Peczenyj wrote: > 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 > > > > -- Miranda <[EMAIL PROTECTED]> --------------------------------------------------------------------- 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: [EMAIL PROTECTED] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
