我刚刚设置了一台主服务器和一台从服务器,但不能正常工作。
在我的网站上,我连接到从服务器,我插入一些行,但他们不出现在主,反之亦然。什么是错的?
这就是我所做的:
Master: -> /etc/mysql/my.cnf [mysqld] log-bin = mysql-master-bin server-id=1 # bind-address = 127.0.0.1 binlog-do-db = test_db Slave: -> /etc/mysql/my.cnf [mysqld] log-bin = mysql-slave-bin server-id=2 # bind-address = 127.0.0.1 replicate-do-db = test_db Slave: terminal 0 > mysql> STOP SLAVE; // and drop tables Master: terminal 1 > mysql> CREATE USER 'repl_slave'@'slave_ip' IDENTIFIED BY 'repl_pass'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_slave'@'slave_ip'; mysql> FLUSH PRIVILEGES; mysql> FLUSH TABLES WITH READ LOCK; -- leave terminal open terminal 2 > shell> mysqldump -u root -pPASSWORD test_db --lock-all-tables > dump.sql mysql> SHOW MASTER STATUS; Slave: terminal 3 > shell> mysql -u root -pPASSWORD test_db < dump.sql terminal 0 > mysql> CHANGE MASTER TO mysql> MASTER_HOST='master_ip', mysql> MASTER_USER='repl_slave', mysql> MASTER_PASSWORD='repl_pass', mysql> MASTER_PORT=3306, mysql> MASTER_LOG_FILE='mysql-master-bin.000003', // terminal 2 > SHOW MASTER STATUS mysql> MASTER_LOG_POS=4, // terminal 2 > SHOW MASTER STATUS mysql> MASTER_CONNECT_RETRY=10; mysql> START SLAVE; mysql> SHOW SLAVE STATUS;
这是奴隶的地位:
Array ( [Slave_IO_State] => Waiting for master to send event [Master_Host] => xx.xx.xx.xx [Master_User] => repl_slave [Master_Port] => 3306 [Connect_Retry] => 10 [Master_Log_File] => mysql-master-bin.000003 [Read_Master_Log_Pos] => 106 [Relay_Log_File] => mysqld-relay-bin.000002 [Relay_Log_Pos] => 258 [Relay_Master_Log_File] => mysql-master-bin.000003 [Slave_IO_Running] => Yes [Slave_SQL_Running] => Yes [Replicate_Do_DB] => test_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] => 414 [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 [Master_SSL_Verify_Server_Cert] => No [Last_IO_Errno] => 0 [Last_IO_Error] => [Last_SQL_Errno] => 0 [Last_SQL_Error] => )
根据您的从属状态,复制启动并正常运行。 什么可能被打破是你的期望。 MySQL复制是从主机到从机的单向复制,无需validation从机的一致性。 由第三方在从机上更改的行不会被复制回主机,但会明显影响从机数据的一致性。
在大多数情况下,您不会注意到从站上已更改的数据行,而无需执行其他手动检查 – 请查看Percona工具包 (以前称为Maatkit)的工具来完成此任务。
你也应该从你的configuration中删除replicate_do_db,因为这个过滤选项可能不是你所想的那样 。 除此之外,它应该开箱即用。 如果没有,请发布用于validation数据复制的SQL语句。
在我的网站上,我连接到从服务器,我插入一些行,但他们不出现在主…
这只会发生在多主复制。 在这种设置中, 两台服务器都是主设备。 这很复杂,容易犯错。 你不会想第一次做多主人。
所以,在正常的master – > slave设置下,不能将行插入从机。 奴隶是只读的你。 新数据进入从机的唯一方法是通过从主机复制。
…反之亦然。
如果您在主服务器上插入了行,并且他们没有出现在从服务器上,则会出现问题。 从属地位对我来说看起来很好,没有任何延迟。 我没有看到任何会导致它不能工作,除非插入到test_db其他数据库。