• Nenhum resultado encontrado

Notas Windows

No documento 1 Informa¸c˜ oes Gerais . . . . 1 (páginas 167-171)

Verificando Assinatura Usando RPM

2.6 Notas espec´ificas para os Sistemas Operacionais

2.6.1 Notas Windows

Esta se¸c˜ao descreve assuntos espec´ificos para usar MySQL no Windows.

2.6.1.1 Conectando em um MySQL Rematamente a Windows Utilizando SSH

Aqui temos notas sobre como conectar a um servidor MySQL atrav´es de uma conex˜ao remota e segura usando o SSH (por David Carlsondcarlson@mplcomm.com:

1. Instale um cliente SSH na sua m´aquina Windows. Como um usu´ario, o melhor op¸c˜ao paga que encontrei ´e oSecureCRT dahttp://www.vandyke.com/. Outra op¸c˜ao ´e o f-securedahttp://www.f-secure.com/. Vocˆe tamb´em pode encontrar algumas vers˜oes livres noGoogleemhttp://directory.google.com/Top/Computers/Security/Products_

and_Tools/Cryptography/SSH/Clients/Windows/.

2. Inicie seu cliente SSH Windows. ConfigureHost_Name = IP_ou_Nome_servidormysql.

Configureuserid=seu_useridpara logar no seu servidor. Este valoruseridn˜ao pode ser o mesmo do nome do usu´ario se sua conta MySQL.

3. Configure a porta de acesso. E tamb´em fa¸ca um acesso remoto (Configure local_

port: 3306,remote_host: ip_ou_nomeservidormysql, remote_port: 3306) ou um acesso local (configure port: 3306,host: localhost,remote port: 3306).

4. Salve tudo, sen˜ao vocˆe ter´a que refazer tudo da pr´oxima vez.

5. Logue ao seu servidor com a sess˜ao SSH que acabou de ser criada.

6. Na sua m´aquina Windows, inicie algumas aplica¸c˜oes ODBC (como o Access).

7. Crie um novo arquivo no Windows e ligue ao MySQL usando o driver ODBC da mesma forma que vocˆe normalmente faz, EXCETO pelo fato de digitar localhost para a m´aquina servidora MySQL — n˜ao nomeservidormysql.

Vocˆe agora deve ter uma conex˜ao ODBC ao MySQL, criptografada com SSH.

2.6.1.2 Distribuindo Dados Entre Diferentes Discos no Win32

A partir do MySQL vers˜ao 3.23.16, omysqld-maxe servidoresmysql-max-ntna distribui¸c˜ao MySQL s˜ao compilados com a op¸c˜ao -DUSE_SYMDIR. Isto permite que vocˆe coloque um di-ret´orio de banco de dados em discos diferentes adicionando um link simb´olico para ele. (Isto

´e parecido com o a com que links simb´olicos funcionam no Unix, embora o procedimento para configurar o link seja diferente).

No Windows, vocˆe cria um link simb´olico para um banco de dados MySQL criando um arquivo que contem o caminho para o diret´orio de destino. Salve o arquivo no diret´orio de dados usando o nome de arquivo ‘nome_bd.sym’, onde nome_bd ´e o nome do banco de dados.

Por exemplo, se o diret´orio de dados do MySQL ´e ‘C:\mysql\data’ e vocˆe precisa ter o banco de dados foo localizado em ‘D:\data\foo’, vocˆe deve criar o arquivo

‘C:\mysql\data\foo.sym’ que contˆem o caminho D:\data\foo\. Depois disto, todas tabelas criadas no banco de dados foo ser˜ao criadas no ‘D:\data\foo’. O diret´orio

‘D:\data\foo’ deve existir para ele funcionar. Note tamb´em que o link simb´olico n˜ao ser´a

usado se um diret´orio com o nome do banco de dados existe no diret´orio de dados MySQL.

Isto significa que se vocˆe j´a tem um diret´orio de banco de dados chamado ‘foo’ no direorio de dados, vocˆe deve movˆe-lo para ‘D:\data’ antes do link simb´olico ser efetivado. (Para evitar problemas, o servidor n˜ao deve estar executando quando vocˆe mover o diret´orio do banco de dados.)

Note que devido a penalidade que vocˆe tem na velocidade quando abre todas as tabelas, n´os n˜ao habilitamos esta op¸c˜ao por padr˜ao, mesmo se vocˆe compilar o MySQL com suporte a isto. Para habilitar links simb´olicos vocˆe deve colocar no seu arquivomy.cnfou my.ini a seguinte entrada:

[mysqld]

symbolic-links

No MySQL 4.0--simbolic-linksest´a habilitado por padr˜ao. Se vocˆe n˜ao precisa us´a-lo vocˆe pode usar a op¸c˜aoskip-symbolic-linkd.

2.6.1.3 Compilando clientes MySQL no Windows

Em seus arquivos fontes, vocˆe deve incluir ‘my_global.h’ antes de ‘mysql.h’:

#include <my_global.h>

#include <mysql.h>

‘my_global.h’ inclui qualquer outro arquivo necess´ario para compatibilidade de Windows (como o ‘windows.h’) se o arquivo ´e compilado no Windows.

Vocˆe tamb´em pode ligar seu c´odigo coma biblioteca dinˆamica ‘libmysq.lib’, que ´e apenas um wrapper para carregar em ‘libmysql.dll’ sobre demanda, ou ligar com a biblioteca est´atica ‘mysqlclient.lib’.

Perceba que como as bibliotecas clientes do MySQL s˜ao compiladas como bibliotecas threaded, vocˆe tamb´em deve compilar seu c´odigo para ser multi-threaded!

2.6.1.4 MySQL para Windows Comparado com o MySQL para Unix

O MySQL para Windows tem provado ser muito est´avel. Esta vers˜ao do MySQL tem os mesmos recursos que sua vers˜ao correspondente Unix com as seguintes exce¸c˜oes:

Win95 e threads

O Win95 perde aproximadamente 200 bytes de mem´oria principal para cada thread criada. Cada conex˜ao no MySQL cria uma nova thread, portanto vocˆe n˜ao deve executar omysqldpor um longo tempo no Win95 se seu servidor lida com v´arias conex˜oes! WinNT e Win98 n˜ao sofrem deste bug.

Leituras simultˆaneas

O MySQL depende das chamadas pread() e pwrite() para estar apto a misturar INSERT e SELECT. Atualmente n´os usamos mutexes para emular pread()/pwrite(). N´os iremos, a longo prazo, trocar o n´ivel da interface de arquivos com uma interface virtual para que n´os possamos usar a interface readfile()/writefile() no NT/2000/XP para obter mais velocidade. A implementa¸c˜ao atual limita o n´umero de arquivos abertos que o MySQL

pode usar para 1024, o que significa que vocˆe n˜ao conseguir´a executar tantas threads simultˆaneas no NT/2000/XP como no Unix.

Leitura de blocos

O MySQL usa uma leitura de blocos para cada conex˜ao, que tem as seguintes implica¸c˜oes:

Uma conex˜ao n˜ao ir´a ser disconectada automaticamente depois de 8 horas, como acontece com a vers˜ao Unix do MySQL.

Se uma conex˜ao trava, ´e imposs´ivel a finaliza-la sem matar o MySQL.

mysqladmin killn˜ao ir´a funcionar em uma conex˜ao adormecida.

mysqladmin shutdown n˜ao pode abortar enquanto existirem conex˜oes adormecidas.

Planejamos corrigir este problema quando nossos desenvolvedores Windows tiverem conseguido um boa solu¸c˜ao.

DROP DATABASE

Vocˆe n˜ao pode remover um banco de dados que est´a em uso por alguma thread.

Matando o MySQL do gerenciador de tarefas

Vocˆe n˜ao pode matar o MySQL do gerenciador de tarefas ou com o utilit´ario shutdown no Win95. Vocˆe deve deslig´a-lo com mysqladmin shutdown.

Nomes case-insensitivo

Nomes de arquivos n˜ao s˜ao caso sensitivo no Windows, portanto, nomes de bancos de dados e tabelas do MySQL tamb´em n˜ao s˜ao caso sensitivo no Win-dows. A ´unica restri¸c˜ao ´e que os nomes de bancos de dados e tabelas devem usar o mesmo caso em uma senten¸ca fornecida. Veja Se¸c˜ao 6.1.3 [Name case sensitivity], P´agina 473.

O caracter de diret´orio ‘\’

Componentes de nomes de caminho no Win95 s˜ao separados pelo caracter ‘\’ o qual tamb´em ´e o caractere de escape no MySQL. Se vocˆe estiver usando LOAD DATA INFILEouSELECT ... INTO OUTFILE, use nomes de arquivo no estilo Unix com caracteres ‘/’:

mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;

mysql> SELECT * INTO OUTFILE ’C:/tmp/skr.txt’ FROM skr;

Uma alternativa ´e dobrar o caracter ‘/’:

mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;

mysql> SELECT * INTO OUTFILE ’C:\\tmp\\skr.txt’ FROM skr;

Problems with pipes.

Pipes n˜ao funcionam com confian¸ca na linha de comando do Windows. Se o pipe incluir o caracter ^Z / CHAR(24), o Windows achar´a que ele encontrou o fim de um arquivo e abortar´a o programa.

Isto ´e um problma principalmente quando se tenta aplicar um log bin´ario como a seguir:

mysqlbinlog binary-log-name | mysql --user=root

Se vocˆe obter um problema aplicando o log e suspeitar que seja devido a um caracter ^Z/CHAR(24)vocˆe pode usar a seguinte alternativa:

mysqlbinlog binary-log-file --result-file=/tmp/bin.sql mysql --user=root --eexecute "source /tmp/bin.sql"

O ´ultimo comando pode tamb´em ser usado para leitura em qualquer arquivo sql que contenha dados bin´arios.

erro: Can’t open named pipe

Se vocˆe utiliza um servidor MySQL vers˜ao 3.22 no NT com o os programas clientes MySQL mais novos, ser´a apresentado o seguinte erro:

error 2017: can’t open named pipe to host: . pipe...

Isto ocorre porque a vers˜ao do MySQL usa named pipes no NT por padr˜ao.

Vocˆe pode evitar este erro usando a op¸c˜ao --host=localhost para os novos clientes MySQL ou criar um arquivo de op¸c˜oes ‘c:\my.cnf’ que contenha a seguinte informa¸c˜ao:

[client]

host = localhost

A partir da vers˜ao 3.23.50, named pipes s˜ao habilitados somente se omysqld-nt ou mysqld-nt-maxfor iniciado com a op¸c˜ao --enable-name-pipe.

ErroAccess denied for user

Se vocˆe tenta executar um programa cliente MySQL para conectar a um servi-dor em execu¸c˜ao na mesma m´aquina, nas obtem o erro Access denied for user: ’some-user@unknown’ to database ’mysql’ quando acessar um servi-dor MySQL na mesma m´aquina, signifca que o MySQL n˜ao pode resolver seu nome de m´aquina corretamente.

Para corrigir isto, vocˆe deve criar um arquivo ‘\Windows\hosts’ com a seguinte informa¸c˜ao:

127.0.0.1 localhost ALTER TABLE

Enquanto vocˆe est´a executando uma instru¸c˜aoALTER TABLE, a tabela est´a blo-queada para ser usado por outras threads. Isto ocorre devido ao fato de que no Windows, vocˆe n˜ao pode deletar um aruivo que est´a em uso por outra threads.

No futuro, podemos encontrar algum modo de contornarmos este problema.

DROP TABLE

DROP TABLE em uma tabela que est´a em uso por uma tabela MERGE n˜ao fun-cionar´a no Windows porque o manipulador do MERGE faz o mapeamento da tabela escondido da camada superior do MySQL. Como o Windows n˜ao per-mite que vocˆe delete arquivos que est˜ao abertos, vocˆe primeiro deve descarregar todas as tabelasMERGE(comFLUSH TABLES) ou apagar a tabelaMERGEantes de deletar a tabela. Corrigiremos isto assim que introduzirmos views.

DATA DIRECTORY eINDEX DIRECTORY

As op¸c˜oes DATA DIRECTORY e INDEX DIRECTORY para CREATE TABLE s˜ao igno-radas no Windows, porque ele n˜ao suporta links simb´olicos.

Aqui est˜ao alguns assuntos em aberto para qualquer um que queira melhorar o MySQL no Windows:

Adicionar alguns ´icones agrad´aveis para o start e shutdown na instala¸c˜ao do MySQL.

Seria muito interessante conseguir matar o mysqld do gerenciador de tarefas. Para o momento, deve ser usado o mysqladmin shutdown.

Portar o readlinepara Windows para uso na ferramenta de linha de comandomysql.

Vers˜oes GUI dos clientes MySQL padr˜oes (mysql, mysqlshow, mysqladmin e mysqldump) seria ´otimo.

Seria muito bom se as fun¸c˜oes de leitura e escrita no socket em ‘net.c’ fosse inter-romp´iveis. Isto tornaria poss´ivel matar threads abertas com mysqladmin kill no Windows.

Adicionar macros para usar os m´etodos mais r´apidos de incremento/decremento de threads seguras fornecidos pelo Windows.

No documento 1 Informa¸c˜ oes Gerais . . . . 1 (páginas 167-171)