AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 5943
Accepted
Mokus
Mokus
Asked: 2011-09-20 00:59:49 +0800 CST2011-09-20 00:59:49 +0800 CST 2011-09-20 00:59:49 +0800 CST

Banco de dados dinamicamente alterável

  • 772

Temos um banco de dados e alguns dados são armazenados em uma pasta Trucrypt, minha dúvida é como posso incluir essa pasta trucrypt. O tipo de dados é MyISAM. Eu vi que há um link simbólico, mas não está muito claro para mim como posso usá-lo.

mysql myisam
  • 3 3 respostas
  • 817 Views

3 respostas

  • Voted
  1. Jonathan
    2011-09-20T01:38:15+08:002011-09-20T01:38:15+08:00

    Você pode usar links simbólicos com o MySQL. Tudo o que você precisa fazer é criar um link simbólico para os arquivos .frm, .MYI e .MYD de suas tabelas MyISAM no diretório do esquema do banco de dados MySQL que você deseja. Depois disso, corra flush tables;e eles devem aparecer.

    Também é importante que o usuário do MySQL seja capaz de acessar esses arquivos, então você pode ter um pouco de problema com os direitos do usuário.

    Além disso, dependendo da sua versão do MySQL, talvez haja uma configuração no my.cnf que habilita/desabilita links simbólicos, então você precisa ficar de olho nisso também.

    • 3
  2. Dave Rix
    2011-09-21T01:30:29+08:002011-09-21T01:30:29+08:00

    Recomenda-se fazer o link simbólico de todo o banco de dados, em vez de tabelas específicas - consulte a seção 7.11.3.1 do manual do MySQL 5.5.

    A seção 7.11.3.1.2 afirma que é possível vincular os dados MyISAM e arquivos de índice para diferentes diretórios (em partições diferentes por motivos de desempenho), mas NÃO o arquivo de definição de tabela .FRM.

    Você também precisa garantir que não tenha "skip-symbolic-links" ativado nas variáveis ​​do servidor.

    Você pode mover dados existentes e arquivos de índice (ou um banco de dados inteiro) e, em seguida, fazer um link simbólico de volta, apenas certifique-se de desligar o servidor primeiro! Se não iniciar o backup corretamente, verifique se a opção "pular links simbólicos" NÃO FOI DEFINIDA...

    • 3
  3. Best Answer
    RolandoMySQLDBA
    2011-09-20T14:47:15+08:002011-09-20T14:47:15+08:00

    Você pode criar um MyISAM e especificar instantaneamente qual é o diretório de dados e o diretório de índice. Os links simbólicos são feitos pelo mysqld.

    De acordo com a documentação do MySQL , você pode executar CREATE TABLE com uma opção DATA_DIRECTORY e INDEX_DIRECTORY (não disponível para Windows).

    Por exemplo, se você executar este comando

    CREATE TABLE mydb.mytb
    (
        id int not null auto_increment,
        stuff TEXT,
        PRIMARY KEY (id)
    ) ENGINE=MyISAM
    DATA DIRECTORY '/backups/dat_folder'
    INDEX DIRECTORY '/backups/ndx_folder';
    

    aqui está o que você ganha

    /var/lib/mysql/mydb/mytb.frm
    /var/lib/mysql/mydb/mytb.MYD -> /backups/dat_folder/mytb.MYD
    /var/lib/mysql/mydb/mytb.MYI -> /backups/ndx_folder/mytb.MYI
    

    A vantagem de fazer isso é reduzir a E/S de disco fazendo com que os arquivos de dados e de índice operem em discos diferentes se você escolher esses pontos de montagem para os diretórios.

    AVISO: Isso não pode ser feito com InnoDB por causa de sua forte interação com ibdata1. Falei sobre isso em 7 de agosto de 2011 .

    Se você tiver dados já estabelecidos, você terá que fazer o seguinte

    • desligar o mysqld
    • mover .MYD e .MYI para locais específicos
    • crie os links simbólicos manualmente no sistema operacional a partir do datadir (/var/lib/mysql/mydb do exemplo)
    • iniciar o mysqld
    • faça SHOW CREATE TABLE mydb.mytb\G

    Se isso falhar, faça o seguinte:

    CREATE TABLE mydb.mytblink like mydb.mytb;
    ALTER TABLE mydb.mytblink
        DATA DIRECTORY '/backups/dat_folder'
        INDEX DIRECTORY '/backups/ndx_folder';
    INSERT INTO mydb.mytblink SELECT * FROM mydb.mytb;
    

    Como um atalho potencial, você poderia fazer isso:

    CREATE TABLE mydb.mytblink like mydb.mytb;
    ALTER TABLE mydb.mytblink
        DATA DIRECTORY '/backups/dat_folder'
        INDEX DIRECTORY '/backups/ndx_folder';
    cp /var/lib/mysql/mydb/mytb.MYD /backups/dat_folder
    cp /var/lib/mysql/mydb/mytb.MYI /backups/ndx_folder
    FLUSH TABLES;
    

    De uma chance !!!

    • 2

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve