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
