开源中文网

您的位置: 首页 > 数据库应用 > MySQL > 正文

mysql主从服务器同步心得体会

来源: 网络整理  作者: 佚名

原来看过MYSQL同步数据的实现,可是自己还没有动过手,今天没什么事就玩一玩,正好在旁边有另一台空电脑,都在同一个路由器下。哈哈,正好。 

不过首先在找配置文件上就把我卡了好久,由于我用的是xampp安装包,在xampp/mysql/bin目录下看始终没有找到my.cnf,在c:windows目录下也没有发现, 



如上图,看到的只有一个”my”的快速拨号的东西,又不是文件,怎么都打不开。后来找了好久才在网上看到说遇到这种情况需要先打开editplus,然后再从editplus里面打开这个文件,果然。。。 

配置就不详说了,网上有很多,我原来也转过一篇。 

今天主要是讲一下配置主从服务器需要注意的地方: 

首先需要做主从的数据库必须一模一样,如果你的数据库已经运行过一段时间,建议你先删除所有的二进制日志文件,包括索引xxx.index这个文件,否则重启mysql会出错。 

从服务器上已经删除掉所有的二进制日志文件,当然包括一个master.info这个文件。这个文件是用来记录主服务器上过来的日志文件和记录位置的。如果你不删除它,它还会按照之前的记录来做,所以会出问题,我在这里浪费了很多时间了。 

主服务器诊断: 

show processlist;显示所有的进程。 

show master status;显示主服务器的日志文件和指针位置。 

mysql> show master status; 
+——————+———-+—————-+——————+ 
File Position Binlog_Do_DB Binlog_Ignore_DB 
+——————+———-+—————-+——————+ 
mysql-bin.000001 603 videoCommunity 
+——————+———-+—————-+——————+ 
1 row in set (0.00 sec) 

mysql> show master status\G 
*************************** 1. row *************************** 
File: mysql-bin.000001 
Position: 603 
Binlog_Do_DB: videoCommunity 
Binlog_Ignore_DB: 
1 row in set (0.00 sec) 

如上图,mysql-bin.000001是日志记录文件,603是指针位置。 

从服务器(slave)上诊断: 

mysql> show slave status\G 
*************************** 1. row *************************** 
Slave_IO_State: Waiting for master to send event 
Master_Host: master1 
Master_User: root 
Master_Port: 3306 
Connect_Retry: 60 
Master_Log_File: mysql-bin.000001 
Read_Master_Log_Pos: 603 
Relay_Log_File: master2-relay-bin.000053 
Relay_Log_Pos: 740 
Relay_Master_Log_File: mysql-bin.000001 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
Replicate_Do_DB: videoCommunity 
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: 603 
Relay_Log_Space: 740 
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) 

确认以上信息和主服务器是否一致。 

另外,上面每个参数的意义如下: 

SHOW SLAVE STATUS 返回以下信息: 

Slave_IO_State  
SHOW PROCESSLIST 输出的 State 字段的拷贝。从这里可以看出是否线程正在连接主服务器,是否正在等待来自于主服务器的事件,是否正在重新连接主服务器等信息。所有可能出现的状态管理员手册中的复制实现细节列出。这些信息是非常重要的,比如线程虽然运行但是没有成功的连接主服务器,只有这个字段能告诉用户的连接问题。由于 SQL 线程简单,所以它的状态没有拷贝。如果它运行,就没有问题,如果没有运行,可以在 Last_Error 域中找到错误(下面描述)。 

Master_Host  
目前主服务器主机。 

Master_User  
连接主服务器的当前用户。 

Master_Port  
当前的主服务器端口。 

Connect_Retry  
选项 –master-connect-retry 的当前值。 

Master_Log_File  
I/O 线程当前读取的主服务器二进制日志文件的名字。 

Read_Master_Log_Pos  
I/O 线程从当前的主服务器二进制日志中读取的位置起点。 

Relay_Log_File  
SQL 线程当前读取并执行的中继日志文件的名字。 

Relay_Log_Pos  
SQL 线程当前从中继日志中读取执行的位置起点。 

Relay_Master_Log_File  
主服务器中二进制日志文件的名字,此文件中包含了最近一次 SQL 线程执行的事件。 

Slave_IO_Running  
I/O 线程是否启动。 

Slave_SQL_Running  
SQL 线程是否启动。 

Replicate_Do_DB, Replicate_Ignore_DB  
如果有的话,就是以选项 –replicate-do-db 和 –replicate-ignore-db 指明的数据库列表。 

Replicate_Do_Table, Replicate_Ignore_Table, Replicate_Wild_Do_Table, Replicate_Wild_Ignore_Table  
如果有的话,是以选项 –replicate-do-table, –replicate-ignore-table, –replicate-wild-do-table, and –replicate-wild-ignore_table 指明的表的列表。 

Last_Errno, Last_Error  
最近执行的查询返回的错误号和错误信息。错误号是 0 且空的信息表示没有错误。如果 Last_Error 值不空,在从服务器的错误日志中也会出现错误信息。 

Tags:主从 心得体会 服务器
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明