2014-02-22 4 views
-1

Мои данные реплицируются из основной базы данных, когда я делаю это вручную, но когда он вставлен из PHP в основную базу данных, он не реплицируется в рабочую базу данных.Репликация Master-Slave MYSQL не работает с PHP

Мой Мастер базы данных - my.cnf

Мой раб базы данных - my.cnf

server-id  = 2 
log_bin   = /var/log/mysql/mysql-bin.log 
relay-log    = /var/log/mysql/mysql-relay-bin.log 
expire_logs_days = 10 
max_binlog_size   = 100M 
binlog_do_db  = database 
replicate_do_db  = database 
slave_net_timeout = 30 
sync_master_info = 1 
sync_relay_log = 1 
sync_relay_log_info = 1 

Мои настройки таблицы базы данных

`id` int(11) NOT NULL AUTO_INCREMENT, 
    `tmdbid` varchar(9) NOT NULL, 
    `poster` varchar(256) NOT NULL, 
    `title` varchar(128) NOT NULL, 
    `tagline` varchar(128) NOT NULL, 
    `plot` text NOT NULL, 
    `year` year(4) NOT NULL, 
    `release` varchar(18) NOT NULL, 
    `runtime` char(6) NOT NULL, 
    `genres` varchar(256) NOT NULL, 
    `actors` text NOT NULL, 
    `votes` varchar(5) NOT NULL, 
    `mpaa` varchar(6) NOT NULL, 
    `file2` text NOT NULL, 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `link` text NOT NULL, 
    `file` text NOT NULL, 
    `link1` text, 
    `link2` text, 
    `uploaded` text, 
    `been_sent_to_folder` text, 
    `poster_backup` varchar(256) NOT NULL, 
    `saved_poster_name` text NOT NULL, 
    `poster140x100` varchar(256) NOT NULL, 
    `poster65x95` varchar(256) NOT NULL, 
    `poster_orig` varchar(256) NOT NULL, 
    PRIMARY KEY (`tmdbid`), 
    KEY `id` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; 

PHP для вставки в БД

mysql_query("INSERT INTO `database`.`tmdb` (`id`,`tmdbid`,`poster`,`title`,`tagline`,`plot`,`year`,`release`,`runtime`,`genres`,`actors`,`votes`,`mpaa`,`file2`,`link`,`file`,`poster_backup`,`saved_poster_name`,`poster140x100`,`poster65x95`,`poster_orig`) VALUES (NULL,'".$tmdbid."','".$poster."','".$title."','".$tagline."','".$plot."','".$year."','".$imrelease."','".$runtime."','".$genres."','".$actors."','".$votes."','".$mpaa."','".$file2."','".$link."','".$file."','".$poster_backup."','".$saved_poster_name."','".$finalthumb."','".$imgfinal."','".$imgfinal225."');")... 

ответ

1

Offtopic здесь, но ответить на него: binlog-do-db, как правило, плохое решение в сочетании с ведением журнала отчетности на основе:

Only those statements are written to the binary log where the default database (that is, the one selected by USE) is db_name. To specify more than one database, use this option multiple times, once for each database; however, doing so does not cause cross-database statements such as UPDATE some_db.some_table SET foo='bar' to be logged while a different database (or no database) is selected.

Перейти на ROW основе регистрации или просто реплицировать все базы данных, я обычно предпочитаю их.

+0

Как насчет 'replicate_do_db'? – iC0NiC

+0

[точно такая же проблема] (http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-do-db). Как сказано, либо на основе ROW, либо во всех базах данных. Если это проблема с размером хранилища для другой базы данных, вы можете сделать их таблицами «BLACKHOLE»: этот движок не хранит никаких данных, но репликация будет работать (даже бинлог для дальнейших подчиненных). – Wrikken

Смежные вопросы