
Mendigaum
Membros-
Total de itens
7 -
Registro em
-
Última visita
Sobre Mendigaum

Mendigaum's Achievements
0
Reputação
-
Gostaria de obter alguma ajuda a respeito de replicação Configurei um servidor master e um servidor slave, porém o servidor slave não está recebendo as atualizações do master. Eu exportei os 4 bancos do meu interesse com mysqldump, importei no slave e reiniciei ambos os servidores 120118 9:50:20 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000004' at position 106, relay log './mysqld-relay-bin.000020' po$ 120118 9:50:20 [Note] Slave I/O thread: connected to master 'slave_user@189.123.163.51:3306', replication started in log 'mysql-bin.000004' at position 106 120118 14:34:52 [Note] Slave I/O thread killed while reading event 120118 14:34:52 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000004', position 106 120118 14:34:52 [Note] Error reading relay log event: slave SQL thread was killed mysql> SHOW SLAVE STATUS\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 189.123.163.51 Master_User: slave_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 106 Relay_Log_File: mysqld-relay-bin.000026 Relay_Log_Pos: 243 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 106 Relay_Log_Space: 243 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 1 row in set (0.00 sec) ERROR: No query specified
-
Estou querendo montar uma query meio bizarra, e queria saber se alguém pode ajudar Tenho um website que faz controle de contas de um jogo, só que o jogo é composto por 3 subservidores ( cada subservidor tem a mesma estrutura de banco de dados, ou seja, 3 bancos de dados diferentes com exatamente as mesmas tabelas, porém dados diferentes) Alem disso, tem um outro banco de dados que serve pra controle do site, que tem um cadastro da conta geral do site, e pela conta geral você consegue administrar as contas de jogo. O objetivo é listar as contas do jogo que ficam no database do servidor pertencentes a conta do site que é representada pela tabela accounts, e pra cada registro "accounts_game.account" = "accounts.id", obter o banco de dados a ser usado (que será descoberto através do campo destacado em amarelo servers."server_database") e por fim obter 1 registro da tabela server1.login pra cada registro em accounts_game OBS: o campo da tabela do jogo é server1.login.account_id, server2.login.account_id, server3.login.account_id
-
Sim, com certeza é necessário mudar algo. Não tem como aguentar uma travada no joguinho a cada 15 minutos. Preciso garantir que o servidor do joguinho tenha acesso garantido ao banco e que em nenhum momento haja sobrecarga no servidor. O servidor é um 2x AMD Opteron 270 [2GHz] + OEM 2GB DDR1 [2GB] + 4GB virtual. Eu achava que a view era tipo uma tabela que ficava guardada e sendo atualizada automaticamente de acordo com a atualização da tabela original, e não a cada query. A questão é que eu não sei o que fazer.
-
Por acaso, o conteudo das views é gerado toda vez que dá um select nelas? Achei que elas ficavam tipo prontas e o mysql ia atualizando elas conforme atualizava a tabela original. Tava vendo aqui, faria diferença na performance colocar os campos nome e last_kill como int? Na hora que eu executo o ultimo select, quando eu to vendo o "gerenciador de tarefas" do linux(top), os processos do mysql vão pra 100% de uso do CPU. Tem tanto banco de empresa grande aí com milhoes de registros e não acontece isso, por que comigo acontece?
-
Se for php, você pode criar a string sql com ifs Exemplo: <?php $sql = "SELECT * FROM TABELA WHERE "; if($_POST['titulo']){ $sql .= "`titulo` = '".$_POST['titulo']."'";} if($_POST['texto']){ $sql .= "`texto` = '".$_POST['texto']."'";} if($_POST['data']){ $sql .= "`data` = '".$_POST['data']."'";} ?> Outra opção seria usar "OR" na clausula where da consulta, mas isso implica não ter nenhum campo vazio e no caso a pessoa não vai poder refinar a busca preenchendo mais de um campo, e muito pelo contrário, vai ampliar. Ex: SELECT * FROM TABELA WHERE `titulo` = 'conteudo' OR `texto` = 'conteudo' OR data = ''; Ou dá pra fazer a mesma coisa em otra linguagem tb. Tem várias formas de fazer isso, esses ai são só uns exemplos simples.
-
Tenho um banco, que é usado tanto por um site, quanto por uma aplicação. Gostaria de saber se é possível dar prioridade de acesso ao banco para a aplicação, pois as vezes, quando eu faço alguma coisa diferente no site acaba que o mysql fica processando as querys do site e negue acesso a aplicação, que dá timeout e precisa ser reiniciada. Supondo por exemplo que eu tenha um phpmyadmin instalado em meu site e execute um select que vá sobrecarregar o banco direto no phpmyadmin. Gostaria que mesmo executando essa super lenta query, o banco parasse de processa-la para atender as solicitações da aplicação, e retomasse o trabalho quando inativo. Estava vendo esses esquemas de cluster. Tenho mais de um servidor dedicado então talvez eu possa aproveitar e fazer algo, e não sei qual seria a melhor opção e se adiantaria para esse caso, então se alguém puder dar uma luz eu agradeceria muito. :blink:
-
Tenho uma tabela em meu banco de dados, que faz a representação dos dados de um ranking de jogadores em um joguinho bem simples. Os dados são guardados no formato: CREATE TABLE IF NOT EXISTS `ranking` ( `id` int(11) NOT NULL auto_increment, `name` varchar(30) NOT NULL, `last_kill` varchar(30) NOT NULL, `timestamp` int(255) NOT NULL, PRIMARY KEY (`id`), KEY `name` (`name`), KEY `last_kill` (`last_kill`), KEY `timestamp` (`timestamp`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2087147; Todas as vezes que um jogador mata outro, é gravado o jogador que matou(name), o que morreu(last_kill) e o timestamp. Para calcular os pontos do jogador, eu preciso calcular quantas vezes ele matou, e depois quantas vezes ele morreu, e diminuir o segundo do primeiro. Para fazer isso, eu preciso agrupar pelo "name", que apesar do nome é um numero e fazer um count. E fazer a mesma coisa com o last_kill com o id desse jogador. Estou atualmente usando duas views diferentes para consultar o ranking semanal e mensal(Elas pegam os registros de uma semana pra frente e um mes pra frente respectivamente). Eu faço joins com os dados desses views e de outra tabela, e mesmo assim está sobrecarregando o servidor. Estou executando essas querys a cada 15 minutos pelo cronjob e gerando uma pagina em html simples com php, para que os usuários não executem todas as vezes que entrarem no site, mas mesmo assim, dá pra notar uma travada no servidor a cada 15 minutos. Segue a baixo o export das views do ranking semanal. A primeira faz a tabela "id do jogador -> quantidade de pessoas que matou" e a segunda "id do jogador -> quantidade de vezes que morreu" CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `ranking_matou_kill` AS select `a`.`name` AS `char_id`,count(`a`.`name`) AS `points` from `ranking` `a` where (`a`.`timestamp` > (unix_timestamp() - (((60 * 60) * 24) * 7))) group by `a`.`name` order by count(`a`.`name`) desc; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `ranking_morreu_kill` AS select `a`.`last_kill` AS `char_id`,count(`a`.`last_kill`) AS `points` from `ranking` `a` where (`a`.`timestamp` > (unix_timestamp() - (((60 * 60) * 24) * 7))) group by `a`.`last_kill` order by count(`a`.`last_kill`) desc; E o codigo que puxa os dados a cada 15 minutos: SELECT c.name, ma.points as kills, mo.points as deaths, ma.points/mo.points as ratio, ma.points-mo.points as resultado FROM `char` c INNER JOIN ranking_matou_kill_month ma ON ma.char_id=c.char_id INNER JOIN ranking_morreu_kill_month mo ON mo.char_id=c.char_id ORDER BY resultado DESC LIMIT 0,100 Um amigo deu umas dicas, inclusive essa de usar as views, mas acho que não é suficiente ainda, precisava de alguém com mais experiencia. Essa tabela tem atualmente 117mb, e está com dois milhoes de registros, e a previsão é que cresça bastante. Já agradeço a paciencia de quem quer que leia, mesmo que não responda nada e antecipadamente de quem tentar ajudar.