MySQL主从服务器配置
时间:2006-12-04 来源:wutao8818
MySQL中的复制
http://dev.mysql.com/doc/refman/5.1/zh/replication.html如果你想要设置链式复制服务器,从服务器本身也可以充当主服务器。
必须在主服务器上启用二进制日志
将主服务器的数据拷贝到从服务器的一个途径是使用LOAD DATA FROM MASTER语句
LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的主服务器上工作
如果主服务器失败,或者从服务器失去与主服务器之间的连接,从服务器保持定期尝试连接,直到它能够继续帧听更新 --master-connect-retry选项控制重试间隔。 默认为60秒
--------
MySQL使用3个线程来执行复制功能
1.从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句
2.主服务器创建一个线程将二进制日志中的内容发送到从服务器(该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程)
从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志
3.第3个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新
有多个从服务器的主服务器创建为每个当前连接的从服务器创建一个线程;每个从服务器有自己的I/O和SQL线程。
SHOW PROCESSLIST语句可以提供在主服务器上和从服务器上发生的关于复制的信息。
在从服务器上,SHOW PROCESSLIST的输出
请注意Time列的值可以显示从服务器比主服务器滞后多长时间
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 10
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 11
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Has read all relay log; waiting for the slave I/O
thread to update it
Info: NULL
主服务器的Binlog Dump线程的State列的最常见的状态
· Sending binlog event to slave 这说明复制没有在运行—即,目前没有连接任何从服务器
· Finished reading one binlog; switching to next binlog 线程已经读完二进制日志文件并且正打开下一个要发送到从服务器的日志文件
· Has sent all binlog to slave; waiting for binlog to be updated
线程已经从二进制日志读取所有主要的更新并已经发送到了从服务器。线程现在正空闲,等待由主服务器上新的更新导致的出现在二进制日志中的新事件
· Waiting to finalize termination 线程停止时发生的一个很简单的状态。
-------------------------从I/O线程状态
从服务器的I/O线程的State列的最常见的状态。该状态也出现在Slave_IO_State列,由SHOW SLAVE
STATUS显示
----------------
中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序列号。用连续序列号来创建连续中继日志文件,从000001开始
默认情况,在从服务器的数据目录中创建这些文件。可以用--relay-log和--relay-log-index服务器选项覆盖 默认文件名
中继日志与二进制日志的格式相同,并且可以用mysqlbinlog读取
相关阅读 更多 +